Browse Source

Merge branch 'dev' of https://git.yingcaibx.com/tl/api into dev

brealinxx 9 months ago
parent
commit
59791e25fa
21 changed files with 978 additions and 11 deletions
  1. 134 0
      src/main/java/com/xjrsoft/module/attendance/controller/AttendanceMessageSetController.java
  2. 54 0
      src/main/java/com/xjrsoft/module/attendance/dto/AddAttendanceMessageSetDto.java
  3. 53 0
      src/main/java/com/xjrsoft/module/attendance/dto/AddAttendanceMessageUserRelationDto.java
  4. 15 0
      src/main/java/com/xjrsoft/module/attendance/dto/AttendanceMessageSetDto.java
  5. 26 0
      src/main/java/com/xjrsoft/module/attendance/dto/AttendanceMessageSetPageDto.java
  6. 33 0
      src/main/java/com/xjrsoft/module/attendance/dto/UpdateAttendanceMessageSetDto.java
  7. 109 0
      src/main/java/com/xjrsoft/module/attendance/entity/AttendanceMessageSet.java
  8. 103 0
      src/main/java/com/xjrsoft/module/attendance/entity/AttendanceMessageUserRelation.java
  9. 17 0
      src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceMessageSetMapper.java
  10. 17 0
      src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceMessageUserRelationMapper.java
  11. 48 0
      src/main/java/com/xjrsoft/module/attendance/service/IAttendanceMessageSetService.java
  12. 102 0
      src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceMessageSetServiceImpl.java
  13. 84 0
      src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageSetPageVo.java
  14. 60 0
      src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageSetVo.java
  15. 54 0
      src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageUserRelationVo.java
  16. 6 6
      src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java
  17. 2 0
      src/main/java/com/xjrsoft/module/liteflow/node/ReservationSchoolNode.java
  18. 2 1
      src/main/java/com/xjrsoft/module/personnel/entity/ReservationSchoolPeople.java
  19. 4 1
      src/main/java/com/xjrsoft/module/personnel/service/impl/ReservationSchoolServiceImpl.java
  20. 21 3
      src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java
  21. 34 0
      src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

+ 134 - 0
src/main/java/com/xjrsoft/module/attendance/controller/AttendanceMessageSetController.java

