Merge remote-tracking branch 'origin/master'
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
zcxlsm 2025-08-07 22:34:57 +08:00
commit 989421e244
21 changed files with 177 additions and 38 deletions

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

@ -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

@ -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;
/**
* 地址

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

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

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

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

View File

@ -97,7 +97,7 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
Page<AttendanceArrangementVo> attendanceArrangementVoPage = result.setRecords(result.getRecords().stream().map(vo -> {
//根据当前日期查询在开始时间和结束时间之间的排班信息
//从前端查询出来的当前日期判断是否在排班时间内
if (bo.getCurrentDate().isAfter(vo.getStartDate()) && bo.getCurrentDate().isBefore(vo.getEndDate())) {
if ((bo.getCurrentDate().isAfter(vo.getStartDate()) || bo.getCurrentDate().isEqual(vo.getStartDate())) && (bo.getCurrentDate().isBefore(vo.getEndDate()) || bo.getCurrentDate().isEqual(vo.getEndDate()))) {
//1.查询人员表信息
//根据查询出来的result取出shceduleId
Long scheduleId = vo.getId();
@ -437,11 +437,8 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
judgeDate(bo, add);
// AttendanceArrangementGroup attendanceArrangementGroup = new AttendanceArrangementGroup();
// //向排班和考勤组中间表中插入数据
// attendanceArrangementGroup.setGroupId(add.getGroupId());
// attendanceArrangementGroup.setArrangementId(bo.getId());
// arrangementGroupMapper.insert(attendanceArrangementGroup);
//取出当前新增的排班的id
Long ArrangementId = add.getId();
@ -479,21 +476,28 @@ public class AttendanceArrangementServiceImpl implements IAttendanceArrangementS
* @param bo 排班
* @return 是否修改成功
*/
@Transactional(rollbackFor = Exception.class)
@Override
public Boolean updateByBo(AttendanceArrangementBo bo) {
AttendanceArrangement update = MapstructUtils.convert(bo, AttendanceArrangement.class);
validEntityBeforeSave(update);
judgeDate(bo, update);
// judgeDate(bo, update);
//取出当前排班的id
assert update != null;
Long ArrangementId = update.getId();
//用获取到的排班id向attendanceUserGroup表中更新数据
//根据arrangementId查询出人员组的所有employeeId
List<Long> employeeIdList = userGroupMapper.selectList(Wrappers.<AttendanceUserGroup>lambdaQuery().eq(AttendanceUserGroup::getScheduleId, ArrangementId))
.stream().map(AttendanceUserGroup::getEmployeeId).toList();
//根据employeeId和ArrangementId删除attendanceUserGroup表中的数据
userGroupMapper.delete(Wrappers.<AttendanceUserGroup>lambdaQuery().in(AttendanceUserGroup::getEmployeeId, employeeIdList)
.eq(AttendanceUserGroup::getScheduleId, ArrangementId));
//用获取到的排班id向attendanceUserGroup表中批量插入数据
List<AttendanceUserGroup> userGroupList = bo.getUserGroupList();
for (AttendanceUserGroup userGroup : userGroupList) {
userGroup.setScheduleId(ArrangementId);
userGroupMapper.updateById(userGroup);
}
userGroupMapper.insertBatch(userGroupList);
return baseMapper.updateById(update) > 0;
}

View File

@ -51,7 +51,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 +159,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 +180,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;
@ -459,7 +466,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() : "未知类型";
// 添加到结果中

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

@ -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());
}
}
}

View File

@ -4,6 +4,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@ -11,6 +12,7 @@ import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.sis.domain.bo.SisAuthRecordBo;
import org.dromara.sis.service.ISisDataSyncService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -26,12 +28,13 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2025-07-14
*/
@Validated
@Slf4j
@RequiredArgsConstructor
@RestController
@RequestMapping("/dataSync")
public class SisDataSyncController extends BaseController {
// private
private final ISisDataSyncService sisDataSyncService;
@SaCheckPermission("sis:dataSync:add")
@ -39,6 +42,7 @@ public class SisDataSyncController extends BaseController {
@RepeatSubmit()
@PostMapping("/add")
public R<Void> add(@Validated(AddGroup.class) @RequestBody SisAuthRecordBo bo, HttpServletRequest request) {
log.info("开始同步报警记录数据...");
// return toAjax();
return R.ok();
}

View File

@ -0,0 +1,7 @@
package org.dromara.sis.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.dromara.sis.domain.SisAlarmEvents;
public interface SisDataSyncMapper extends BaseMapper<SisAlarmEvents> {
}

View File

@ -0,0 +1,7 @@
package org.dromara.sis.service;
/**
* 告警数据同步Service接口
*/
public interface ISisDataSyncService {
}

View File

@ -0,0 +1,15 @@
package org.dromara.sis.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sis.service.ISisDataSyncService;
import org.springframework.stereotype.Service;
/**
* 告警数据同步Service业务层处理
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class SisDataSyncServiceImpl implements ISisDataSyncService {
}

View File

@ -77,7 +77,7 @@ public class DataSyncTask {
// 提取操作记录数据
Map<Long, List<Map<String, Object>>> operatorMap = new HashMap<>();
for (Map<String, Object> recordMap : recordList) {
Long recordId = Long.valueOf((Integer)recordMap.get("Id"));
Long recordId = Long.valueOf((Integer) recordMap.get("Id"));
List<Map<String, Object>> operators = (List<Map<String, Object>>) recordMap.get("TaskOperators");
if (operators != null && !operators.isEmpty()) {
operatorMap.put(recordId, operators);
@ -88,14 +88,15 @@ public class DataSyncTask {
sisAlarmEvents.setId(recordId);
sisAlarmEvents.setType(Long.valueOf((Integer) recordMap.get("Type")));
sisAlarmEvents.setLevel(Long.valueOf((Integer) recordMap.get("Level")));
// //报警设备ip
// sisAlarmEvents.setDeviceIp();
sisAlarmEvents.setDeviceIp((String) recordMap.get("DeviceSipNum"));
sisAlarmEvents.setDeviceName(recordMap.get("DeviceName").toString());
sisAlarmEvents.setDeviceGroupId(Long.valueOf((Integer) recordMap.get("GroupId")));
sisAlarmEvents.setDeviceGroupName(recordMap.get("GroupName").toString());
sisAlarmEvents.setReportTime((Date) recordMap.get("StartTime"));
sisAlarmEvents.setState((Integer) recordMap.get("State"));
if ((Integer) recordMap.get("State") == 3) {
sisAlarmEvents.setWorkOrderId(Long.valueOf((Integer) recordMap.get("WorkOrderId")));
}
//保存报警事件
sisAlarmEventsService.insertByBo(sisAlarmEvents);