成本模块
This commit is contained in:
@@ -249,4 +249,101 @@ public class SampleService {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 6、成本日计算任务
|
||||
* 每天凌晨 2 点由调度中心触发,负责调用业务系统接口,计算前一日成本日报数据。
|
||||
*
|
||||
* 调度中心建议配置:
|
||||
* - JobHandler:costDailyCalculateJob
|
||||
* - Cron:0 0 2 * * ?
|
||||
* - 执行参数(可选):baseUrl=http://127.0.0.1:8080
|
||||
*/
|
||||
@XxlJob("costDailyCalculateJob")
|
||||
public void costDailyCalculateJob() throws Exception {
|
||||
// 1. 计算前一日日期
|
||||
java.time.LocalDate calcDate = java.time.LocalDate.now().minusDays(1);
|
||||
String dateStr = calcDate.toString(); // yyyy-MM-dd
|
||||
|
||||
// 2. 解析调度参数,获取业务系统基础地址
|
||||
String param = XxlJobHelper.getJobParam();
|
||||
String baseUrl = "http://127.0.0.1:8080"; // 默认本机
|
||||
if (param != null && !param.trim().isEmpty()) {
|
||||
// 简单解析形式:baseUrl=http://host:port
|
||||
for (String line : param.split("\n")) {
|
||||
line = line.trim();
|
||||
if (line.startsWith("baseUrl=")) {
|
||||
baseUrl = line.substring("baseUrl=".length()).trim();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 3. 构造两个调用地址
|
||||
String urlDaily = baseUrl + "/wms/cost/coil/batchCalculate?calcDate=" + dateStr;
|
||||
String urlByEnterCoilNo = baseUrl + "/wms/cost/coil/batchCalculateByEnterCoilNo?calcDate=" + dateStr;
|
||||
|
||||
XxlJobHelper.log("开始成本日计算,calcDate={}, baseUrl={}", dateStr, baseUrl);
|
||||
|
||||
// 4. 依次调用两个接口
|
||||
try {
|
||||
doPost(urlDaily);
|
||||
XxlJobHelper.log("调用 batchCalculate 成功: {}", urlDaily);
|
||||
} catch (Exception e) {
|
||||
XxlJobHelper.log(e);
|
||||
XxlJobHelper.handleFail("调用 batchCalculate 失败: " + e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
doPost(urlByEnterCoilNo);
|
||||
XxlJobHelper.log("调用 batchCalculateByEnterCoilNo 成功: {}", urlByEnterCoilNo);
|
||||
} catch (Exception e) {
|
||||
XxlJobHelper.log(e);
|
||||
XxlJobHelper.handleFail("调用 batchCalculateByEnterCoilNo 失败: " + e.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
// 默认成功
|
||||
}
|
||||
|
||||
/**
|
||||
* 简单的 POST 请求工具,复用 JDK HttpURLConnection。
|
||||
*/
|
||||
private void doPost(String url) throws Exception {
|
||||
HttpURLConnection connection = null;
|
||||
BufferedReader bufferedReader = null;
|
||||
try {
|
||||
URL realUrl = new URL(url);
|
||||
connection = (HttpURLConnection) realUrl.openConnection();
|
||||
connection.setRequestMethod("POST");
|
||||
connection.setDoOutput(true);
|
||||
connection.setDoInput(true);
|
||||
connection.setUseCaches(false);
|
||||
connection.setReadTimeout(30 * 1000);
|
||||
connection.setConnectTimeout(10 * 1000);
|
||||
connection.setRequestProperty("connection", "Keep-Alive");
|
||||
|
||||
connection.connect();
|
||||
|
||||
int statusCode = connection.getResponseCode();
|
||||
if (statusCode != 200) {
|
||||
throw new RuntimeException("HTTP " + url + " StatusCode(" + statusCode + ") Invalid.");
|
||||
}
|
||||
|
||||
bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
|
||||
StringBuilder result = new StringBuilder();
|
||||
String line;
|
||||
while ((line = bufferedReader.readLine()) != null) {
|
||||
result.append(line);
|
||||
}
|
||||
XxlJobHelper.log("调用 {} 返回: {}", url, result.toString());
|
||||
} finally {
|
||||
if (bufferedReader != null) {
|
||||
bufferedReader.close();
|
||||
}
|
||||
if (connection != null) {
|
||||
connection.disconnect();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user