@@ -0,0 +1,134 @@
+package com.xjrsoft.module.attendance.controller;
+
+import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.github.yulichang.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.xjrsoft.common.page.ConventPage;
+import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.model.result.RT;
+import com.xjrsoft.common.utils.VoToColumnUtil;
+import com.xjrsoft.module.attendance.dto.AddAttendanceMessageSetDto;
+import com.xjrsoft.module.attendance.dto.AttendanceMessageSetDto;
+import com.xjrsoft.module.attendance.dto.UpdateAttendanceMessageSetDto;
+import cn.dev33.satoken.annotation.SaCheckPermission;
+
+import com.xjrsoft.module.attendance.dto.AttendanceMessageSetPageDto;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
+import com.xjrsoft.module.attendance.entity.TeacherAttendanceRecord;
+import com.xjrsoft.module.attendance.service.IAttendanceMessageSetService;
+import com.xjrsoft.module.attendance.vo.AttendanceMessageSetPageVo;
+
+import com.xjrsoft.module.attendance.vo.AttendanceMessageSetVo;
+import com.xjrsoft.module.attendance.vo.AttendanceMessageUserRelationVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.AllArgsConstructor;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@RestController
+@RequestMapping("/attendance" + "/attendanceMessageSet")
+@Api(value = "/attendance"  + "/attendanceMessageSet",tags = "考勤消息设置代码")
+@AllArgsConstructor
+public class AttendanceMessageSetController {
+
+
+    private final IAttendanceMessageSetService attendanceMessageSetService;
+
+    @GetMapping(value = "/page")
+    @ApiOperation(value="考勤消息设置列表(分页)")
+    @SaCheckPermission("attendancemessageset:detail")
+    public RT<PageOutput<AttendanceMessageSetPageVo>> page(@Valid AttendanceMessageSetPageDto dto){
+
+        LambdaQueryWrapper<AttendanceMessageSet> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper
+                    .orderByDesc(AttendanceMessageSet::getId)
+                .select(AttendanceMessageSet.class,x -> VoToColumnUtil.fieldsToColumns(AttendanceMessageSetPageVo.class).contains(x.getProperty()));
+        IPage<AttendanceMessageSet> page = attendanceMessageSetService.page(ConventPage.getPage(dto), queryWrapper);
+        PageOutput<AttendanceMessageSetPageVo> pageOutput = ConventPage.getPageOutput(page, AttendanceMessageSetPageVo.class);
+        return RT.ok(pageOutput);
+    }
+
+    @GetMapping(value = "/list")
+    @ApiOperation(value="考勤消息设置列表")
+    @SaCheckPermission("attendancemessageset:detail")
+    public RT<List<AttendanceMessageSetVo>> list(@Valid AttendanceMessageSetDto dto) {
+        List<AttendanceMessageSet> list = attendanceMessageSetService.list(MPJWrappers.<AttendanceMessageSet>lambdaJoin().eq(ObjectUtil.isNotNull(dto.getRoleType()) && dto.getRoleType() != 0, AttendanceMessageSet::getRoleType, dto.getRoleType()));
+        List<AttendanceMessageSetVo> res = new ArrayList<>();
+        for (AttendanceMessageSet item : list) {
+            AttendanceMessageSet attendanceMessageSet = attendanceMessageSetService.getByIdDeep(item.getId());
+            if (attendanceMessageSet != null) {
+                res.add(BeanUtil.toBean(attendanceMessageSet, AttendanceMessageSetVo.class));
+            }
+        }
+        return RT.ok(res);
+    }
+
+    @GetMapping(value = "/info")
+    @ApiOperation(value="根据id查询考勤消息设置信息")
+    @SaCheckPermission("attendancemessageset:detail")
+    public RT<AttendanceMessageSetVo> info(@RequestParam Long id){
+        AttendanceMessageSet attendanceMessageSet = attendanceMessageSetService.getByIdDeep(id);
+        if (attendanceMessageSet == null) {
+           return RT.error("找不到此数据!");
+        }
+        return RT.ok(BeanUtil.toBean(attendanceMessageSet, AttendanceMessageSetVo.class));
+    }
+
+
+    @PostMapping
+    @ApiOperation(value = "新增考勤消息设置")
+    @SaCheckPermission("attendancemessageset:add")
+    public RT<Boolean> add(@Valid @RequestBody AddAttendanceMessageSetDto dto){
+        AttendanceMessageSet attendanceMessageSet = BeanUtil.toBean(dto, AttendanceMessageSet.class);
+        boolean isSuccess = attendanceMessageSetService.add(attendanceMessageSet);
+    return RT.ok(isSuccess);
+    }
+
+    @PutMapping
+    @ApiOperation(value = "修改考勤消息设置")
+    @SaCheckPermission("attendancemessageset:edit")
+    public RT<Boolean> update(@Valid @RequestBody UpdateAttendanceMessageSetDto dto){
+        AttendanceMessageSet attendanceMessageSet = BeanUtil.toBean(dto, AttendanceMessageSet.class);
+        return RT.ok(attendanceMessageSetService.update(attendanceMessageSet));
+    }
+
+    @PostMapping("edit")
+    @ApiOperation(value = "新增考勤消息设置")
+    @SaCheckPermission("attendancemessageset:add")
+    public RT<Boolean> add(@Valid @RequestBody List<UpdateAttendanceMessageSetDto> dtos) {
+        List<AttendanceMessageSet> attendanceMessageSets = new ArrayList<>();
+        for (UpdateAttendanceMessageSetDto dto : dtos) {
+            AttendanceMessageSet attendanceMessageSet = BeanUtil.toBean(dto, AttendanceMessageSet.class);
+            attendanceMessageSets.add(attendanceMessageSet);
+        }
+        boolean isSuccess = attendanceMessageSetService.edit(attendanceMessageSets);
+        return RT.ok(isSuccess);
+    }
+
+    @DeleteMapping
+    @ApiOperation(value = "删除考勤消息设置")
+    @SaCheckPermission("attendancemessageset:delete")
+    public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
+        return RT.ok(attendanceMessageSetService.delete(ids));
+
+    }
+
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AddAttendanceMessageSetDto.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
+
+
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class AddAttendanceMessageSetDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)
+    */
+    @ApiModelProperty("消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)")
+    private Integer messageCategory;
+    /**
+    * 时间段(1:上午 2:下午 3:晚上 4:返校)
+    */
+    @ApiModelProperty("时间段(1:上午 2:下午 3:晚上 4:返校)")
+    private Integer timePeriod;
+    /**
+    * 指定人员
+    */
+    @ApiModelProperty("指定人员")
+    private String userRelation;
+
+    /**
+    * attendanceMessageUserRelation
+    */
+    @ApiModelProperty("attendanceMessageUserRelation子表")
+    private List<AddAttendanceMessageUserRelationDto> attendanceMessageUserRelationList;
+}

