成本模块

This commit is contained in:
2025-12-02 17:58:16 +08:00
parent be91905508
commit 4b9cce2777
22 changed files with 4808 additions and 3 deletions

View File

@@ -249,4 +249,101 @@ public class SampleService {
}
/**
* 6、成本日计算任务
* 每天凌晨 2 点由调度中心触发,负责调用业务系统接口,计算前一日成本日报数据。
*
* 调度中心建议配置:
* - JobHandlercostDailyCalculateJob
* - Cron0 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();
}
}
}
}