1811872455@163.com 3 недель назад
Родитель
Сommit
e58ee7882a

+ 1 - 1
storlead-centre-api/src/main/java/com/storlead/centre/ChenkqGeneratorCodeConfig.java

@@ -128,7 +128,7 @@ public class ChenkqGeneratorCodeConfig {
         strategy.setColumnNaming(NamingStrategy.underline_to_camel);
 
         // 公共父类
-        strategy.setSuperEntityClass("com.storlead.frameworkmybatis.entity.SysBaseField");
+        strategy.setSuperEntityClass("com.storlead.framework.mybatis.entity.SysBaseField");
         // 写于父类中的公共字段
         strategy.setSuperEntityColumns("create_by","update_by","create_time","update_time","is_delete","enabled","owner_by","sort");
         strategy.setControllerMappingHyphenStyle(true);

+ 0 - 20
storlead-centre-service/src/main/java/com/storlead/centre/controller/AttendanceSignRecordController.java

@@ -1,20 +0,0 @@
-package com.storlead.centre.controller;
-
-
-import org.springframework.web.bind.annotation.RequestMapping;
-
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * OA系统签到/签退记录表 前端控制器
- * </p>
- *
- * @author chenkq
- * @since 2025-12-25
- */
-@RestController
-@RequestMapping("/attendance-sign-record-entity")
-public class AttendanceSignRecordController {
-
-}

+ 0 - 99
storlead-centre-service/src/main/java/com/storlead/centre/entity/AttendanceSignRecordEntity.java

@@ -1,99 +0,0 @@
-package com.storlead.centre.entity;
-
-import java.math.BigDecimal;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.IdType;
-import java.time.LocalDate;
-import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.storlead.framework.mybatis.entity.SysBaseField;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-import lombok.experimental.Accessors;
-
-/**
- * <p>
- * OA系统签到/签退记录表
- * </p>
- *
- * @author chenkq
- * @since 2025-12-25
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@Accessors(chain = true)
-@TableName("attendance_sign_record")
-@ApiModel(value="AttendanceSignRecordEntity对象", description="OA系统签到/签退记录表")
-public class AttendanceSignRecordEntity extends SysBaseField {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键ID")
-    @TableId(value = "id", type = IdType.AUTO)
-    private Long id;
-
-    @ApiModelProperty(value = "员工ID")
-    @TableField("user_id")
-    private Long userId;
-
-    @ApiModelProperty(value = "员工姓名(冗余)")
-    @TableField("user_name")
-    private String userName;
-
-    @ApiModelProperty(value = "部门ID")
-    @TableField("dept_id")
-    private Long deptId;
-
-    @ApiModelProperty(value = "部门名称(冗余)")
-    @TableField("dept_name")
-    private String deptName;
-
-    @ApiModelProperty(value = "签到日期")
-    @TableField("sign_date")
-    private LocalDate signDate;
-
-    @ApiModelProperty(value = "签到/签退时间")
-    @TableField("sign_time")
-    private LocalDateTime signTime;
-
-    @ApiModelProperty(value = "类型:1签到 2签退")
-    @TableField("sign_type")
-    private Integer signType;
-
-    @ApiModelProperty(value = "是否同步OA")
-    @TableField("sync_oa")
-    private Integer syncOa;
-
-    @ApiModelProperty(value = "来源:1OA 2APP 3H5")
-    @TableField("sign_source")
-    private Integer signSource;
-
-    @ApiModelProperty(value = "设备类型:PC / Android / iOS")
-    @TableField("device_type")
-    private String deviceType;
-
-    @ApiModelProperty(value = "设备标识")
-    @TableField("device_id")
-    private String deviceId;
-
-    @ApiModelProperty(value = "签到地址")
-    @TableField("sign_address")
-    private String signAddress;
-
-    @ApiModelProperty(value = "经度")
-    @TableField("longitude")
-    private BigDecimal longitude;
-
-    @ApiModelProperty(value = "纬度")
-    @TableField("latitude")
-    private BigDecimal latitude;
-
-    @ApiModelProperty(value = "备注")
-    @TableField("remark")
-    private String remark;
-
-
-}

+ 0 - 16
storlead-centre-service/src/main/java/com/storlead/centre/mapper/AttendanceSignRecordMapper.java

@@ -1,16 +0,0 @@
-package com.storlead.centre.mapper;
-
-import com.storlead.centre.entity.AttendanceSignRecordEntity;
-import com.storlead.framework.mybatis.mapper.MyBaseMapper;
-
-/**
- * <p>
- * OA系统签到/签退记录表 Mapper 接口
- * </p>
- *
- * @author chenkq
- * @since 2025-12-25
- */
-public interface AttendanceSignRecordMapper extends MyBaseMapper<AttendanceSignRecordEntity> {
-
-}

+ 0 - 46
storlead-centre-service/src/main/java/com/storlead/centre/mapper/xml/AttendanceSignRecordMapper.xml

@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.centre.mapper.AttendanceSignRecordMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.storlead.centre.entity.AttendanceSignRecordEntity">
-        <id column="id" property="id" />
-    <result column="sort" property="sort" />
-    <result column="create_time" property="createTime" />
-    <result column="update_by" property="updateBy" />
-    <result column="update_time" property="updateTime" />
-    <result column="is_delete" property="isDelete" />
-    <result column="enabled" property="enabled" />
-    <result column="create_by" property="createBy" />
-    <result column="owner_by" property="ownerBy" />
-        <result column="user_id" property="userId" />
-        <result column="user_name" property="userName" />
-        <result column="dept_id" property="deptId" />
-        <result column="dept_name" property="deptName" />
-        <result column="sign_date" property="signDate" />
-        <result column="sign_time" property="signTime" />
-        <result column="sign_type" property="signType" />
-        <result column="sync_oa" property="syncOa" />
-        <result column="sign_source" property="signSource" />
-        <result column="device_type" property="deviceType" />
-        <result column="device_id" property="deviceId" />
-        <result column="sign_address" property="signAddress" />
-        <result column="longitude" property="longitude" />
-        <result column="latitude" property="latitude" />
-        <result column="remark" property="remark" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        sort,
-        create_time,
-        update_by,
-        update_time,
-        is_delete,
-        enabled,
-        create_by,
-        owner_by,
-        id, user_id, user_name, dept_id, dept_name, sign_date, sign_time, sign_type, sync_oa, sign_source, device_type, device_id, sign_address, longitude, latitude, remark
-    </sql>
-
-</mapper>

+ 0 - 33
storlead-centre-service/src/main/java/com/storlead/centre/mapper/xml/SysAppInfoMapper.xml

@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.centre.mapper.SysAppInfoMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.storlead.centre.pojo.entity.SysAppInfoEntity">
-        <id column="id" property="id" />
-    <result column="sort" property="sort" />
-    <result column="enabled" property="enabled" />
-    <result column="create_by" property="createBy" />
-    <result column="create_time" property="createTime" />
-    <result column="update_by" property="updateBy" />
-    <result column="update_time" property="updateTime" />
-        <result column="app_name" property="appName" />
-        <result column="app_code" property="appCode" />
-        <result column="app_secret" property="appSecret" />
-        <result column="redirect_uri" property="redirectUri" />
-        <result column="homepage_url" property="homepageUrl" />
-        <result column="description" property="description" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        sort,
-        enabled,
-        create_by,
-        create_time,
-        update_by,
-        update_time,
-        id, app_name, app_code, app_secret, redirect_uri, homepage_url, description
-    </sql>
-
-</mapper>

+ 0 - 32
storlead-centre-service/src/main/java/com/storlead/centre/mapper/xml/SysAppPageInfoMapper.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.centre.mapper.SysAppPageInfoMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.storlead.centre.entity.SysAppPageInfoEntity">
-        <id column="id" property="id" />
-    <result column="sort" property="sort" />
-    <result column="enabled" property="enabled" />
-    <result column="create_by" property="createBy" />
-    <result column="create_time" property="createTime" />
-    <result column="update_by" property="updateBy" />
-    <result column="update_time" property="updateTime" />
-        <result column="app_id" property="appId" />
-        <result column="page_name" property="pageName" />
-        <result column="page_code" property="pageCode" />
-        <result column="redirect_uri" property="redirectUri" />
-        <result column="description" property="description" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        sort,
-        enabled,
-        create_by,
-        create_time,
-        update_by,
-        update_time,
-        id, app_id, page_name, page_code, redirect_uri, description
-    </sql>
-
-</mapper>

+ 139 - 0
storlead-centre-service/src/main/java/com/storlead/centre/pojo/CheckinDataBo.java

@@ -0,0 +1,139 @@
+package com.storlead.centre.pojo;
+
+import com.alibaba.fastjson.JSON;
+import com.storlead.centre.entity.AttendanceSignRecordEntity;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.util.CollectionUtils;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @program: storlead-centre-platform
+ * @description:
+ * @author: chenkq
+ * @create: 2026-01-04 15:23
+ */
+@Data
+public class CheckinDataBo implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "用户唯一标识(企微 / 系统用户ID)",example = "ChenKaiQiang")
+    private String userId;
+
+    @ApiModelProperty(value = "考勤组名称",example = "领存技术Attendance")
+    private String groupName;
+
+    @ApiModelProperty(
+            value = "打卡类型(字典)",
+            notes = "CHECKIN_TYPE:\n" +
+                    "ON_DUTY - 上班打卡\n" +
+                    "OFF_DUTY - 下班打卡",
+            example = "上班打卡"
+    )
+    private String checkinType;
+
+    @ApiModelProperty(
+            value = "异常类型(字典)",
+            notes = "EXCEPTION_TYPE:\n" +
+                    "LATE - 迟到\n" +
+                    "EARLY - 早退\n" +
+                    "ABSENT - 缺卡\n" +
+                    "NORMAL - 正常(为空或NORMAL)",
+            example = ""
+    )
+    private String exceptionType;
+
+    @ApiModelProperty(
+            value = "打卡时间(Unix时间戳,秒)",
+            example = "1767490002"
+    )
+    private Long checkinTime;
+
+    @ApiModelProperty(
+            value = "打卡地点名称",
+            example = "领存技术"
+    )
+    private String locationTitle;
+
+    @ApiModelProperty(
+            value = "打卡地点详细地址",
+            example = "广东省深圳市宝安区新安街道兴业路金利通金融中心"
+    )
+    private String locationDetail;
+
+    @ApiModelProperty(
+            value = "WiFi 名称",
+            notes = "未连接公司WiFi时通常为固定文案",
+            example = "未连接到公司指定WiFi"
+    )
+    private String wifiName;
+
+    @ApiModelProperty(
+            value = "WiFi MAC 地址",
+            example = "00:dd:b6:e5:98:5a"
+    )
+    private String wifiMac;
+
+    @ApiModelProperty(value = "打卡备注说明",example = "")
+    private String notes;
+
+    @ApiModelProperty(value = "打卡照片/视频媒体ID列表",example = "[]")
+    private List<String> mediaIds;
+
+    @ApiModelProperty(
+            value = "位置打卡地点纬度,是实际纬度的1000000倍,与腾讯地图一致采用GCJ-02坐标系统标准",
+            example = "22551739"
+    )
+    private String lat;
+
+    @ApiModelProperty(value = "位置打卡地点纬度,是实际纬度的1000000倍,与腾讯地图一致采用GCJ-02坐标系统标准",
+            example = "113879515")
+    private String lng;
+
+    @ApiModelProperty(value = "设备唯一标识",example = "1f758b0ea9f2b33a"    )
+    private String deviceId;
+
+    @ApiModelProperty(value = "考勤组ID",
+            example = "1")
+    private Long groupId;
+
+
+
+    public static List<AttendanceSignRecordEntity> appPageInfoListToAppPageTreeVoList(List<CheckinDataBo> vals) {
+        if (CollectionUtils.isEmpty(vals)) {
+            return null;
+        }
+        List<AttendanceSignRecordEntity> departmentTrees = vals.stream().map(CheckinDataBo::appPageInfoListToAppPageTreeVo).filter(obj -> !Objects.isNull(obj)).collect(Collectors.toList());
+        return departmentTrees;
+    }
+
+    public static AttendanceSignRecordEntity  appPageInfoListToAppPageTreeVo(CheckinDataBo bo) {
+        if (null == bo) {
+            return null;
+        }
+        AttendanceSignRecordEntity entity = new AttendanceSignRecordEntity();
+
+        entity.setWxUserId(bo.getUserId());
+        entity.setGroupId(bo.getGroupId());
+        entity.setGroupName(bo.getGroupName());
+        entity.setCheckinType(bo.getCheckinType());
+        entity.setExceptionType(bo.getExceptionType());
+        entity.setCheckinTime(bo.getCheckinTime());
+        entity.setLocationTitle(bo.getLocationTitle());
+        entity.setLocationDetail(bo.getLocationDetail());
+        entity.setWifiName(bo.getWifiName());
+        entity.setWifiMac(bo.getWifiMac());
+        entity.setLatitude(bo.getLat());
+        entity.setLongitude(bo.getLat());
+        entity.setDeviceId(bo.getDeviceId());
+        // 媒体ID列表(如果是 JSON 存库,这里可序列化)
+        if (!CollectionUtils.isEmpty(bo.getMediaIds())) {
+            entity.setMediaIds(JSON.toJSONString(bo.getMediaIds()));
+        }
+        return entity;
+    }
+}