+ 53 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AddAttendanceMessageUserRelationDto.java

@@ -0,0 +1,53 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+
+/**
+* @title: 考勤消息提醒人员
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class AddAttendanceMessageUserRelationDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 所属班级id
+    */
+    @ApiModelProperty("所属班级id")
+    private Integer classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Integer deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+    * 考勤消息设置(attendance_message_set)
+    */
+    @ApiModelProperty("考勤消息设置(attendance_message_set)")
+    private String attendanceMessageSetId;
+
+}

+ 15 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AttendanceMessageSetDto.java

@@ -0,0 +1,15 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class AttendanceMessageSetDto {
+    /**
+     * 人员类别(1:教职工 2:学生)
+     */
+    @ApiModelProperty("人员类别(1:教职工 2:学生)")
+    private  Integer roleType;
+}

+ 26 - 0
src/main/java/com/xjrsoft/module/attendance/dto/AttendanceMessageSetPageDto.java

@@ -0,0 +1,26 @@
+package com.xjrsoft.module.attendance.dto;
+
+import com.xjrsoft.common.page.PageInput;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+
+/**
+* @title: 考勤消息设置分页查询入参
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class AttendanceMessageSetPageDto extends PageInput {
+
+
+}

+ 33 - 0
src/main/java/com/xjrsoft/module/attendance/dto/UpdateAttendanceMessageSetDto.java

@@ -0,0 +1,33 @@
+package com.xjrsoft.module.attendance.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
+
+
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class UpdateAttendanceMessageSetDto extends AddAttendanceMessageSetDto {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+}

+ 109 - 0
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceMessageSet.java

@@ -0,0 +1,109 @@
+package com.xjrsoft.module.attendance.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+@TableName("attendance_message_set")
+@ApiModel(value = "attendance_message_set", description = "考勤消息设置")
+public class AttendanceMessageSet implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)
+    */
+    @ApiModelProperty("消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)")
+    private Integer messageCategory;
+    /**
+    * 时间段(1:上午 2:下午 3:晚上 4:返校)
+    */
+    @ApiModelProperty("时间段(1:上午 2:下午 3:晚上 4:返校)")
+    private Integer timePeriod;
+    /**
+    * 指定人员
+    */
+    @ApiModelProperty("指定人员")
+    private String userRelation;
+    /**
+     * 人员类别(1:教职工 2:学生)
+     */
+    @ApiModelProperty("人员类别(1:教职工 2:学生)")
+    private  Integer roleType;
+    /**
+    * attendanceMessageUserRelation
+    */
+    @ApiModelProperty("attendanceMessageUserRelation子表")
+    @TableField(exist = false)
+    @EntityMapping(thisField = "id", joinField = "attendanceMessageSetId")
+    private List<AttendanceMessageUserRelation> attendanceMessageUserRelationList;
+
+}

+ 103 - 0
src/main/java/com/xjrsoft/module/attendance/entity/AttendanceMessageUserRelation.java

@@ -0,0 +1,103 @@
+package com.xjrsoft.module.attendance.entity;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.github.yulichang.annotation.EntityMapping;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.io.Serializable;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+
+/**
+* @title: 考勤消息提醒人员
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+@TableName("attendance_message_user_relation")
+@ApiModel(value = "attendance_message_user_relation", description = "考勤消息提醒人员")
+public class AttendanceMessageUserRelation implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableId
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.UPDATE)
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    @TableLogic
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer enabledMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 所属班级id
+    */
+    @ApiModelProperty("所属班级id")
+    private Integer classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Integer deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+    * 考勤消息设置(attendance_message_set)
+    */
+    @ApiModelProperty("考勤消息设置(attendance_message_set)")
+    private Long attendanceMessageSetId;
+
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceMessageSetMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Mapper
+public interface AttendanceMessageSetMapper extends MPJBaseMapper<AttendanceMessageSet> {
+
+}

+ 17 - 0
src/main/java/com/xjrsoft/module/attendance/mapper/AttendanceMessageUserRelationMapper.java

