This commit is contained in:
dy
2025-08-11 10:11:06 +08:00
78 changed files with 11338 additions and 1590 deletions

View File

@@ -6,9 +6,6 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import org.dromara.property.service.IInspectionTaskDetailService;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -20,14 +17,17 @@ 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.InspectionTaskDetailVo;
import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.service.IInspectionTaskDetailService;
import org.dromara.common.mybatis.core.page.TableDataInfo;
/**
* 巡检明细
* 前端访问路由地址为:/system/taskDetail
* 前端访问路由地址为:/property/taskDetail
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Validated
@RequiredArgsConstructor
@@ -40,7 +40,7 @@ public class InspectionTaskDetailController extends BaseController {
/**
* 查询巡检明细列表
*/
//@SaCheckPermission("system:taskDetail:list")
@SaCheckPermission("property:taskDetail:list")
@GetMapping("/list")
public TableDataInfo<InspectionTaskDetailVo> list(InspectionTaskDetailBo bo, PageQuery pageQuery) {
return inspectionTaskDetailService.queryPageList(bo, pageQuery);
@@ -49,7 +49,7 @@ public class InspectionTaskDetailController extends BaseController {
/**
* 导出巡检明细列表
*/
@SaCheckPermission("system:taskDetail:export")
@SaCheckPermission("property:taskDetail:export")
@Log(title = "巡检明细", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(InspectionTaskDetailBo bo, HttpServletResponse response) {
@@ -62,7 +62,7 @@ public class InspectionTaskDetailController extends BaseController {
*
* @param id 主键
*/
@SaCheckPermission("system:taskDetail:query")
@SaCheckPermission("property:taskDetail:query")
@GetMapping("/{id}")
public R<InspectionTaskDetailVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable("id") Long id) {
@@ -72,7 +72,7 @@ public class InspectionTaskDetailController extends BaseController {
/**
* 新增巡检明细
*/
@SaCheckPermission("system:taskDetail:add")
@SaCheckPermission("property:taskDetail:add")
@Log(title = "巡检明细", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
@@ -83,7 +83,7 @@ public class InspectionTaskDetailController extends BaseController {
/**
* 修改巡检明细
*/
@SaCheckPermission("system:taskDetail:edit")
@SaCheckPermission("property:taskDetail:edit")
@Log(title = "巡检明细", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
@@ -96,7 +96,7 @@ public class InspectionTaskDetailController extends BaseController {
*
* @param ids 主键串
*/
@SaCheckPermission("system:taskDetail:remove")
@SaCheckPermission("property:taskDetail:remove")
@Log(title = "巡检明细", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")

View File

@@ -107,7 +107,6 @@ public class ServiceWorkOrdersTypeController extends BaseController {
/**
* 查询【工单类型】树结构
*/
@SaCheckPermission("system:workOrdersType:list")
@GetMapping("/typeTree")
public R<List<ServiceWorkOrdersTypeVo>> typeTree() {
return R.ok(serviceWorkOrdersTypeService.typeTree());
@@ -119,7 +118,6 @@ public class ServiceWorkOrdersTypeController extends BaseController {
* @param bo 工单类型
* @return 工单类型列表
*/
@SaCheckPermission("system:workOrdersType:list")
@GetMapping("/queryList")
public R<List<ServiceWorkOrdersTypeVo>> queryList(ServiceWorkOrdersTypeBo bo) {
return R.ok(serviceWorkOrdersTypeService.queryList(bo));

View File

@@ -1,5 +1,6 @@
package org.dromara.property.controller;
import java.time.Duration;
import java.util.List;
import java.util.UUID;
@@ -11,6 +12,7 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.apache.dubbo.config.annotation.DubboReference;
import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.property.domain.bo.QrCodeInfo;
import org.dromara.resource.api.RemoteMessageService;
@@ -77,8 +79,7 @@ public class TbVisitorManagementController extends BaseController {
String s = remoteConfigService.selectQrTimeOut();
int i = Integer.parseInt(s);
UUID value = UUID.randomUUID();
RedisUtils.setCacheObject("Qrcode"+value, qrCodeInfo);
RedisUtils.expire("Qrcode", i);
RedisUtils.setCacheObject(GlobalConstants.CAPTCHA_CODE_KEY+"Qrcode"+value, qrCodeInfo, Duration.ofSeconds(i));
return R.ok(value.toString());
}
@@ -87,9 +88,9 @@ public class TbVisitorManagementController extends BaseController {
* @param qrcode
* @return
*/
@PostMapping("/useqr")
@GetMapping("/useqr")
public R<String> useqr(String qrcode) {
QrCodeInfo qrCodeInfo = RedisUtils.getCacheObject("Qrcode" + qrcode);
QrCodeInfo qrCodeInfo = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + qrcode);
if (qrCodeInfo==null) {
return R.fail("二维码已过期");
}
@@ -127,12 +128,12 @@ public class TbVisitorManagementController extends BaseController {
/**
* 小程序新增访客管理
*/
@SaCheckPermission("property:visitorManagement:add")
// @SaCheckPermission("property:visitorManagement:add")
@Log(title = "访客管理", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/add")
public R<Void> add(@Validated(AddGroup.class) @RequestBody TbVisitorManagementBo bo) {
QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + bo.getQrCodeId());
QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId());
if (info==null){
return R.fail("请确认Qr码有效");
}

View File

@@ -0,0 +1,41 @@
package org.dromara.property.controller.mobile;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
import org.dromara.property.service.IServiceWorkOrdersService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 【业务管理-工单处理】
*
* @author mocheng
* @date 2025-07-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/mobile/workOrders")
public class MServiceWorkOrdersController extends BaseController {
private final IServiceWorkOrdersService serviceWorkOrdersService;
/**
* 小程序新增【工单处理】
*/
@Log(title = "【小程序新增工单处理】", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody MServiceWorkOrdersBo bo) {
return toAjax(serviceWorkOrdersService.insertMServiceWorkOrdersBo(bo));
}
}

View File

@@ -60,6 +60,14 @@ public class CleanOrder extends TenantEntity {
* 保洁类型
*/
private String type;
/**
* 签到方式(1现场拍照2摄像头签到)
*/
private String signType;
/**
* 签到图片
*/
private String signImgUrl;
/**
* 评价
*/
@@ -69,7 +77,7 @@ public class CleanOrder extends TenantEntity {
*/
private String serviceEvaluaText;
/**
* 图片
* 评价图片
*/
private String imgUrl;
/**

View File

@@ -1,5 +1,7 @@
package org.dromara.property.domain;
import jakarta.validation.constraints.NotNull;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@@ -55,9 +57,10 @@ public class InspectionRoutePoint extends TenantEntity {
private String remark;
/**
* 搜索值
* 排序
*/
private String searchValue;
@NotNull(message = "排序不能为空", groups = { EditGroup.class })
private Integer sort;
}

View File

@@ -4,8 +4,10 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.translation.constant.TransConstant;
import java.io.Serial;
@@ -13,7 +15,7 @@ import java.io.Serial;
* 巡检明细对象 inspection_task_detail
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -55,20 +57,60 @@ public class InspectionTaskDetail extends TenantEntity {
private String patrolType;
/**
* 签到类型
* 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)
*/
private String signType;
/**
* 实际巡检时间
*/
private Date actualInspectionTime;
/**
* 实际签到状态(1已签到2.未签到)
*/
private String actualSignState;
/**
* 巡检状态(0未完成,1已完成)
*/
private String inspectionState;
/**
* 巡检
* 巡检
*/
private String inspectionImage;
/**
* 计划巡检人
*/
private String planInspectionPerson;
/**
* 实际巡检人
*/
private String actualInspectionPerson;
/**
* 任务状态
*/
private String taskStatus;
/**
* 巡检结果
*/
private String inspectionResults;
/**
* 巡检描述
*/
private String inspectionDesc;
/**
* 巡检位置
*/
private String inspectionLocation;
/**
* 实际巡检时间
*/
@@ -89,4 +131,10 @@ public class InspectionTaskDetail extends TenantEntity {
*/
private Date pointEndTime;
/**
* 搜索值
*/
private String searchValue;
}

View File

@@ -108,6 +108,12 @@ public class ResidentPerson extends TenantEntity {
* e8平台id
*/
private Long eEightId;
/**
* 人员标签类型
*/
private Integer rosterType;
/**
* 创建人id
*/

View File

@@ -40,7 +40,7 @@ public class ServiceWorkOrders extends TenantEntity {
*/
private String orderName;
/**
* 权重
* 权重(1一般2紧急3危急)
*/
private String processingWeight;
/**
@@ -67,11 +67,11 @@ public class ServiceWorkOrders extends TenantEntity {
/**
* 处理人姓名
*/
private long handler;
private Long handler;
/**
* 抄送人
*/
private long ccPeople;
private Long ccPeople;
/**
* 地址
@@ -105,6 +105,10 @@ public class ServiceWorkOrders extends TenantEntity {
* 工单图片
*/
private String orderImgUrl;
/**
* 上报类型
*/
private String reportingType;
/**
* 备注
*/

View File

@@ -43,6 +43,10 @@ public class TbVisitorManagement extends TenantEntity {
* 访客电话
*/
private String visitorPhone;
/**
* 身份证/军
*/
private String idCard;
/**
* 拜访事由

View File

@@ -49,6 +49,14 @@ public class CleanOrderBo extends BaseEntity {
*/
@NotBlank(message = "保洁类型不能为空", groups = { AddGroup.class, EditGroup.class })
private String type;
/**
* 签到方式(1现场拍照2摄像头签到)
*/
private String signType;
/**
* 签到图片
*/
private String signImgUrl;
/**
* 保洁id
*/

View File

@@ -33,6 +33,11 @@ public class InspectionRoutePointBo extends BaseEntity {
*/
// @NotNull(message = "巡检路线id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long routeId;
/**
* 排序
*/
@NotNull(message = "排序不能为空", groups = { EditGroup.class })
private Integer sort;
/**
* 巡检点id

View File

@@ -1,5 +1,6 @@
package org.dromara.property.domain.bo;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
@@ -7,14 +8,16 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.translation.constant.TransConstant;
/**
* 巡检明细业务对象 inspection_task_detail
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Data
@EqualsAndHashCode(callSuper = true)
@@ -55,20 +58,60 @@ public class InspectionTaskDetailBo extends BaseEntity {
private String patrolType;
/**
* 签到类型
* 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)
*/
private String signType;
/**
* 实际巡检时间
*/
private Date actualInspectionTime;
/**
* 实际签到状态(1已签到2.未签到)
*/
private String actualSignState;
/**
* 巡检状态(0未完成,1已完成)
*/
private String inspectionState;
/**
* 巡检
* 巡检
*/
private String inspectionImage;
/**
* 计划巡检人
*/
private String planInspectionPerson;
/**
* 实际巡检人
*/
private String actualInspectionPerson;
/**
* 任务状态
*/
private String taskStatus;
/**
* 巡检结果
*/
private String inspectionResults;
/**
* 巡检描述
*/
private String inspectionDesc;
/**
* 巡检位置
*/
private String inspectionLocation;
/**
* 实际巡检时间
*/

View File

@@ -121,5 +121,10 @@ public class ResidentPersonBo extends BaseEntity {
*/
private String remark;
/**
* 人员标签类型
*/
private Integer rosterType = 2;
}

View File

@@ -3,6 +3,7 @@ package org.dromara.property.domain.bo;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
@@ -26,7 +27,7 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
@NotBlank(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
@@ -37,7 +38,7 @@ public class ServiceWorkOrdersBo extends BaseEntity {
/**
* 工单名称
*/
@NotNull(message = "工单名称不能为空", groups = { EditGroup.class })
@NotBlank(message = "工单名称不能为空", groups = { EditGroup.class })
private String orderName;
/**
* 权重
@@ -49,6 +50,11 @@ public class ServiceWorkOrdersBo extends BaseEntity {
*/
@NotNull(message = "工单类型不能为空", groups = { EditGroup.class })
private Long type;
/**
* 上报类型
*/
@NotBlank(message = "上报类型不能为空", groups = { EditGroup.class })
private String reportingType;
/**
* 状态
@@ -101,6 +107,10 @@ public class ServiceWorkOrdersBo extends BaseEntity {
* 图片
*/
private String imgUrl;
/**
* 工单图片
*/
private String orderImgUrl;
/**
* 备注
*/

View File

@@ -26,7 +26,7 @@ public class TbVisitorManagementBo extends BaseEntity {
* qr码id
*/
// @NotNull(message = "qr码id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long qrCodeId;
private String qrCodeId;
/**
* id
@@ -51,7 +51,10 @@ public class TbVisitorManagementBo extends BaseEntity {
*/
@NotBlank(message = "访客电话不能为空", groups = { AddGroup.class, EditGroup.class })
private String visitorPhone;
/**
* 身份证/军
*/
private String idCard;
/**
* 拜访事由
*/

View File

@@ -0,0 +1,113 @@
package org.dromara.property.domain.bo.mobile;
import cn.idev.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.property.domain.ServiceWorkOrders;
import java.util.Date;
/**
* 【工单处理】业务对象 小程序端新增工单
*
* @author mocheng
* @date 2025-07-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = ServiceWorkOrders.class, reverseConvertGenerate = false)
public class MServiceWorkOrdersBo extends BaseEntity {
/**
* id
*/
@NotNull(message = "id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 工单编号
*/
private String orderNo;
/**
* 权重
*/
@ExcelProperty(value = "权重")
private String processingWeight;
/**
* 工单类型
*/
@NotNull(message = "工单类型不能为空", groups = { EditGroup.class })
private Long type;
/**
* 状态
*/
private String status;
/**
* 派单时间
*/
private Date dispatchTime;
/**
* 发起人姓名
*/
private String initiatorName;
/**
* 处理人姓名
*/
private Long handler;
/**
* 地址
*/
@NotNull(message = "地址不能为空", groups = { EditGroup.class })
private String location;
/**
* 计划完成时间
*/
//@NotNull(message = "计划完成时间不能为空", groups = { EditGroup.class })
private Date planCompleTime;
/**
* 完成时间
*/
private Date compleTime;
/**
* 评价
*/
private Integer serviceEvalua;
/**
* 评价文本
*/
private String serviceEvaluaText;
/**
* 图片
*/
private String imgUrl;
/**
* 工单图片
*/
private String orderImgUrl;
/**
* 备注
*/
private String remark;
/**
* 是否超时
*/
private String isTimeOut;
}

View File

@@ -55,6 +55,14 @@ public class CleanOrderVo implements Serializable {
* 保洁类型
*/
private String type;
/**
* 签到方式(1现场拍照2摄像头签到)
*/
private String signType;
/**
* 签到图片
*/
private String signImgUrl;
/**
* 评价
*/

View File

@@ -2,6 +2,8 @@ package org.dromara.property.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotNull;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.property.domain.InspectionRoutePoint;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
@@ -76,10 +78,10 @@ public class InspectionRoutePointVo implements Serializable {
private String remark;
/**
* 搜索值
* 排序
*/
@ExcelProperty(value = "搜索值")
private String searchValue;
@NotNull(message = "排序不能为空", groups = { EditGroup.class })
private Integer sort;
}

View File

@@ -1,10 +1,16 @@
package org.dromara.property.domain.vo;
import org.dromara.common.translation.annotation.Translation;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.common.translation.constant.TransConstant;
import org.dromara.property.domain.InspectionTaskDetail;
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 org.dromara.property.domain.InspectionTaskDetail;
import java.io.Serial;
import java.io.Serializable;
@@ -16,7 +22,7 @@ import java.util.Date;
* 巡检明细视图对象 inspection_task_detail
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Data
@ExcelIgnoreUnannotated
@@ -63,11 +69,23 @@ public class InspectionTaskDetailVo implements Serializable {
private String patrolType;
/**
* 签到类型
* 签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)
*/
@ExcelProperty(value = "签到类型")
@ExcelProperty(value = "签到类型(1.现场拍照、2.摄像头签到、3.现场扫码)")
private String signType;
/**
* 实际巡检时间
*/
@ExcelProperty(value = "实际巡检时间")
private Date actualInspectionTime;
/**
* 实际签到状态(1已签到2.未签到)
*/
@ExcelProperty(value = "实际签到状态(1已签到2.未签到)")
private String actualSignState;
/**
* 巡检状态(0未完成,1已完成)
*/
@@ -75,11 +93,52 @@ public class InspectionTaskDetailVo implements Serializable {
private String inspectionState;
/**
* 巡检
* 巡检
*/
@ExcelProperty(value = "巡检")
@ExcelProperty(value = "巡检")
private String inspectionImage;
/**
* 巡检图片Url
*/
@Translation(type = TransConstant.OSS_ID_TO_URL, mapper = "inspectionImage")
private String inspectionImageUrl;
/**
* 计划巡检人
*/
@ExcelProperty(value = "计划巡检人")
private String planInspectionPerson;
/**
* 实际巡检人
*/
@ExcelProperty(value = "实际巡检人")
private String actualInspectionPerson;
/**
* 任务状态
*/
@ExcelProperty(value = "任务状态")
private String taskStatus;
/**
* 巡检结果
*/
@ExcelProperty(value = "巡检结果")
private String inspectionResults;
/**
* 巡检描述
*/
@ExcelProperty(value = "巡检描述")
private String inspectionDesc;
/**
* 巡检位置
*/
@ExcelProperty(value = "巡检位置")
private String inspectionLocation;
/**
* 实际巡检时间
*/

View File

@@ -138,5 +138,10 @@ public class ResidentPersonVo implements Serializable {
*/
private String idCard;
/**
* 人员标签类型
*/
private Integer rosterType;
}

View File

@@ -48,6 +48,10 @@ public class ServiceWorkOrdersInfoVo implements Serializable {
*/
@ExcelProperty(value = "工单类型")
private Long type;
/**
* 上报类型
*/
private String reportingType;
/**
* 权重
*/

View File

@@ -54,6 +54,10 @@ public class ServiceWorkOrdersVo implements Serializable {
*/
@ExcelProperty(value = "工单类型")
private Long type;
/**
* 上报类型
*/
private String reportingType;
/**
* 工单类型名称
*/

View File

@@ -56,7 +56,10 @@ public class TbVisitorManagementVo implements Serializable {
*/
@ExcelProperty(value = "访客电话")
private String visitorPhone;
/**
* 身份证/军
*/
private String idCard;
/**
* 拜访事由
*/

View File

@@ -35,6 +35,7 @@ public class RemoteResidentPersonServiceImpl implements RemoteResidentPersonServ
remoteResidentPersonVo.setName(vo.getUserName());
remoteResidentPersonVo.setIdCard(vo.getIdCard());
remoteResidentPersonVo.setGender(vo.getGender());
remoteResidentPersonVo.setRosterType(vo.getRosterType());
remoteResidentPersonVo.setAuthGroupId(vo.getAuthGroupId());
remoteResidentPersonVo.setAuthBegDate(vo.getAuthBegDate());
remoteResidentPersonVo.setAuthEndDate(vo.getAuthEndDate());

View File

@@ -1,17 +1,15 @@
package org.dromara.property.mapper;
import org.apache.ibatis.annotations.Mapper;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 巡检明细Mapper接口
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Mapper
public interface InspectionTaskDetailMapper extends BaseMapperPlus<InspectionTaskDetail, InspectionTaskDetailVo> {
}

View File

@@ -1,9 +1,10 @@
package org.dromara.property.service;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import java.util.Collection;
import java.util.List;
@@ -12,7 +13,7 @@ import java.util.List;
* 巡检明细Service接口
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
public interface IInspectionTaskDetailService {

View File

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
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.ServiceWorkOrderAnalysisVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersInfoVo;
import org.dromara.property.domain.vo.ServiceWorkOrdersVo;
@@ -75,4 +76,15 @@ public interface IServiceWorkOrdersService {
*/
ServiceWorkOrderAnalysisVo counts();
//小程序端新增
/**
* 新增工单
* @param bo
* @return
*/
Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo);
}

View File

@@ -9,13 +9,12 @@ 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.dromara.property.domain.InspectionTaskDetail;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.InspectionTaskDetailBo;
import org.dromara.property.domain.vo.InspectionTaskDetailVo;
import org.dromara.property.domain.InspectionTaskDetail;
import org.dromara.property.mapper.InspectionTaskDetailMapper;
import org.dromara.property.service.IInspectionTaskDetailService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
@@ -25,7 +24,7 @@ import java.util.Collection;
* 巡检明细Service业务层处理
*
* @author mocheng
* @date 2025-07-15
* @date 2025-08-08
*/
@Slf4j
@RequiredArgsConstructor
@@ -81,7 +80,16 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
lqw.eq(bo.getPointId() != null, InspectionTaskDetail::getPointId, bo.getPointId());
lqw.eq(StringUtils.isNotBlank(bo.getPatrolType()), InspectionTaskDetail::getPatrolType, bo.getPatrolType());
lqw.eq(StringUtils.isNotBlank(bo.getSignType()), InspectionTaskDetail::getSignType, bo.getSignType());
lqw.eq(bo.getActualInspectionTime() != null, InspectionTaskDetail::getActualInspectionTime, bo.getActualInspectionTime());
lqw.eq(StringUtils.isNotBlank(bo.getActualSignState()), InspectionTaskDetail::getActualSignState, bo.getActualSignState());
lqw.eq(StringUtils.isNotBlank(bo.getInspectionState()), InspectionTaskDetail::getInspectionState, bo.getInspectionState());
lqw.eq(StringUtils.isNotBlank(bo.getInspectionImage()), InspectionTaskDetail::getInspectionImage, bo.getInspectionImage());
lqw.eq(StringUtils.isNotBlank(bo.getPlanInspectionPerson()), InspectionTaskDetail::getPlanInspectionPerson, bo.getPlanInspectionPerson());
lqw.eq(StringUtils.isNotBlank(bo.getActualInspectionPerson()), InspectionTaskDetail::getActualInspectionPerson, bo.getActualInspectionPerson());
lqw.eq(StringUtils.isNotBlank(bo.getTaskStatus()), InspectionTaskDetail::getTaskStatus, bo.getTaskStatus());
lqw.eq(StringUtils.isNotBlank(bo.getInspectionResults()), InspectionTaskDetail::getInspectionResults, bo.getInspectionResults());
lqw.eq(StringUtils.isNotBlank(bo.getInspectionDesc()), InspectionTaskDetail::getInspectionDesc, bo.getInspectionDesc());
lqw.eq(StringUtils.isNotBlank(bo.getInspectionLocation()), InspectionTaskDetail::getInspectionLocation, bo.getInspectionLocation());
lqw.eq(bo.getInspectionTime() != null, InspectionTaskDetail::getInspectionTime, bo.getInspectionTime());
lqw.eq(bo.getPointStartTime() != null, InspectionTaskDetail::getPointStartTime, bo.getPointStartTime());
lqw.eq(bo.getPointEndTime() != null, InspectionTaskDetail::getPointEndTime, bo.getPointEndTime());
@@ -96,7 +104,6 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
* @return 是否新增成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertByBo(InspectionTaskDetailBo bo) {
InspectionTaskDetail add = MapstructUtils.convert(bo, InspectionTaskDetail.class);
validEntityBeforeSave(add);
@@ -114,7 +121,6 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
* @return 是否修改成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(InspectionTaskDetailBo bo) {
InspectionTaskDetail update = MapstructUtils.convert(bo, InspectionTaskDetail.class);
validEntityBeforeSave(update);
@@ -136,7 +142,6 @@ public class InspectionTaskDetailServiceImpl implements IInspectionTaskDetailSer
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验

View File

@@ -140,31 +140,26 @@ public class ResidentPersonServiceImpl implements IResidentPersonService {
ResidentPerson update = MapstructUtils.convert(bo, ResidentPerson.class);
assert update != null;
boolean flag;
// 人脸照片存在时,才同步修改授权
if (update.getAuthGroupId() != null && update.getAuthEndDate() != null && update.getImg() != null) {
ResidentPersonVo vo = queryById(update.getId());
Long e8Id = vo.getEEightId();
baseMapper.updateById(update);
// 显式移除e8id
LambdaUpdateWrapper<ResidentPerson> lqw = new LambdaUpdateWrapper<>();
lqw.eq(ResidentPerson::getId, update.getId())
.set(ResidentPerson::getEEightId, null);
flag = baseMapper.update(lqw) > 0;
boolean check = baseMapper.update(lqw) > 0;
if (flag && e8Id != null) {
if (check && e8Id != null) {
log.info("开始修改授权记录, {}", bo.getUserName());
// 先删除,定时任务增加
Boolean auth = remoteSisAuthService.deletePersonAuth(List.of(update.getId()), List.of(e8Id));
Assert.isTrue(auth, "修改授权记录失败!");
}
} else {
flag = baseMapper.updateById(update) > 0;
}
boolean flag = baseMapper.updateById(update) > 0;
Assert.isTrue(flag, "修改入驻员工失败!");
return flag;
}

View File

@@ -22,6 +22,7 @@ import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.domain.ServiceWorkOrdersRecord;
import org.dromara.property.domain.ServiceWorkOrdersType;
import org.dromara.property.domain.bo.ServiceWorkOrdersBo;
import org.dromara.property.domain.bo.mobile.MServiceWorkOrdersBo;
import org.dromara.property.domain.vo.*;
import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
@@ -51,7 +52,6 @@ import java.util.stream.Collectors;
public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
private final ServiceWorkOrdersMapper baseMapper;
private final ServiceWorkOrdersTypeMapper serviceWorkOrdersTypeMapper;
private final ServiceWorkOrdersTypeMapper typesMapper;
private final ResidentPersonMapper residentPersonMapper;
private final ServiceWorkOrdersRecordMapper workOrdersRecordMapper;
@@ -160,11 +160,19 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
}
private LambdaQueryWrapper<ServiceWorkOrders> buildQueryWrapper(ServiceWorkOrdersBo bo) {
//查询类型下子类型id
LambdaQueryWrapper<ServiceWorkOrdersType> OrdersTypeWrapper = new LambdaQueryWrapper<>();
OrdersTypeWrapper.eq(ServiceWorkOrdersType::getParentId,bo.getType());
List<ServiceWorkOrdersType> serviceWorkOrdersTypes = typesMapper.selectList(OrdersTypeWrapper);
List<Long> typeIds = serviceWorkOrdersTypes.stream()
.map(ServiceWorkOrdersType::getId)
.collect(Collectors.toList());
typeIds.add(bo.getType());
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<ServiceWorkOrders> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(ServiceWorkOrders::getId);
lqw.eq(StringUtils.isNotBlank(bo.getOrderNo()), ServiceWorkOrders::getOrderNo, bo.getOrderNo());
lqw.eq(ObjectUtil.isNotEmpty(bo.getStatus()), ServiceWorkOrders::getStatus, bo.getStatus());
lqw.eq(StringUtils.isNotBlank(bo.getStatus()), ServiceWorkOrders::getStatus, bo.getStatus());
lqw.like(StringUtils.isNotBlank(bo.getOrderName()), ServiceWorkOrders::getOrderName, bo.getOrderName());
lqw.eq(bo.getDispatchTime() != null, ServiceWorkOrders::getDispatchTime, bo.getDispatchTime());
lqw.like(StringUtils.isNotBlank(bo.getInitiatorName()), ServiceWorkOrders::getInitiatorPeople, bo.getInitiatorName());
@@ -173,7 +181,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
lqw.eq(bo.getPlanCompleTime() != null, ServiceWorkOrders::getPlanCompleTime, bo.getPlanCompleTime());
lqw.eq(bo.getCompleTime() != null, ServiceWorkOrders::getCompleTime, bo.getCompleTime());
lqw.eq(Objects.nonNull(bo.getServiceEvalua()), ServiceWorkOrders::getServiceEvalua, bo.getServiceEvalua());
lqw.eq(Objects.nonNull(bo.getType()), ServiceWorkOrders::getType, bo.getType());
lqw.in(Objects.nonNull(bo.getType()), ServiceWorkOrders::getType, typeIds);
lqw.eq(StringUtils.isNotBlank(bo.getProcessingWeight()), ServiceWorkOrders::getProcessingWeight, bo.getProcessingWeight());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), ServiceWorkOrders::getSearchValue, bo.getSearchValue());
return lqw;
@@ -239,13 +247,11 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
ordersLambdaQueryWrapper.eq(ServiceWorkOrdersRecord::getStatus, entity.getStatus());
boolean exists = workOrdersRecordMapper.exists(ordersLambdaQueryWrapper);
//TODO 做一些数据校验,如唯一约束
if (!exists) {
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
serviceWorkOrdersRecord.setOrderId(entity.getId());
serviceWorkOrdersRecord.setStatus(entity.getStatus());
serviceWorkOrdersRecord.setHandler(entity.getHandler());
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
}
}
/**
@@ -459,7 +465,7 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
Integer count = entry.getValue().intValue();
// 查询类型名称
ServiceWorkOrdersType serviceWorkOrdersType = serviceWorkOrdersTypeMapper.selectById(typeId);
ServiceWorkOrdersType serviceWorkOrdersType = typesMapper.selectById(typeId);
String type = serviceWorkOrdersType != null ? serviceWorkOrdersType.getOrderTypeName() : "未知类型";
// 添加到结果中
@@ -488,4 +494,28 @@ public class ServiceWorkOrdersServiceImpl implements IServiceWorkOrdersService {
.map(month -> new ServiceWorkOrderAnalysisVo.BarChartVo(month, Math.toIntExact(orderCountMap.getOrDefault(month, 0L))))
.collect(Collectors.toList());
}
//小程序端新增
@Override
public Boolean insertMServiceWorkOrdersBo(MServiceWorkOrdersBo bo) {
ServiceWorkOrders add = MapstructUtils.convert(bo, ServiceWorkOrders.class);
LoginUser user = LoginHelper.getLoginUser();
add.setOrderNo("GD" + IdUtil.getSnowflakeNextIdStr());
add.setStatus("0");
add.setInitiatorPeople(user.getNickname());
validEntityBeforeSave(add);
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
ServiceWorkOrdersRecord serviceWorkOrdersRecord = new ServiceWorkOrdersRecord();
serviceWorkOrdersRecord.setOrderId(add.getId());
serviceWorkOrdersRecord.setStatus(add.getStatus());
workOrdersRecordMapper.insert(serviceWorkOrdersRecord);
}
return flag;
}
}

View File

@@ -1,6 +1,7 @@
package org.dromara.property.service.impl;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
@@ -80,9 +81,11 @@ public class ServiceWorkOrdersTypeServiceImpl implements IServiceWorkOrdersTypeS
LambdaQueryWrapper<ServiceWorkOrdersType> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(ServiceWorkOrdersType::getSort);
lqw.eq(StringUtils.isNotBlank(bo.getOrderTypeNo()), ServiceWorkOrdersType::getOrderTypeNo, bo.getOrderTypeNo());
lqw.eq(StringUtils.isNotBlank(bo.getOrderTypeNo()), ServiceWorkOrdersType::getOrderTypeNo, bo.getOrderTypeNo());
lqw.like(StringUtils.isNotBlank(bo.getOrderTypeName()), ServiceWorkOrdersType::getOrderTypeName, bo.getOrderTypeName());
lqw.eq(StringUtils.isNotBlank(bo.getOperationMode()), ServiceWorkOrdersType::getOperationMode, bo.getOperationMode());
lqw.eq(StringUtils.isNotBlank(bo.getSearchValue()), ServiceWorkOrdersType::getSearchValue, bo.getSearchValue());
lqw.eq(ObjectUtil.isNotEmpty(bo.getParentId()), ServiceWorkOrdersType::getParentId, bo.getParentId());
lqw.isNull(bo.getFilterSubNodes() != null && bo.getFilterSubNodes(), ServiceWorkOrdersType::getParentId);
lqw.ne(bo.getExcludeId()!=null,ServiceWorkOrdersType::getId,bo.getExcludeId());
return lqw;

View File

@@ -1,6 +1,7 @@
package org.dromara.property.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.dromara.common.core.constant.GlobalConstants;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -12,6 +13,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.redis.utils.RedisUtils;
import org.dromara.property.domain.bo.QrCodeInfo;
import org.dromara.system.api.RemoteUserService;
import org.dromara.system.api.domain.vo.RemoteUserVo;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.TbVisitorManagementBo;
import org.dromara.property.domain.vo.TbVisitorManagementVo;
@@ -35,6 +38,7 @@ import java.util.Collection;
public class TbVisitorManagementServiceImpl implements ITbVisitorManagementService {
private final TbVisitorManagementMapper baseMapper;
private final RemoteUserService remoteUserService;
/**
* 查询访客管理
@@ -100,10 +104,16 @@ public class TbVisitorManagementServiceImpl implements ITbVisitorManagementServi
*/
@Override
public Boolean insertByBo(TbVisitorManagementBo bo) {
QrCodeInfo info = RedisUtils.getCacheObject("Qrcode" + bo.getQrCodeId());
QrCodeInfo info = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY +"Qrcode" + bo.getQrCodeId());
TbVisitorManagement add = MapstructUtils.convert(bo, TbVisitorManagement.class);
validEntityBeforeSave(add);
add.setCreateById(info.getUserid());
RemoteUserVo userInfoById = remoteUserService.getUserInfoById(info.getUserid());
add.setTenantId(userInfoById.getTenantId());
add.setCreateBy(userInfoById.getUserId());
add.setUpdateById(userInfoById.getUserId());
add.setUpdateBy(userInfoById.getUserId());
add.setCreateDept(userInfoById.getDeptId());
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());

View File

@@ -18,6 +18,9 @@ import org.dromara.property.mapper.MachineMaintainPlanStaffMapper;
import org.dromara.property.mapper.MachineMaintainTaskMapper;
import org.dromara.property.mapper.ResidentPersonMapper;
import org.dromara.property.service.IMachineMaintainPlanService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -39,17 +42,21 @@ import static org.dromara.common.mybatis.core.mapper.BaseMapperPlus.log;
* @Date:2025/7/17 09:25
* @Description:
**/
@Validated
@Component
@RequiredArgsConstructor
@RestController
@RequestMapping("/machineTask")
//@Validated
//@RequiredArgsConstructor
//@RestController
//@RequestMapping("/machineTask")
public class MachineTasks {
private final IMachineMaintainPlanService machineMaintainPlanService;
private final MachineMaintainTaskMapper machineMaintainTaskMapper;
private final MachineMaintainPlanStaffMapper machineMaintainPlanStaffMapper;
private final ResidentPersonMapper residentPersonMapper;
@GetMapping("/taskId")
//@GetMapping("/taskId")
@Scheduled(cron = "0 0 3 * * ?")
@Transactional(rollbackFor = Exception.class)
public void doMachineMaintainPianTask() {
// 查询所有启用状态的巡检计划
MachineMaintainPlanBo machineMaintainPlanBo= new MachineMaintainPlanBo();

View File

@@ -0,0 +1,42 @@
package org.dromara.property.tasks;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.ServiceWorkOrders;
import org.dromara.property.mapper.ServiceWorkOrdersMapper;
import org.springframework.stereotype.Component;
import java.util.List;
import org.dromara.common.log.annotation.Log;
/**
* @Author:yuyongle
* @Date:2025/8/7 14:21
* @Description:自动派单
**/
@Slf4j
@Component
@RequiredArgsConstructor
public class ServiceWorkOrderTasks {
private ServiceWorkOrdersMapper workOrdersMapper;
//查询状态为创建工单的工单
private void handleServiceWorkOrder() {
List<ServiceWorkOrders> serviceWorkOrderList = workOrdersMapper.selectList(
new LambdaQueryWrapper<ServiceWorkOrders>()
.eq(ServiceWorkOrders::getStatus, "0"));
if(CollUtil.isNotEmpty(serviceWorkOrderList)){
serviceWorkOrderList.stream().forEach(s->{
});
}else {
log.info("派单工单为:{}",serviceWorkOrderList.size());
}
}
}