+ 0 - 16
storlead-centre-service/src/main/java/com/storlead/centre/service/AttendanceSignRecordService.java

@@ -1,16 +0,0 @@
-package com.storlead.centre.service;
-
-import com.storlead.centre.entity.AttendanceSignRecordEntity;
-import com.storlead.framework.mybatis.service.MyBaseService;
-
-/**
- * <p>
- * OA系统签到/签退记录表 服务类
- * </p>
- *
- * @author chenkq
- * @since 2025-12-25
- */
-public interface AttendanceSignRecordService extends MyBaseService<AttendanceSignRecordEntity> {
-
-}

+ 0 - 20
storlead-centre-service/src/main/java/com/storlead/centre/service/impl/AttendanceSignRecordServiceImpl.java

@@ -1,20 +0,0 @@
-package com.storlead.centre.service.impl;
-
-import com.storlead.centre.entity.AttendanceSignRecordEntity;
-import com.storlead.centre.mapper.AttendanceSignRecordMapper;
-import com.storlead.centre.service.AttendanceSignRecordService;
-import com.storlead.framework.mybatis.service.impl.MyBaseServiceImpl;
-import org.springframework.stereotype.Service;
-
-/**
- * <p>
- * OA系统签到/签退记录表 服务实现类
- * </p>
- *
- * @author chenkq
- * @since 2025-12-25
- */
-@Service
-public class AttendanceSignRecordServiceImpl extends MyBaseServiceImpl<AttendanceSignRecordMapper, AttendanceSignRecordEntity> implements AttendanceSignRecordService {
-
-}

