diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java b/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java index 510f7622c..59e3793e3 100644 --- a/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java +++ b/op-common/op-common-core/src/main/java/com/op/common/core/utils/http/HttpUtils.java @@ -1,12 +1,16 @@ package com.op.common.core.utils.http; +import com.alibaba.fastjson2.JSONObject; import com.op.common.core.constant.Constants; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.net.ssl.*; import java.io.*; import java.net.*; +import java.nio.charset.StandardCharsets; import java.security.cert.X509Certificate; +import java.util.Map; +import java.util.StringJoiner; /** * 通用http发送方法 @@ -141,6 +145,70 @@ public class HttpUtils { } } + public static String sendPostForm(String requestUrl, Map 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方法的请求 * diff --git a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysUserServiceImpl.java b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysUserServiceImpl.java index 1357fc5c5..5a5ae8521 100644 --- a/op-modules/op-system/src/main/java/com/op/system/service/impl/SysUserServiceImpl.java +++ b/op-modules/op-system/src/main/java/com/op/system/service/impl/SysUserServiceImpl.java @@ -1,5 +1,6 @@ package com.op.system.service.impl; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; @@ -9,7 +10,7 @@ import javax.validation.Validator; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; -import com.baomidou.dynamic.datasource.annotation.DS; + import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; 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.system.api.RemoteOpenService; 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.mapper.*; import org.apache.commons.lang3.time.DateFormatUtils; @@ -28,6 +28,7 @@ import org.apache.ibatis.session.SqlSessionFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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.ServletRequestAttributes; + /** * 用户 业务层处理 * @@ -83,6 +85,9 @@ public class SysUserServiceImpl implements ISysUserService { @Autowired private RemoteOpenService remoteOpenService; + @Value("${hr.attendanceRecordUrl}") + private String attendanceRecordUrl; + /** * 根据条件分页查询用户列表 * @@ -661,29 +666,15 @@ public class SysUserServiceImpl implements ISysUserService { } @Override public R syncClockInRecord() { - DynamicDataSourceContextHolder.push("ds_1000");// 这是数据源的key 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 方法发送数据) - String url = "http://lj.lanju.cn:8801/outside/api/mes/attendanceRecord/today/list.do"; - String result = HttpUtils.sendPostWechart(url, jsonString); + Map param=new HashMap(); + param.put("day",DateUtils.getDate()); + String result = HttpUtils.sendPostForm(attendanceRecordUrl, param); List mesClockRecordList =JSONArray.parseArray(result,MesClockRecord.class); - SimpleDateFormat sdfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List clockRecordList = mesClockRecordList.stream().map(mesClockRecord -> { String ClockTime=mesClockRecord.getDay()+ " " +mesClockRecord.getTime(); @@ -697,7 +688,6 @@ public class SysUserServiceImpl implements ISysUserService { }).collect(Collectors.toList()); // 处理响应结果 batchInsert(clockRecordList); - System.out.println("服务器响应: " + clockRecordList); return R.ok(result); }catch (Exception e) { @@ -707,6 +697,7 @@ public class SysUserServiceImpl implements ISysUserService { } + @Autowired // 关键:注入 SqlSessionFactory private SqlSessionFactory sqlSessionFactory;