From 95e16a3a6877d104d61cb0f99321a31784fcceda Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期二, 23 十二月 2025 11:13:02 +0800
Subject: [PATCH] 111

---
 src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java       |   71 ++++++++++
 src/main/java/com/gs/dingtalk/service/QwCheckinDataService.java          |   47 ++++++
 src/main/java/com/gs/dingtalk/service/impl/QwCheckinDataServiceImpl.java |  144 ++++++++++++++++++++
 src/main/java/com/gs/dingtalk/entity/QwCheckinData.java                  |  130 ++++++++++++++++++
 src/main/java/com/gs/dingtalk/mapper/QwCheckinDataMapper.java            |   12 +
 src/main/resources/mapper/QwCheckinDataMapper.xml                        |    7 +
 6 files changed, 411 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/gs/dingtalk/entity/QwCheckinData.java b/src/main/java/com/gs/dingtalk/entity/QwCheckinData.java
new file mode 100644
index 0000000..793edef
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/entity/QwCheckinData.java
@@ -0,0 +1,130 @@
+package com.gs.dingtalk.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 浼佷笟寰俊鎵撳崱鏁版嵁
+ * @TableName QW_CHECKIN_DATA
+ */
+@TableName(value = "QW_CHECKIN_DATA")
+@Data
+@KeySequence(value = "SEQ_QW_CHECKIN_DATA", dbType = DbType.ORACLE)
+public class QwCheckinData implements Serializable {
+    @TableField(exist = false)
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 涓婚敭ID
+     */
+    @TableId
+    private Long id;
+
+    /**
+     * 鐢ㄦ埛id
+     */
+    private String userid;
+
+    /**
+     * 鎵撳崱瑙勫垯鍚嶇О
+     */
+    private String groupname;
+
+    /**
+     * 鎵撳崱绫诲瀷锛氫笂鐝墦鍗★紝涓嬬彮鎵撳崱锛屽鍑烘墦鍗★紝浠呰褰曟墦鍗℃椂闂村拰浣嶇疆
+     */
+    private String checkinType;
+
+    /**
+     * 寮傚父绫诲瀷锛氭椂闂村紓甯革紝鍦扮偣寮傚父锛屾湭鎵撳崱锛寃ifi寮傚父锛岄潪甯哥敤璁惧锛堝涓紓甯镐互鍒嗗彿闂撮殧锛�
+     */
+    private String exceptionType;
+
+    /**
+     * 鎵撳崱鏃堕棿锛圲nix鏃堕棿鎴筹級
+     */
+    private Long checkinTime;
+
+    /**
+     * 鎵撳崱鏃堕棿锛堣浆鎹㈠悗鐨勬棩鏈熸椂闂达級
+     */
+    private Date checkinDate;
+
+    /**
+     * 鎵撳崱鍦扮偣title
+     */
+    private String locationTitle;
+
+    /**
+     * 鎵撳崱鍦扮偣璇︽儏
+     */
+    private String locationDetail;
+
+    /**
+     * 鎵撳崱wifi鍚嶇О
+     */
+    private String wifiname;
+
+    /**
+     * 鎵撳崱澶囨敞
+     */
+    private String notes;
+
+    /**
+     * 鎵撳崱鐨凪AC鍦板潃/bssid
+     */
+    private String wifimac;
+
+    /**
+     * 鎵撳崱鐨勯檮浠秏edia_id锛堝涓互閫楀彿鍒嗛殧锛�
+     */
+    private String mediaids;
+
+    /**
+     * 浣嶇疆鎵撳崱鍦扮偣绾害锛堝疄闄呯含搴︾殑1000000鍊嶏紝GCJ-02鍧愭爣绯伙級
+     */
+    private Long lat;
+
+    /**
+     * 浣嶇疆鎵撳崱鍦扮偣缁忓害锛堝疄闄呯粡搴︾殑1000000鍊嶏紝GCJ-02鍧愭爣绯伙級
+     */
+    private Long lng;
+
+    /**
+     * 鎵撳崱璁惧id
+     */
+    private String deviceid;
+
+    /**
+     * 鏍囧噯鎵撳崱鏃堕棿锛圲nix鏃堕棿鎴筹級
+     */
+    private Long schCheckinTime;
+
+    /**
+     * 鏍囧噯鎵撳崱鏃堕棿锛堣浆鎹㈠悗鐨勬棩鏈熸椂闂达級
+     */
+    private Date schCheckinDate;
+
+    /**
+     * 瑙勫垯id
+     */
+    private Long groupid;
+
+    /**
+     * 鐝id
+     */
+    private Long scheduleId;
+
+    /**
+     * 鏃舵id
+     */
+    private Long timelineId;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    private Date createTime;
+}
diff --git a/src/main/java/com/gs/dingtalk/mapper/QwCheckinDataMapper.java b/src/main/java/com/gs/dingtalk/mapper/QwCheckinDataMapper.java
new file mode 100644
index 0000000..2f36f54
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/mapper/QwCheckinDataMapper.java
@@ -0,0 +1,12 @@
+package com.gs.dingtalk.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.gs.dingtalk.entity.QwCheckinData;
+
+/**
+ * @description 閽堝琛ㄣ�怮W_CHECKIN_DATA銆戜紒涓氬井淇℃墦鍗℃暟鎹殑鏁版嵁搴撴搷浣淢apper
+ * @Entity com.gs.dingtalk.entity.QwCheckinData
+ */
+public interface QwCheckinDataMapper extends BaseMapper<QwCheckinData> {
+
+}
diff --git a/src/main/java/com/gs/dingtalk/service/QwCheckinDataService.java b/src/main/java/com/gs/dingtalk/service/QwCheckinDataService.java
new file mode 100644
index 0000000..88bef72
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/QwCheckinDataService.java
@@ -0,0 +1,47 @@
+package com.gs.dingtalk.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gs.dingtalk.entity.QwCheckinData;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * @description 閽堝琛ㄣ�怮W_CHECKIN_DATA銆戜紒涓氬井淇℃墦鍗℃暟鎹殑鏁版嵁搴撴搷浣淪ervice
+ */
+public interface QwCheckinDataService extends IService<QwCheckinData> {
+
+    /**
+     * 灏咰heckinData杞崲涓篞wCheckinData瀹炰綋
+     *
+     * @param checkinData 浼佷笟寰俊鎵撳崱鏁版嵁
+     * @return QwCheckinData瀹炰綋
+     */
+    QwCheckinData convertToEntity(WorkWXService.CheckinData checkinData);
+
+    /**
+     * 鎵归噺淇濆瓨鎵撳崱鏁版嵁锛堣嚜鍔ㄥ幓閲嶏級
+     *
+     * @param checkinDataList 鎵撳崱鏁版嵁鍒楄〃
+     * @return 鏂板璁板綍鏁�
+     */
+    int saveCheckinDataBatch(List<WorkWXService.CheckinData> checkinDataList);
+
+    /**
+     * 鍚屾鎸囧畾鏃堕棿鑼冨洿鍐呯殑鎵撳崱鏁版嵁鍒版暟鎹簱
+     *
+     * @param startTime 寮�濮嬫椂闂达紙Unix鏃堕棿鎴筹級
+     * @param endTime   缁撴潫鏃堕棿锛圲nix鏃堕棿鎴筹級
+     * @return 鏂板璁板綍鏁�
+     * @throws IOException 鑾峰彇鎵撳崱鏁版嵁寮傚父
+     */
+    int syncCheckinData(long startTime, long endTime) throws IOException;
+
+    /**
+     * 鍚屾鏄ㄥぉ鐨勬墦鍗℃暟鎹埌鏁版嵁搴�
+     *
+     * @return 鏂板璁板綍鏁�
+     * @throws IOException 鑾峰彇鎵撳崱鏁版嵁寮傚父
+     */
+    int syncYesterdayCheckinData() throws IOException;
+}
diff --git a/src/main/java/com/gs/dingtalk/service/impl/QwCheckinDataServiceImpl.java b/src/main/java/com/gs/dingtalk/service/impl/QwCheckinDataServiceImpl.java
new file mode 100644
index 0000000..253c852
--- /dev/null
+++ b/src/main/java/com/gs/dingtalk/service/impl/QwCheckinDataServiceImpl.java
@@ -0,0 +1,144 @@
+package com.gs.dingtalk.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.gs.dingtalk.entity.QwCheckinData;
+import com.gs.dingtalk.mapper.QwCheckinDataMapper;
+import com.gs.dingtalk.service.QwCheckinDataService;
+import com.gs.dingtalk.service.WorkWXService;
+import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @description 閽堝琛ㄣ�怮W_CHECKIN_DATA銆戜紒涓氬井淇℃墦鍗℃暟鎹殑鏁版嵁搴撴搷浣淪ervice瀹炵幇
+ */
+@Service
+@RequiredArgsConstructor
+public class QwCheckinDataServiceImpl extends ServiceImpl<QwCheckinDataMapper, QwCheckinData>
+        implements QwCheckinDataService {
+
+    private static final Logger log = LoggerFactory.getLogger(QwCheckinDataServiceImpl.class);
+
+    private final WorkWXService workWXService;
+
+    @Override
+    public QwCheckinData convertToEntity(WorkWXService.CheckinData checkinData) {
+        if (checkinData == null) {
+            return null;
+        }
+
+        QwCheckinData entity = new QwCheckinData();
+        entity.setUserid(checkinData.getUserid());
+        entity.setGroupname(checkinData.getGroupname());
+        entity.setCheckinType(checkinData.getCheckinType());
+        entity.setExceptionType(checkinData.getExceptionType());
+        entity.setCheckinTime(checkinData.getCheckinTime());
+        entity.setLocationTitle(checkinData.getLocationTitle());
+        entity.setLocationDetail(checkinData.getLocationDetail());
+        entity.setWifiname(checkinData.getWifiname());
+        entity.setNotes(checkinData.getNotes());
+        entity.setWifimac(checkinData.getWifimac());
+        entity.setDeviceid(checkinData.getDeviceid());
+
+        // 杞崲Unix鏃堕棿鎴充负Date
+        if (checkinData.getCheckinTime() != null) {
+            entity.setCheckinDate(new Date(checkinData.getCheckinTime() * 1000));
+        }
+        if (checkinData.getSchCheckinTime() != null) {
+            entity.setSchCheckinTime(checkinData.getSchCheckinTime());
+            entity.setSchCheckinDate(new Date(checkinData.getSchCheckinTime() * 1000));
+        }
+
+        // 杞崲缁忕含搴︼紙鎺ュ彛杩斿洖鐨勬槸Double锛岄渶瑕佽浆涓篖ong瀛樺偍锛�
+        if (checkinData.getLat() != null) {
+            entity.setLat(checkinData.getLat().longValue());
+        }
+        if (checkinData.getLng() != null) {
+            entity.setLng(checkinData.getLng().longValue());
+        }
+
+        // 杞崲mediaids鍒楄〃涓洪�楀彿鍒嗛殧鐨勫瓧绗︿覆
+        if (checkinData.getMediaids() != null && !checkinData.getMediaids().isEmpty()) {
+            entity.setMediaids(String.join(",", checkinData.getMediaids()));
+        }
+
+        // 杞崲groupid銆乻cheduleId銆乼imelineId
+        if (checkinData.getGroupid() != null) {
+            entity.setGroupid(checkinData.getGroupid().longValue());
+        }
+        if (checkinData.getScheduleId() != null) {
+            entity.setScheduleId(checkinData.getScheduleId().longValue());
+        }
+        if (checkinData.getTimelineId() != null) {
+            entity.setTimelineId(checkinData.getTimelineId().longValue());
+        }
+
+        entity.setCreateTime(new Date());
+        return entity;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int saveCheckinDataBatch(List<WorkWXService.CheckinData> checkinDataList) {
+        if (checkinDataList == null || checkinDataList.isEmpty()) {
+            return 0;
+        }
+
+        int insertCount = 0;
+        for (WorkWXService.CheckinData checkinData : checkinDataList) {
+            // 妫�鏌ユ槸鍚﹀凡瀛樺湪锛堟牴鎹畊serid銆乧heckin_time銆乧heckin_type鍒ゆ柇锛�
+            LambdaQueryWrapper<QwCheckinData> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(QwCheckinData::getUserid, checkinData.getUserid())
+                    .eq(QwCheckinData::getCheckinTime, checkinData.getCheckinTime())
+                    .eq(QwCheckinData::getCheckinType, checkinData.getCheckinType());
+
+            if (this.count(queryWrapper) == 0) {
+                QwCheckinData entity = convertToEntity(checkinData);
+                this.save(entity);
+                insertCount++;
+            }
+        }
+
+        log.info("鎵归噺淇濆瓨鎵撳崱鏁版嵁瀹屾垚锛屾�绘暟: {}, 鏂板: {}, 璺宠繃(宸插瓨鍦�): {}",
+                checkinDataList.size(), insertCount, checkinDataList.size() - insertCount);
+        return insertCount;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int syncCheckinData(long startTime, long endTime) throws IOException {
+        log.info("寮�濮嬪悓姝ユ墦鍗℃暟鎹紝鏃堕棿鑼冨洿: {} - {}", new Date(startTime * 1000), new Date(endTime * 1000));
+
+        List<WorkWXService.CheckinData> checkinDataList = workWXService.getCheckinDataByQwStaff(startTime, endTime);
+
+        if (checkinDataList == null || checkinDataList.isEmpty()) {
+            log.info("鏈幏鍙栧埌鎵撳崱鏁版嵁");
+            return 0;
+        }
+
+        log.info("鑾峰彇鍒版墦鍗℃暟鎹� {} 鏉★紝寮�濮嬩繚瀛樺埌鏁版嵁搴�", checkinDataList.size());
+        return saveCheckinDataBatch(checkinDataList);
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public int syncYesterdayCheckinData() throws IOException {
+        long currentTime = System.currentTimeMillis() / 1000;
+        long oneDaySeconds = 86400;
+
+        // 鏄ㄥぉ寮�濮嬫椂闂达紙00:00:00锛�
+        long startTime = ((currentTime / oneDaySeconds) - 1) * oneDaySeconds;
+        // 鏄ㄥぉ缁撴潫鏃堕棿锛�23:59:59锛�
+        long endTime = startTime + oneDaySeconds - 1;
+
+        log.info("鍚屾鏄ㄥぉ鎵撳崱鏁版嵁锛屾椂闂磋寖鍥�: {} - {}", new Date(startTime * 1000), new Date(endTime * 1000));
+        return syncCheckinData(startTime, endTime);
+    }
+}
diff --git a/src/main/resources/mapper/QwCheckinDataMapper.xml b/src/main/resources/mapper/QwCheckinDataMapper.xml
new file mode 100644
index 0000000..8aeb236
--- /dev/null
+++ b/src/main/resources/mapper/QwCheckinDataMapper.xml
@@ -0,0 +1,7 @@
+<?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.gs.dingtalk.mapper.QwCheckinDataMapper">
+
+</mapper>
diff --git a/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java b/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
index 9a25bb6..61713ad 100644
--- a/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
+++ b/src/test/java/com/gs/dingtalk/DeviceReceivingApplicationTests.java
@@ -4,6 +4,7 @@
 import com.gs.dingtalk.config.URLEncoder;
 import com.gs.dingtalk.entity.QwStaff;
 import com.gs.dingtalk.mapper.QwStaffMapper;
+import com.gs.dingtalk.service.QwCheckinDataService;
 import com.gs.dingtalk.service.SendDingtalkService;
 import com.gs.dingtalk.service.SimpleExample;
 import com.gs.dingtalk.service.VwCjScSjTsBbService;
@@ -29,6 +30,9 @@
 
     @Autowired
     private QwStaffMapper qwStaffMapper;
+
+    @Autowired
+    private QwCheckinDataService qwCheckinDataService;
 
     /**
      * 娴嬭瘯瀵煎嚭鐢熶骇鏁版嵁骞跺彂閫侀拤閽夋秷鎭�
@@ -67,6 +71,68 @@
         // 3. 鎺ュ彛杩斿洖鏈�澶�3000鏉℃墦鍗℃暟鎹�
         // 4. 鏍囧噯鎵撳崱鏃堕棿鍙浜庡浐瀹氭帓鐝拰鑷畾涔夋帓鐝袱绉嶇被鍨嬫湁鏁�
         // 5. 鎺ュ彛璋冪敤棰戠巼闄愬埗涓�600娆�/鍒嗛挓锛堝凡鍦⊿ervice灞傚疄鐜版壒娆¢棿寤惰繜锛�
+
+        //鎺ュ彛杩斿洖鐨勫師濮嬫暟鎹�
+        //{
+        //   "errcode":0,
+        //   "errmsg":"ok",
+        //   "checkindata": [{
+        //		"userid" : "james",
+        //		"groupname" : "鎵撳崱涓�缁�",
+        //		"checkin_type" : "涓婄彮鎵撳崱",
+        //		"exception_type" : "鍦扮偣寮傚父",
+        //		"checkin_time" : 1492617610,
+        //		"location_title" : "渚濇緶搴�",
+        //		"location_detail" : "鍥涘窛鐪佹垚閮藉競姝︿警鍖虹泭宸炲ぇ閬撲腑娈�784鍙烽檮杩�",
+        //		"wifiname" : "鍔炲叕涓�鍖�",
+        //		"notes" : "璺笂鍫佃溅锛岃繜鍒颁簡5鍒嗛挓",
+        //		"wifimac" : "3c:46:d8:0c:7a:70",
+        //		"mediaids":["WWCISP_G8PYgRaOVHjXWUWFqchpBqqqUpGj0OyR9z6WTwhnMZGCPHxyviVstiv_2fTG8YOJq8L8zJT2T2OvTebANV-2MQ"],
+        //		"sch_checkin_time" : 1492617610,
+        //		"groupid" : 1,
+        //		"schedule_id" : 0,
+        //		"timeline_id" : 2
+        //	},{
+        //		"userid" : "paul",
+        //		"groupname" : "鎵撳崱浜岀粍",
+        //		"checkin_type" : "澶栧嚭鎵撳崱",
+        //		"exception_type" : "鏃堕棿寮傚父",
+        //		"checkin_time" : 1492617620,
+        //		"location_title" : "閲嶅簡鍑哄彛鍔犲伐鍖�",
+        //		"location_detail" : "閲嶅簡甯傛笣鍖楀尯閲戞笣澶ч亾101鍙烽噾娓濆ぇ閬�",
+        //		"wifiname" : "鍔炲叕瀹や簩鍖�",
+        //		"notes" : "",
+        //		"wifimac" : "3c:46:d8:0c:7a:71",
+        //		"mediaids":["WWCISP_G8PYgRaOVHjXWUWFqchpBqqqUpGj0OyR9z6WTwhnMZGCPHxyviVstiv_2fTG8YOJq8L8zJT2T2OvTebANV-2MQ"],
+        //		"lat": 30547645,
+        //        "lng": 104063236,
+        //		"deviceid":"E5FA89F6-3926-4972-BE4F-4A7ACF4701E2",
+        //		"sch_checkin_time" : 1492617610,
+        //		"groupid" : 2,
+        //		"schedule_id" : 3,
+        //		"timeline_id" : 1
+        //	}]
+        //}
+
+        //checkindata鐨勫瓧娈佃鏄�
+        //userid	鐢ㄦ埛id
+        //groupname	鎵撳崱瑙勫垯鍚嶇О
+        //checkin_type	鎵撳崱绫诲瀷銆傚瓧绗︿覆锛岀洰鍓嶆湁锛氫笂鐝墦鍗★紝涓嬬彮鎵撳崱锛屽鍑烘墦鍗★紝浠呰褰曟墦鍗℃椂闂村拰浣嶇疆
+        //exception_type	寮傚父绫诲瀷锛屽瓧绗︿覆锛屽寘鎷細鏃堕棿寮傚父锛屽湴鐐瑰紓甯革紝鏈墦鍗★紝wifi寮傚父锛岄潪甯哥敤璁惧銆傚鏋滄湁澶氫釜寮傚父锛屼互鍒嗗彿闂撮殧
+        //checkin_time	鎵撳崱鏃堕棿銆俇nix鏃堕棿鎴�
+        //location_title	鎵撳崱鍦扮偣title
+        //location_detail	鎵撳崱鍦扮偣璇︽儏
+        //wifiname	鎵撳崱wifi鍚嶇О
+        //notes	鎵撳崱澶囨敞
+        //wifimac	鎵撳崱鐨凪AC鍦板潃/bssid
+        //mediaids	鎵撳崱鐨勯檮浠秏edia_id锛屽彲浣跨敤media/get鑾峰彇闄勪欢
+        //lat	浣嶇疆鎵撳崱鍦扮偣绾害锛屾槸瀹為檯绾害鐨�1000000鍊嶏紝涓庤吘璁湴鍥句竴鑷撮噰鐢℅CJ-02鍧愭爣绯荤粺鏍囧噯
+        //lng	浣嶇疆鎵撳崱鍦扮偣缁忓害锛屾槸瀹為檯缁忓害鐨�1000000鍊嶏紝涓庤吘璁湴鍥句竴鑷撮噰鐢℅CJ-02鍧愭爣绯荤粺鏍囧噯
+        //deviceid	鎵撳崱璁惧id
+        //sch_checkin_time	鏍囧噯鎵撳崱鏃堕棿锛屾寚姝ゆ鎵撳崱鏃堕棿瀵瑰簲鐨勬爣鍑嗕笂鐝椂闂存垨鏍囧噯涓嬬彮鏃堕棿
+        //groupid	瑙勫垯id锛岃〃绀烘墦鍗¤褰曟墍灞炶鍒欑殑id
+        //schedule_id	鐝id锛岃〃绀烘墦鍗¤褰曟墍灞炶鍒欎腑锛屾墍灞炵彮娆$殑id
+        //timeline_id	鏃舵id锛岃〃绀烘墦鍗¤褰曟墍灞炶鍒欎腑锛屾煇涓�鐝涓殑鏌愪竴鏃舵鐨刬d锛屽涓婁笅鐝椂闂翠负9:00-12:00銆�13:00-18:00鐨勭彮娆′腑锛�9:00-12:00涓哄叾涓竴缁勬椂娈�
 
         try {
             long currentTime = System.currentTimeMillis() / 1000;
@@ -110,6 +176,11 @@
                             ", 寮傚父绫诲瀷: " + data.getExceptionType() +
                             ", 鍦扮偣: " + data.getLocationDetail());
                 });
+
+                // 淇濆瓨鍒版暟鎹簱
+                System.out.println("  - 寮�濮嬩繚瀛樺埌鏁版嵁搴�...");
+                int insertCount = qwCheckinDataService.saveCheckinDataBatch(checkinDataList);
+                System.out.println("鉁� 淇濆瓨瀹屾垚锛屾柊澧炶褰曟暟: " + insertCount + ", 璺宠繃(宸插瓨鍦�): " + (checkinDataList.size() - insertCount));
             } else {
                 System.out.println("鉁� 鑾峰彇鐨勬墦鍗℃暟鎹负绌猴紙鍙兘QW_STAFF琛ㄦ棤鏁版嵁鎴栨椂闂磋寖鍥村唴鏃犳墦鍗¤褰曪級");
             }

--
Gitblit v1.9.3