@@ -0,0 +1,17 @@
+package com.xjrsoft.module.attendance.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @title: 考勤消息提醒人员
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Mapper
+public interface AttendanceMessageUserRelationMapper extends MPJBaseMapper<AttendanceMessageUserRelation> {
+
+}

+ 48 - 0
src/main/java/com/xjrsoft/module/attendance/service/IAttendanceMessageSetService.java

@@ -0,0 +1,48 @@
+package com.xjrsoft.module.attendance.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
+import lombok.Data;
+import java.util.List;
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+
+public interface IAttendanceMessageSetService extends MPJBaseService<AttendanceMessageSet> {
+    /**
+    * 新增
+    *
+    * @param attendanceMessageSet
+    * @return
+    */
+    Boolean add(AttendanceMessageSet attendanceMessageSet);
+
+    /**
+    * 更新
+    *
+    * @param attendanceMessageSet
+    * @return
+    */
+    Boolean update(AttendanceMessageSet attendanceMessageSet);
+
+    /**
+     * 更新
+     *
+     * @param attendanceMessageSets
+     * @return
+     */
+    Boolean edit(List<AttendanceMessageSet>  attendanceMessageSets);
+
+    /**
+    * 删除
+    *
+    * @param ids
+    * @return
+    */
+    Boolean delete(List<Long> ids);
+}

+ 102 - 0
src/main/java/com/xjrsoft/module/attendance/service/impl/AttendanceMessageSetServiceImpl.java

@@ -0,0 +1,102 @@
+package com.xjrsoft.module.attendance.service.impl;
+
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
+import com.xjrsoft.module.attendance.mapper.AttendanceMessageUserRelationMapper;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageSet;
+import com.xjrsoft.module.attendance.mapper.AttendanceMessageSetMapper;
+import com.xjrsoft.module.attendance.service.IAttendanceMessageSetService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+
+/**
+* @title: 考勤消息设置
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Service
+@AllArgsConstructor
+public class AttendanceMessageSetServiceImpl extends MPJBaseServiceImpl<AttendanceMessageSetMapper, AttendanceMessageSet> implements IAttendanceMessageSetService {
+    private final AttendanceMessageSetMapper attendanceMessageSetAttendanceMessageSetMapper;
+
+    private final AttendanceMessageUserRelationMapper attendanceMessageSetAttendanceMessageUserRelationMapper;
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean add(AttendanceMessageSet attendanceMessageSet) {
+        attendanceMessageSetAttendanceMessageSetMapper.insert(attendanceMessageSet);
+        for (AttendanceMessageUserRelation attendanceMessageUserRelation : attendanceMessageSet.getAttendanceMessageUserRelationList()) {
+            attendanceMessageUserRelation.setAttendanceMessageSetId(attendanceMessageSet.getId());
+            attendanceMessageSetAttendanceMessageUserRelationMapper.insert(attendanceMessageUserRelation);
+        }
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean update(AttendanceMessageSet attendanceMessageSet) {
+        attendanceMessageSetAttendanceMessageSetMapper.updateById(attendanceMessageSet);
+        //********************************* AttendanceMessageUserRelation  增删改  开始 *******************************************/
+        {
+            // 查出所有子级的id
+            List<AttendanceMessageUserRelation> attendanceMessageUserRelationList = attendanceMessageSetAttendanceMessageUserRelationMapper.selectList(Wrappers.lambdaQuery(AttendanceMessageUserRelation.class).eq(AttendanceMessageUserRelation::getAttendanceMessageSetId, attendanceMessageSet.getId()).select(AttendanceMessageUserRelation::getId));
+            List<Long> attendanceMessageUserRelationIds = attendanceMessageUserRelationList.stream().map(AttendanceMessageUserRelation::getId).collect(Collectors.toList());
+            //原有子表单 没有被删除的主键
+            List<Long> attendanceMessageUserRelationOldIds = attendanceMessageSet.getAttendanceMessageUserRelationList().stream().map(AttendanceMessageUserRelation::getId).filter(Objects::nonNull).collect(Collectors.toList());
+            //找到需要删除的id
+            List<Long> attendanceMessageUserRelationRemoveIds = attendanceMessageUserRelationIds.stream().filter(item -> !attendanceMessageUserRelationOldIds.contains(item)).collect(Collectors.toList());
+
+            for (AttendanceMessageUserRelation attendanceMessageUserRelation : attendanceMessageSet.getAttendanceMessageUserRelationList()) {
+                //如果不等于空则修改
+                if (attendanceMessageUserRelation.getId() != null) {
+                    attendanceMessageSetAttendanceMessageUserRelationMapper.updateById(attendanceMessageUserRelation);
+                }
+                //如果等于空 则新增
+                else {
+                    //已经不存在的id 删除
+                    attendanceMessageUserRelation.setAttendanceMessageSetId(attendanceMessageSet.getId());
+                    attendanceMessageSetAttendanceMessageUserRelationMapper.insert(attendanceMessageUserRelation);
+                }
+            }
+            //已经不存在的id 删除
+            if(attendanceMessageUserRelationRemoveIds.size() > 0){
+                attendanceMessageSetAttendanceMessageUserRelationMapper.deleteBatchIds(attendanceMessageUserRelationRemoveIds);
+            }
+        }
+        //********************************* AttendanceMessageUserRelation  增删改  结束 *******************************************/
+
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean edit(List<AttendanceMessageSet>  attendanceMessageSets) {
+        for (AttendanceMessageSet attendanceMessageSet : attendanceMessageSets) {
+            if (ObjectUtil.isNotNull(attendanceMessageSet.getId()) && attendanceMessageSet.getId() != 0) {
+                update(attendanceMessageSet);
+            } else {
+                add(attendanceMessageSet);
+            }
+        }
+        return true;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean delete(List<Long> ids) {
+        attendanceMessageSetAttendanceMessageSetMapper.deleteBatchIds(ids);
+        attendanceMessageSetAttendanceMessageUserRelationMapper.delete(Wrappers.lambdaQuery(AttendanceMessageUserRelation.class).in(AttendanceMessageUserRelation::getAttendanceMessageSetId, ids));
+
+        return true;
+    }
+}