+ 0 - 46
storlead-centre-service/src/main/resources/mapper/AttendanceSignRecordMapper.xml

@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.storlead.centre.mapper.AttendanceSignRecordMapper">
-
-    <!-- 通用查询映射结果 -->
-    <resultMap id="BaseResultMap" type="com.storlead.centre.entity.AttendanceSignRecordEntity">
-        <id column="id" property="id" />
-    <result column="sort" property="sort" />
-    <result column="create_time" property="createTime" />
-    <result column="update_by" property="updateBy" />
-    <result column="update_time" property="updateTime" />
-    <result column="is_delete" property="isDelete" />
-    <result column="enabled" property="enabled" />
-    <result column="create_by" property="createBy" />
-    <result column="owner_by" property="ownerBy" />
-        <result column="user_id" property="userId" />
-        <result column="user_name" property="userName" />
-        <result column="dept_id" property="deptId" />
-        <result column="dept_name" property="deptName" />
-        <result column="sign_date" property="signDate" />
-        <result column="sign_time" property="signTime" />
-        <result column="sign_type" property="signType" />
-        <result column="sync_oa" property="syncOa" />
-        <result column="sign_source" property="signSource" />
-        <result column="device_type" property="deviceType" />
-        <result column="device_id" property="deviceId" />
-        <result column="sign_address" property="signAddress" />
-        <result column="longitude" property="longitude" />
-        <result column="latitude" property="latitude" />
-        <result column="remark" property="remark" />
-    </resultMap>
-
-    <!-- 通用查询结果列 -->
-    <sql id="Base_Column_List">
-        sort,
-        create_time,
-        update_by,
-        update_time,
-        is_delete,
-        enabled,
-        create_by,
-        owner_by,
-        id, user_id, user_name, dept_id, dept_name, sign_date, sign_time, sign_type, sync_oa, sign_source, device_type, device_id, sign_address, longitude, latitude, remark
-    </sql>
-
-</mapper>

+ 1 - 0
storlead-wx/src/main/java/com/storlead/wx/util/CorpWechatUtil.java

@@ -173,6 +173,7 @@ public class CorpWechatUtil {
      */
     public static List<SummaryInfoVO> getUserCheckinDayData(@NotNull String url, @NotNull String accessToken, List<String> useridlist) {
 
+
         Map<String,Object> paramMap = new HashMap<>();
         paramMap.put("starttime","1599062400");
         paramMap.put("endtime","1599062400");