考勤打卡同步方法修改

master
Yangwl 3 months ago
parent 39575abf1a
commit d110ff155e

@ -1,12 +1,16 @@
package com.op.common.core.utils.http; package com.op.common.core.utils.http;
import com.alibaba.fastjson2.JSONObject;
import com.op.common.core.constant.Constants; import com.op.common.core.constant.Constants;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.net.ssl.*; import javax.net.ssl.*;
import java.io.*; import java.io.*;
import java.net.*; import java.net.*;
import java.nio.charset.StandardCharsets;
import java.security.cert.X509Certificate; import java.security.cert.X509Certificate;
import java.util.Map;
import java.util.StringJoiner;
/** /**
* http * http
@ -141,6 +145,70 @@ public class HttpUtils {
} }
} }
public static String sendPostForm(String requestUrl, Map<String, String> jsonParams) throws Exception {
URL url = new URL(requestUrl);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
// 设置JSON请求头
con.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
con.setRequestProperty("Accept", "application/json"); // 可选表示期望返回JSON
con.setDoOutput(true);
// 将Map参数转换为JSON字符串使用FastJSON、Jackson等库
String jsonInputString = JSONObject.toJSONString(jsonParams);
// 发送JSON数据
try (OutputStream os = con.getOutputStream()) {
byte[] input = jsonInputString.getBytes(StandardCharsets.UTF_8);
os.write(input, 0, input.length);
}
// 读取响应
try (BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
return response.toString();
}
}
public static String sendPostWithFormData(String requestUrlWithParams, String formData) throws Exception {
// 假设requestUrlWithParams已经是类似这样的格式http://lj.lanju.cn:8801/outside/api/mes/attendanceRecord/today/list.do?day=2025-03-19
// 但注意这个查询参数对于POST请求的主体内容不是必需的它可能会被服务器忽略。
URL url = new URL(requestUrlWithParams);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
// 设置请求方法为POST
con.setRequestMethod("POST");
// 对于表单数据应使用application/x-www-form-urlencoded
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
// 通常不需要设置Accept为application/json除非你知道服务器会返回JSON响应
// con.setRequestProperty("Accept", "application/json"); // 可选,根据需要设置
// 允许输出请求体
con.setDoOutput(true);
// 发送请求体数据(键值对格式)
try (OutputStream os = con.getOutputStream()) {
byte[] input = formData.getBytes("utf-8");
os.write(input, 0, input.length);
}
// 读取并处理响应
try (BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))) {
StringBuilder response = new StringBuilder();
String responseLine;
while ((responseLine = br.readLine()) != null) {
response.append(responseLine.trim());
}
return response.toString();
}
}
/** /**
* URL POST * URL POST
* *

@ -1,5 +1,6 @@
package com.op.system.service.impl; package com.op.system.service.impl;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -9,7 +10,7 @@ import javax.validation.Validator;
import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.JSONObject;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
import com.op.common.core.domain.R; import com.op.common.core.domain.R;
import com.op.common.core.utils.DateUtils; import com.op.common.core.utils.DateUtils;
@ -17,8 +18,7 @@ import com.op.common.core.utils.http.HttpUtils;
import com.op.common.core.web.domain.AjaxResult; import com.op.common.core.web.domain.AjaxResult;
import com.op.system.api.RemoteOpenService; import com.op.system.api.RemoteOpenService;
import com.op.system.api.domain.quality.HRInfo; import com.op.system.api.domain.quality.HRInfo;
import com.op.system.api.domain.quality.OAInfo;
import com.op.system.api.domain.sap.SapWorkCenter;
import com.op.system.domain.*; import com.op.system.domain.*;
import com.op.system.mapper.*; import com.op.system.mapper.*;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
@ -28,6 +28,7 @@ import org.apache.ibatis.session.SqlSessionFactory;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -45,6 +46,7 @@ import com.op.system.service.ISysUserService;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
/** /**
* *
* *
@ -83,6 +85,9 @@ public class SysUserServiceImpl implements ISysUserService {
@Autowired @Autowired
private RemoteOpenService remoteOpenService; private RemoteOpenService remoteOpenService;
@Value("${hr.attendanceRecordUrl}")
private String attendanceRecordUrl;
/** /**
* *
* *
@ -661,29 +666,15 @@ public class SysUserServiceImpl implements ISysUserService {
} }
@Override @Override
public R syncClockInRecord() { public R syncClockInRecord() {
DynamicDataSourceContextHolder.push("ds_1000");// 这是数据源的key
try { try {
/*从接口获取人员打卡信息*/
// 获取当前日期
Calendar calendar = Calendar.getInstance();
// 定义日期格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化日期
String formattedDate = sdf.format(calendar.getTime());
JSONObject jsonObject = new JSONObject();
jsonObject.put("day", formattedDate);
// 将 JSON 对象转换为字符串
String jsonString = jsonObject.toString();
DynamicDataSourceContextHolder.push("ds_1000");
// 调用 sendPost 方法(确保此方法内部使用 POST 方法发送数据) // 调用 sendPost 方法(确保此方法内部使用 POST 方法发送数据)
String url = "http://lj.lanju.cn:8801/outside/api/mes/attendanceRecord/today/list.do"; Map param=new HashMap();
String result = HttpUtils.sendPostWechart(url, jsonString); param.put("day",DateUtils.getDate());
String result = HttpUtils.sendPostForm(attendanceRecordUrl, param);
List<MesClockRecord> mesClockRecordList =JSONArray.parseArray(result,MesClockRecord.class); List<MesClockRecord> mesClockRecordList =JSONArray.parseArray(result,MesClockRecord.class);
SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<MesClockRecord> clockRecordList = mesClockRecordList.stream().map(mesClockRecord -> { List<MesClockRecord> clockRecordList = mesClockRecordList.stream().map(mesClockRecord -> {
String ClockTime=mesClockRecord.getDay()+ " " +mesClockRecord.getTime(); String ClockTime=mesClockRecord.getDay()+ " " +mesClockRecord.getTime();
@ -697,7 +688,6 @@ public class SysUserServiceImpl implements ISysUserService {
}).collect(Collectors.toList()); }).collect(Collectors.toList());
// 处理响应结果 // 处理响应结果
batchInsert(clockRecordList); batchInsert(clockRecordList);
System.out.println("服务器响应: " + clockRecordList); System.out.println("服务器响应: " + clockRecordList);
return R.ok(result); return R.ok(result);
}catch (Exception e) { }catch (Exception e) {
@ -707,6 +697,7 @@ public class SysUserServiceImpl implements ISysUserService {
} }
@Autowired // 关键:注入 SqlSessionFactory @Autowired // 关键:注入 SqlSessionFactory
private SqlSessionFactory sqlSessionFactory; private SqlSessionFactory sqlSessionFactory;

Loading…
Cancel
Save