+ 84 - 0
src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageSetPageVo.java

@@ -0,0 +1,84 @@
+package com.xjrsoft.module.attendance.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import com.xjrsoft.common.annotation.Trans;
+import com.xjrsoft.common.enums.TransType;
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+* @title: 考勤消息设置分页列表出参
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class AttendanceMessageSetPageVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private String id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long createUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Date createDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long modifyUserId;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Date modifyDate;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer deleteMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer enabledMark;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)
+    */
+    @ApiModelProperty("消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)")
+    private Integer messageCategory;
+    /**
+    * 时间段(1:上午 2:下午 3:晚上 4:返校)
+    */
+    @ApiModelProperty("时间段(1:上午 2:下午 3:晚上 4:返校)")
+    private Integer timePeriod;
+    /**
+    * 指定人员
+    */
+    @ApiModelProperty("指定人员")
+    private String userRelation;
+    /**
+     * 人员类别(1:教职工 2:学生)
+     */
+    @ApiModelProperty("人员类别(1:教职工 2:学生)")
+    private  Integer roleType;
+
+}

+ 60 - 0
src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageSetVo.java

@@ -0,0 +1,60 @@
+package com.xjrsoft.module.attendance.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+import com.xjrsoft.module.attendance.entity.AttendanceMessageUserRelation;
+
+/**
+* @title: 考勤消息设置表单出参
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class AttendanceMessageSetVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)
+    */
+    @ApiModelProperty("消息类别(1:迟到消息 2:旷课消息 3:缺勤消息)")
+    private Integer messageCategory;
+    /**
+    * 时间段(1:上午 2:下午 3:晚上 4:返校)
+    */
+    @ApiModelProperty("时间段(1:上午 2:下午 3:晚上 4:返校)")
+    private Integer timePeriod;
+    /**
+    * 指定人员
+    */
+    @ApiModelProperty("指定人员")
+    private String userRelation;
+
+    /**
+     * 人员类别(1:教职工 2:学生)
+     */
+    @ApiModelProperty("人员类别(1:教职工 2:学生)")
+    private  Integer roleType;
+
+    /**
+    * attendanceMessageUserRelation
+    */
+    @ApiModelProperty("attendanceMessageUserRelation子表")
+    private List<AttendanceMessageUserRelationVo> attendanceMessageUserRelationList;
+
+}

+ 54 - 0
src/main/java/com/xjrsoft/module/attendance/vo/AttendanceMessageUserRelationVo.java

@@ -0,0 +1,54 @@
+package com.xjrsoft.module.attendance.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalTime;
+import java.time.LocalDateTime;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Date;
+
+/**
+* @title: 考勤消息提醒人员表单出参
+* @Author dzx
+* @Date: 2024-05-20
+* @Version 1.0
+*/
+@Data
+public class AttendanceMessageUserRelationVo {
+
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Long id;
+    /**
+    * 
+    */
+    @ApiModelProperty("")
+    private Integer sortCode;
+    /**
+    * 所属班级id
+    */
+    @ApiModelProperty("所属班级id")
+    private Integer classId;
+    /**
+    * 所属部门id
+    */
+    @ApiModelProperty("所属部门id")
+    private Integer deptId;
+    /**
+    * 用户id
+    */
+    @ApiModelProperty("用户id")
+    private String userId;
+    /**
+    * 考勤消息设置(attendance_message_set)
+    */
+    @ApiModelProperty("考勤消息设置(attendance_message_set)")
+    private String attendanceMessageSetId;
+
+
+
+}

+ 6 - 6
src/main/java/com/xjrsoft/module/hikvision/util/DataUtil.java

@@ -146,7 +146,7 @@ public class DataUtil {
                 paramJson.addProperty("parentIndexCode", status);
                 paramJson.addProperty("orgCode", dict.getCode());
                 dataArray.add(paramJson);
-                idCodeMap.put(clientId, dict.getCode());
+                idCodeMap.put(clientId, dict.getCode() + "-" + status);
                 clientId ++;
             }
         }
@@ -170,18 +170,18 @@ public class DataUtil {
         dataArray = new JsonArray();
         for (String classType : classTypeSet) {
             for (BaseGrade baseGrade : gradeList) {
-                gradeNameMap.put(baseGrade.getId(), baseGrade.getName());
+                gradeNameMap.put(baseGrade.getId(), baseGrade.getName().replaceAll("级", ""));
                 if(tableData != null && tableData.containsKey(baseGrade.getId().toString())){
                     continue;
                 }
                 JsonObject paramJson = new JsonObject();
                 paramJson.addProperty("clientId", clientId);
-                paramJson.addProperty("orgIndexCode", baseGrade.getName() + "-" + classType);
+                paramJson.addProperty("orgIndexCode", baseGrade.getName().replaceAll("级", "") + "-" + classType);
                 paramJson.addProperty("orgName", baseGrade.getName());
                 paramJson.addProperty("parentIndexCode", classType);
                 paramJson.addProperty("orgCode", clientId);
                 dataArray.add(paramJson);
-                idCodeMap.put(clientId, baseGrade.getName());
+                idCodeMap.put(clientId, baseGrade.getName().replaceAll("级", "") + "-" + classType);
                 clientId ++;
             }
         }
@@ -225,7 +225,7 @@ public class DataUtil {
                 paramJson.addProperty("parentIndexCode", grade);
                 paramJson.addProperty("orgCode", clientId);
                 dataArray.add(paramJson);
-                idCodeMap.put(clientId, baseClass.getId().toString());
+                idCodeMap.put(clientId, baseClass.getId() + "-" + grade);
                 clientId ++;
             }
         }
@@ -248,7 +248,7 @@ public class DataUtil {
     }
 
     public Map<String, String> insertStudentOne(Db db, String tableName, Map<String, String> tableData) throws Exception {
-        String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',t4.name,'-',t3.class_type,'-',t2.stduy_status)," +
+        String sql = "SELECT t1.id,t1.name,CONCAT(t3.id,'-',replace(t4.name,'级',''),'-',t3.class_type,'-',t2.stduy_status)," +
                 " t1.user_name,t1.gender,DATE_FORMAT(t1.birth_date, '%Y-%m-%d'),t1.mobile,t1.email,t1.credential_type,t1.credential_number FROM xjr_user t1" +
                 " INNER JOIN base_student_school_roll t2 ON t1.id = t2.user_id" +
                 " INNER JOIN base_class t3 ON t2.class_id = t3.id" +

+ 2 - 0
src/main/java/com/xjrsoft/module/liteflow/node/ReservationSchoolNode.java

@@ -32,6 +32,8 @@ public class ReservationSchoolNode extends NodeComponent {
             dataObj.setStatus(1);
             dataObj.setExamStatus(1);
             reservationSchoolService.updateById(dataObj);
+
+            reservationSchoolService.registration(dataObj);
         }
     }
 }

+ 2 - 1
src/main/java/com/xjrsoft/module/personnel/entity/ReservationSchoolPeople.java

@@ -109,5 +109,6 @@ public class ReservationSchoolPeople implements Serializable {
     @ApiModelProperty("车牌号")
     private String plateNumber;
 
-
+    @ApiModelProperty("记录海康登记结果")
+    private String registrationResult;
 }

+ 4 - 1
src/main/java/com/xjrsoft/module/personnel/service/impl/ReservationSchoolServiceImpl.java

@@ -134,7 +134,10 @@ public class ReservationSchoolServiceImpl extends MPJBaseServiceImpl<Reservation
             visitorInfo.addProperty("certificateNo", people.getIdentityCard());
             paramJson.add("visitorInfo", visitorInfo);
 
-            apiUtil.doPost(apiPath, paramJson.toString(), null);
+            String result = apiUtil.doPost(apiPath, paramJson.toString(), null);
+
+            people.setRegistrationResult(result);
+            reservationSchoolPeopleMapper.updateById(people);
         }
 
         return true;

+ 21 - 3
src/test/java/com/xjrsoft/module/job/HikvisionBaseDataTaskTest.java

@@ -86,11 +86,29 @@ class HikvisionBaseDataTaskTest {
 //        Map<String, String> classes = dataUtil.insertClass(use, tableName, baseClass);
 
 
-        tableName = "base_student";
-        Map<String, String> baseStudent = dataMap.get(tableName);
-        Map<String, String> student = insertStudentOne(use, tableName, baseStudent);
+//        tableName = "base_student";
+//        Map<String, String> baseStudent = dataMap.get(tableName);
+//        Map<String, String> student = dataUtil.insertStudentOne(use, tableName, baseStudent);
 
 //        selectOrg(use, "base_class");
+
+        //查询车辆
+//        String carTableName = "car_message_apply";
+//        selectCar(use, carTableName);
+
+    }
+
+    public static void selectCar(Db db, String tableName) throws SQLException {
+        String sql = "SELECT * FROM " + tableName + " WHERE delete_mark = 0";
+        List<Department> dataList = db.query(sql, Department.class);
+        String apiPath = "/api/resource/v2/vehicle/advance/vehicleList";
+        JsonObject jsonObject = new JsonObject();
+        jsonObject.addProperty("pageNo", 1);
+        jsonObject.addProperty("pageSize", 500);
+        ApiUtil apiUtil = new ApiUtil();
+        String result = apiUtil.doPost(apiPath, jsonObject.toString(), null);
+        System.out.println("-----------------------------------------------------");
+        System.out.println(result);
     }
 
     public static void insertRecord(Db db, String tableName, Map<?, String> idsMap) throws SQLException {

+ 34 - 0
src/test/java/com/xjrsoft/xjrsoftboot/FreeMarkerGeneratorTest.java

@@ -3129,4 +3129,38 @@ public class FreeMarkerGeneratorTest {
 
         apiGeneratorService.generateCodes(params);
     }
+
+    @Test
+    public void gcAttendanceMessageSet() throws IOException {
+        List<TableConfig> tableConfigs = new ArrayList<>();
+        TableConfig mainTable = new TableConfig();
+        mainTable.setTableName("attendance_message_set");//init_sql中的表名
+        mainTable.setIsMain(true);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        tableConfigs.add(mainTable);
+
+        mainTable = new TableConfig();
+        mainTable.setTableName("attendance_message_user_relation");//init_sql中的表名
+        mainTable.setIsMain(false);//是否是主表,一般默认为true
+        mainTable.setPkField(GlobalConstant.DEFAULT_PK);//设置主键
+        mainTable.setPkType(GlobalConstant.DEFAULT_PK_TYPE);//设置主键类型
+        mainTable.setRelationField("attendance_message_set_id");//设置外键
+        mainTable.setRelationTableField(GlobalConstant.DEFAULT_PK);//设置外键
+        tableConfigs.add(mainTable);
+
+        ApiGenerateCodesDto params = new ApiGenerateCodesDto();
+        params.setAuthor("dzx");//作者名称
+        params.setPackageName("attendance");//包名
+        params.setTableConfigs(tableConfigs);
+        params.setPage(true);//是否生成分页接口
+        params.setImport(false);//是否生成导入接口
+        params.setExport(false);//是否生成导出接口
+        params.setOutMainDir(true);//是否生成在主目录,前期测试可设置成false
+        params.setDs(ds);
+
+        IApiGeneratorService apiGeneratorService = new ApiGeneratorServiceImpl();
+
+        apiGeneratorService.generateCodes(params);
+    }
 }