5 changed files with 753 additions and 0 deletions
-
70src/main/java/com/gaotao/modules/sys/controller/SystemLogController.java
-
52src/main/java/com/gaotao/modules/sys/dao/SystemLogDao.java
-
34src/main/java/com/gaotao/modules/sys/service/SystemLogService.java
-
414src/main/java/com/gaotao/modules/sys/service/impl/SystemLogServiceImpl.java
-
183src/main/resources/mapper/sys/SystemLogDao.xml
@ -0,0 +1,70 @@ |
|||||
|
package com.gaotao.modules.sys.controller; |
||||
|
|
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.common.utils.R; |
||||
|
import com.gaotao.modules.sys.service.SystemLogService; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 系统日志管理 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("/sys/systemLog") |
||||
|
public class SystemLogController { |
||||
|
|
||||
|
@Autowired |
||||
|
private SystemLogService systemLogService; |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志列表 |
||||
|
*/ |
||||
|
@PostMapping("/list") |
||||
|
public R list(@RequestBody Map<String, Object> params) { |
||||
|
PageUtils page = systemLogService.queryPage(params); |
||||
|
return R.ok().put("page", page); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志参数详情 |
||||
|
*/ |
||||
|
@PostMapping("/getParams") |
||||
|
public R getParams(@RequestBody Map<String, Object> params) { |
||||
|
String site = (String) params.get("site"); |
||||
|
String buNo = (String) params.get("buNo"); |
||||
|
String requestId = (String) params.get("requestId"); |
||||
|
Integer requestGroupId = params.get("requestGroupId") != null ? |
||||
|
Integer.parseInt(params.get("requestGroupId").toString()) : null; |
||||
|
|
||||
|
return systemLogService.getParams(site, buNo, requestId, requestGroupId); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 批量删除系统日志 |
||||
|
*/ |
||||
|
@PostMapping("/delete") |
||||
|
public R delete(@RequestBody Map<String, Object> params) { |
||||
|
Object[] idsObj = (Object[]) params.get("ids"); |
||||
|
Long[] ids = new Long[idsObj.length]; |
||||
|
for (int i = 0; i < idsObj.length; i++) { |
||||
|
ids[i] = Long.parseLong(idsObj[i].toString()); |
||||
|
} |
||||
|
|
||||
|
return systemLogService.deleteBatch(ids); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 批量手动重试系统接口 |
||||
|
*/ |
||||
|
@PostMapping("/retryInterface") |
||||
|
public R retryInterface(@RequestBody Map<String, Object> params) { |
||||
|
@SuppressWarnings("unchecked") |
||||
|
java.util.List<Map<String, Object>> retryList = (java.util.List<Map<String, Object>>) params.get("retryList"); |
||||
|
|
||||
|
return systemLogService.batchRetryInterface(retryList); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
@ -0,0 +1,52 @@ |
|||||
|
package com.gaotao.modules.sys.dao; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.gaotao.modules.sys.entity.ApiLogEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 系统日志DAO |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface SystemLogDao extends BaseMapper<ApiLogEntity> { |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志列表 |
||||
|
*/ |
||||
|
List<Map<String, Object>> queryList(Map<String, Object> params); |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志总数 |
||||
|
*/ |
||||
|
int queryTotal(Map<String, Object> params); |
||||
|
|
||||
|
/** |
||||
|
* 批量删除 |
||||
|
*/ |
||||
|
int deleteBatch(@Param("ids") Long[] ids); |
||||
|
|
||||
|
/** |
||||
|
* 根据site、buNo、requestId、requestGroupId查询api_log记录 |
||||
|
*/ |
||||
|
Map<String, Object> getApiLog(@Param("site") String site, |
||||
|
@Param("buNo") String buNo, |
||||
|
@Param("requestId") String requestId, |
||||
|
@Param("requestGroupId") Integer requestGroupId); |
||||
|
|
||||
|
/** |
||||
|
* 更新接口重试信息 |
||||
|
*/ |
||||
|
int updateRetryInfo(@Param("site") String site, |
||||
|
@Param("buNo") String buNo, |
||||
|
@Param("requestId") String requestId, |
||||
|
@Param("requestGroupId") Integer requestGroupId, |
||||
|
@Param("statusCode") String statusCode, |
||||
|
@Param("message") String message, |
||||
|
@Param("lastResponseData") String lastResponseData, |
||||
|
@Param("retryCount") Integer retryCount); |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,34 @@ |
|||||
|
package com.gaotao.modules.sys.service; |
||||
|
|
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.common.utils.R; |
||||
|
|
||||
|
import java.util.List; |
||||
|
import java.util.Map; |
||||
|
|
||||
|
/** |
||||
|
* 系统日志Service |
||||
|
*/ |
||||
|
public interface SystemLogService { |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志列表 |
||||
|
*/ |
||||
|
PageUtils queryPage(Map<String, Object> params); |
||||
|
|
||||
|
/** |
||||
|
* 查询系统日志参数详情 |
||||
|
*/ |
||||
|
R getParams(String site, String buNo, String requestId, Integer requestGroupId); |
||||
|
|
||||
|
/** |
||||
|
* 批量删除系统日志 |
||||
|
*/ |
||||
|
R deleteBatch(Long[] ids); |
||||
|
|
||||
|
/** |
||||
|
* 批量重试系统接口 |
||||
|
*/ |
||||
|
R batchRetryInterface(List<Map<String, Object>> retryList); |
||||
|
} |
||||
|
|
||||
@ -0,0 +1,414 @@ |
|||||
|
package com.gaotao.modules.sys.service.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.alibaba.fastjson.JSONObject; |
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.common.utils.R; |
||||
|
import com.gaotao.modules.sys.dao.ApiInterfaceDao; |
||||
|
import com.gaotao.modules.sys.dao.ApiLogValuesDetailDao; |
||||
|
import com.gaotao.modules.sys.dao.ApiLogValuesHeadDao; |
||||
|
import com.gaotao.modules.sys.dao.SystemLogDao; |
||||
|
import com.gaotao.modules.sys.entity.ApiInterfaceEntity; |
||||
|
import com.gaotao.modules.sys.service.SystemLogService; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.http.*; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.web.client.RestTemplate; |
||||
|
|
||||
|
import java.util.*; |
||||
|
|
||||
|
/** |
||||
|
* 系统日志服务实现 |
||||
|
*/ |
||||
|
@Service("systemLogService") |
||||
|
public class SystemLogServiceImpl implements SystemLogService { |
||||
|
|
||||
|
private static final Logger logger = LoggerFactory.getLogger(SystemLogServiceImpl.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private SystemLogDao systemLogDao; |
||||
|
|
||||
|
@Autowired |
||||
|
private ApiLogValuesHeadDao apiLogValuesHeadDao; |
||||
|
|
||||
|
@Autowired |
||||
|
private ApiLogValuesDetailDao apiLogValuesDetailDao; |
||||
|
|
||||
|
@Autowired |
||||
|
private ApiInterfaceDao apiInterfaceDao; |
||||
|
|
||||
|
@Autowired |
||||
|
private RestTemplate restTemplate; |
||||
|
|
||||
|
@Override |
||||
|
public PageUtils queryPage(Map<String, Object> params) { |
||||
|
// 获取分页参数 |
||||
|
int page = Integer.parseInt(params.getOrDefault("page", 1).toString()); |
||||
|
int limit = Integer.parseInt(params.getOrDefault("limit", 10).toString()); |
||||
|
|
||||
|
// 计算offset |
||||
|
int offset = (page - 1) * limit; |
||||
|
params.put("offset", offset); |
||||
|
params.put("limit", limit); |
||||
|
|
||||
|
// 查询列表 |
||||
|
List<Map<String, Object>> list = systemLogDao.queryList(params); |
||||
|
|
||||
|
// 查询总数 |
||||
|
int total = systemLogDao.queryTotal(params); |
||||
|
|
||||
|
// 构造分页结果 |
||||
|
PageUtils pageUtil = new PageUtils(list, total, limit, page); |
||||
|
|
||||
|
return pageUtil; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public R getParams(String site, String buNo, String requestId, Integer requestGroupId) { |
||||
|
try { |
||||
|
// 查询主表数据 |
||||
|
Map<String, Object> head = apiLogValuesHeadDao.queryHead(site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
// 查询明细数据 |
||||
|
List<Map<String, Object>> detailList = apiLogValuesDetailDao.queryDetailList(site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
// 构造返回的JSON结构 |
||||
|
Map<String, Object> result = new LinkedHashMap<>(); |
||||
|
|
||||
|
// 处理主表数据(将orderref1-20映射为"接口参数1"-"接口参数20") |
||||
|
if (head != null) { |
||||
|
for (int i = 1; i <= 20; i++) { |
||||
|
String key = "orderref" + i; |
||||
|
Object value = head.get(key); |
||||
|
if (value != null && !value.toString().trim().isEmpty()) { |
||||
|
result.put("接口参数" + i, value); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 处理明细数据 |
||||
|
if (detailList != null && !detailList.isEmpty()) { |
||||
|
List<Map<String, Object>> detailResultList = new ArrayList<>(); |
||||
|
|
||||
|
for (Map<String, Object> detail : detailList) { |
||||
|
Map<String, Object> detailResult = new LinkedHashMap<>(); |
||||
|
|
||||
|
for (int i = 1; i <= 20; i++) { |
||||
|
String key = "orderref" + i; |
||||
|
Object value = detail.get(key); |
||||
|
if (value != null && !value.toString().trim().isEmpty()) { |
||||
|
detailResult.put("接口参数" + i, value); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!detailResult.isEmpty()) { |
||||
|
detailResultList.add(detailResult); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!detailResultList.isEmpty()) { |
||||
|
result.put("DetailList", detailResultList); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return R.ok().put("params", result); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("查询系统日志参数失败", e); |
||||
|
return R.error("查询系统日志参数失败: " + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public R deleteBatch(Long[] ids) { |
||||
|
try { |
||||
|
if (ids == null || ids.length == 0) { |
||||
|
return R.error("请选择要删除的记录"); |
||||
|
} |
||||
|
|
||||
|
int count = systemLogDao.deleteBatch(ids); |
||||
|
|
||||
|
return R.ok().put("count", count); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("批量删除系统日志失败", e); |
||||
|
return R.error("批量删除失败: " + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(rollbackFor = Exception.class) |
||||
|
public R batchRetryInterface(List<Map<String, Object>> retryList) { |
||||
|
try { |
||||
|
if (retryList == null || retryList.isEmpty()) { |
||||
|
return R.error("请选择要重试的记录"); |
||||
|
} |
||||
|
|
||||
|
logger.info("批量手动重试系统接口开始,记录数: {}", retryList.size()); |
||||
|
|
||||
|
int successCount = 0; |
||||
|
int failureCount = 0; |
||||
|
int errorCount = 0; |
||||
|
List<Map<String, Object>> detailResults = new ArrayList<>(); |
||||
|
|
||||
|
// 遍历每个需要重试的记录 |
||||
|
for (Map<String, Object> retryItem : retryList) { |
||||
|
String site = (String) retryItem.get("site"); |
||||
|
String buNo = (String) retryItem.get("buNo"); |
||||
|
String requestId = (String) retryItem.get("requestId"); |
||||
|
Integer requestGroupId = retryItem.get("requestGroupId") != null ? |
||||
|
Integer.parseInt(retryItem.get("requestGroupId").toString()) : null; |
||||
|
String interfaceName = (String) retryItem.get("interfaceName"); |
||||
|
|
||||
|
Map<String, Object> detailResult = new LinkedHashMap<>(); |
||||
|
detailResult.put("interfaceName", interfaceName); |
||||
|
detailResult.put("requestId", requestId); |
||||
|
|
||||
|
try { |
||||
|
// 调用单个重试方法 |
||||
|
R result = retrySingleInterface(site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
if (result.get("code").equals(0)) { |
||||
|
@SuppressWarnings("unchecked") |
||||
|
Map<String, Object> retryResult = (Map<String, Object>) result.get("result"); |
||||
|
String flag = (String) retryResult.get("flag"); |
||||
|
|
||||
|
if ("success".equalsIgnoreCase(flag)) { |
||||
|
successCount++; |
||||
|
detailResult.put("status", "success"); |
||||
|
detailResult.put("u8CCode", retryResult.get("u8CCode")); |
||||
|
detailResult.put("message", "调用成功"); |
||||
|
} else { |
||||
|
failureCount++; |
||||
|
detailResult.put("status", "failure"); |
||||
|
detailResult.put("message", retryResult.get("errMsg")); |
||||
|
} |
||||
|
} else { |
||||
|
failureCount++; |
||||
|
detailResult.put("status", "failure"); |
||||
|
detailResult.put("message", result.get("msg")); |
||||
|
} |
||||
|
} catch (Exception e) { |
||||
|
errorCount++; |
||||
|
detailResult.put("status", "error"); |
||||
|
detailResult.put("message", "重试异常: " + e.getMessage()); |
||||
|
logger.error("重试系统接口异常,requestId: {}", requestId, e); |
||||
|
} |
||||
|
|
||||
|
detailResults.add(detailResult); |
||||
|
} |
||||
|
|
||||
|
logger.info("批量手动重试完成,成功: {}, 失败: {}, 异常: {}", successCount, failureCount, errorCount); |
||||
|
|
||||
|
// 返回批量结果 |
||||
|
Map<String, Object> batchResult = new HashMap<>(); |
||||
|
batchResult.put("successCount", successCount); |
||||
|
batchResult.put("failureCount", failureCount); |
||||
|
batchResult.put("errorCount", errorCount); |
||||
|
batchResult.put("totalCount", retryList.size()); |
||||
|
batchResult.put("details", detailResults); |
||||
|
|
||||
|
return R.ok().put("result", batchResult); |
||||
|
|
||||
|
} catch (Exception e) { |
||||
|
logger.error("批量手动重试系统接口失败", e); |
||||
|
return R.error("批量手动重试失败: " + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 重试单个接口 |
||||
|
*/ |
||||
|
private R retrySingleInterface(String site, String buNo, String requestId, Integer requestGroupId) { |
||||
|
try { |
||||
|
logger.info("手动重试系统接口开始,site: {}, buNo: {}, requestId: {}, requestGroupId: {}", |
||||
|
site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
// 1. 查询api_log记录 |
||||
|
Map<String, Object> apiLog = systemLogDao.getApiLog(site, buNo, requestId, requestGroupId); |
||||
|
if (apiLog == null) { |
||||
|
logger.error("未找到系统日志记录"); |
||||
|
return R.error("未找到系统日志记录"); |
||||
|
} |
||||
|
|
||||
|
String interfaceName = (String) apiLog.get("interfaceName"); |
||||
|
Integer retryCount = apiLog.get("retryCount") != null ? (Integer) apiLog.get("retryCount") : 0; |
||||
|
|
||||
|
logger.info("查询到接口名称: {}, 当前重试次数: {}", interfaceName, retryCount); |
||||
|
|
||||
|
// 2. 查询api_Interface获取接口IP和路径 |
||||
|
ApiInterfaceEntity apiInterface = apiInterfaceDao.getByInterfaceName(site, buNo, interfaceName); |
||||
|
if (apiInterface == null) { |
||||
|
logger.error("未找到接口配置,interfaceName: {}", interfaceName); |
||||
|
return R.error("未找到接口配置: " + interfaceName); |
||||
|
} |
||||
|
|
||||
|
String interfaceUrl = "http://" + apiInterface.getInterfaceIp() + apiInterface.getInterfaceValue(); |
||||
|
logger.info("接口URL: {}", interfaceUrl); |
||||
|
|
||||
|
// 3. 查询api_log_values_head主表数据 |
||||
|
Map<String, Object> headData = apiLogValuesHeadDao.queryHead(site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
// 4. 查询api_log_values_detail明细数据 |
||||
|
List<Map<String, Object>> detailList = apiLogValuesDetailDao.queryDetailList(site, buNo, requestId, requestGroupId); |
||||
|
|
||||
|
// 5. 构造JSON请求体 |
||||
|
Map<String, Object> requestBody = new LinkedHashMap<>(); |
||||
|
|
||||
|
// 5.1 处理主表数据(orderref1-20) |
||||
|
if (headData != null) { |
||||
|
for (int i = 1; i <= 20; i++) { |
||||
|
String key = "orderref" + i; |
||||
|
Object value = headData.get(key); |
||||
|
if (value != null && !value.toString().trim().isEmpty()) { |
||||
|
// 根据字段位置映射到实际的字段名 |
||||
|
String fieldName = getFieldName(i, true); |
||||
|
requestBody.put(fieldName, value); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 5.2 处理明细数据 |
||||
|
if (detailList != null && !detailList.isEmpty()) { |
||||
|
List<Map<String, Object>> detailResultList = new ArrayList<>(); |
||||
|
|
||||
|
for (Map<String, Object> detail : detailList) { |
||||
|
Map<String, Object> detailItem = new LinkedHashMap<>(); |
||||
|
|
||||
|
for (int i = 1; i <= 20; i++) { |
||||
|
String key = "orderref" + i; |
||||
|
Object value = detail.get(key); |
||||
|
if (value != null && !value.toString().trim().isEmpty()) { |
||||
|
// 根据字段位置映射到实际的字段名 |
||||
|
String fieldName = getFieldName(i, false); |
||||
|
detailItem.put(fieldName, value); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!detailItem.isEmpty()) { |
||||
|
detailResultList.add(detailItem); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!detailResultList.isEmpty()) { |
||||
|
requestBody.put("DetailList", detailResultList); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
logger.info("构造的请求体: {}", JSON.toJSONString(requestBody)); |
||||
|
|
||||
|
// 6. 调用外部接口 |
||||
|
HttpHeaders headers = new HttpHeaders(); |
||||
|
headers.setContentType(MediaType.APPLICATION_JSON); |
||||
|
|
||||
|
HttpEntity<String> requestEntity = new HttpEntity<>(JSON.toJSONString(requestBody), headers); |
||||
|
|
||||
|
String statusCode = "ERROR"; |
||||
|
String message = ""; |
||||
|
String lastResponseData = ""; |
||||
|
|
||||
|
try { |
||||
|
ResponseEntity<String> response = restTemplate.exchange(interfaceUrl, HttpMethod.POST, requestEntity, String.class); |
||||
|
|
||||
|
lastResponseData = response.getBody(); |
||||
|
logger.info("接口返回: {}", lastResponseData); |
||||
|
|
||||
|
// 7. 解析返回结果 |
||||
|
JSONObject responseJson = JSON.parseObject(lastResponseData); |
||||
|
String flag = responseJson.getString("Flag"); |
||||
|
|
||||
|
if ("success".equalsIgnoreCase(flag)) { |
||||
|
statusCode = "SUCCESS"; |
||||
|
message = "接口调用成功"; |
||||
|
String u8CCode = responseJson.getString("U8CCode"); |
||||
|
if (u8CCode != null && !u8CCode.isEmpty()) { |
||||
|
message += ",U8单号: " + u8CCode; |
||||
|
} |
||||
|
} else { |
||||
|
statusCode = "FAILURE"; |
||||
|
message = responseJson.getString("ErrMsg"); |
||||
|
if (message == null || message.isEmpty()) { |
||||
|
message = "接口调用失败"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} catch (Exception e) { |
||||
|
statusCode = "ERROR"; |
||||
|
message = "接口调用异常: " + e.getMessage(); |
||||
|
lastResponseData = e.toString(); |
||||
|
logger.error("调用外部接口异常", e); |
||||
|
} |
||||
|
|
||||
|
// 8. 更新api_log记录 |
||||
|
int updateCount = systemLogDao.updateRetryInfo( |
||||
|
site, buNo, requestId, requestGroupId, |
||||
|
statusCode, message, lastResponseData, retryCount + 1 |
||||
|
); |
||||
|
|
||||
|
logger.info("更新系统日志记录,更新条数: {}", updateCount); |
||||
|
|
||||
|
// 9. 返回结果 |
||||
|
Map<String, Object> result = new HashMap<>(); |
||||
|
result.put("flag", "success".equalsIgnoreCase(statusCode) ? "success" : "failure"); |
||||
|
result.put("u8CCode", ""); |
||||
|
result.put("errMsg", message); |
||||
|
|
||||
|
if (lastResponseData != null && !lastResponseData.isEmpty()) { |
||||
|
try { |
||||
|
JSONObject responseJson = JSON.parseObject(lastResponseData); |
||||
|
if (responseJson.containsKey("U8CCode")) { |
||||
|
result.put("u8CCode", responseJson.getString("U8CCode")); |
||||
|
} |
||||
|
} catch (Exception ignored) { |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return R.ok().put("result", result); |
||||
|
|
||||
|
} catch (Exception e) { |
||||
|
logger.error("手动重试系统接口失败", e); |
||||
|
return R.error("手动重试失败: " + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 根据字段位置获取实际的字段名 |
||||
|
* 这个映射关系需要根据实际接口文档来配置 |
||||
|
*/ |
||||
|
private String getFieldName(int position, boolean isHead) { |
||||
|
if (isHead) { |
||||
|
// 主表字段映射 |
||||
|
switch (position) { |
||||
|
case 1: return "MESCCode"; |
||||
|
case 2: return "KdType"; |
||||
|
case 3: return "DDate"; |
||||
|
case 4: return "CRdCode"; |
||||
|
case 5: return "CMemo"; |
||||
|
case 6: return "CWhCode"; |
||||
|
case 7: return "CCusOAddress"; |
||||
|
case 8: return "CDepCode"; |
||||
|
default: return "orderref" + position; |
||||
|
} |
||||
|
} else { |
||||
|
// 明细表字段映射 |
||||
|
switch (position) { |
||||
|
case 1: return "MESIrowNo"; |
||||
|
case 2: return "OutCode"; |
||||
|
case 3: return "OutIrowNo"; |
||||
|
case 4: return "CInvCode"; |
||||
|
case 5: return "IQuantity"; |
||||
|
case 6: return "CBatch"; |
||||
|
case 7: return "CbMemo"; |
||||
|
case 8: return "CWhCode"; |
||||
|
case 9: return "OutMocode"; |
||||
|
case 10: return "OutIrowNo_zj"; |
||||
|
case 11: return "NumberOfCases"; |
||||
|
default: return "orderref" + position; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
@ -0,0 +1,183 @@ |
|||||
|
<?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.gaotao.modules.sys.dao.SystemLogDao"> |
||||
|
|
||||
|
<!-- 查询系统日志列表 --> |
||||
|
<select id="queryList" resultType="map"> |
||||
|
SELECT |
||||
|
a.id, |
||||
|
a.site, |
||||
|
a.bu_no AS buNo, |
||||
|
a.request_id AS requestId, |
||||
|
a.interface_name AS interfaceName, |
||||
|
a.request_group_id AS requestGroupId, |
||||
|
a.re_document_no AS reDocumentNo, |
||||
|
a.re_document_type AS reDocumentType, |
||||
|
a.order_no AS orderNo, |
||||
|
a.seq_no AS seqNo, |
||||
|
a.status_code AS statusCode, |
||||
|
a.message, |
||||
|
a.source_system AS sourceSystem, |
||||
|
a.target_system AS targetSystem, |
||||
|
a.need_retry_flag AS needRetryFlag, |
||||
|
a.retry_count AS retryCount, |
||||
|
a.max_retry_count AS maxRetryCount, |
||||
|
a.retry_interval AS retryInterval, |
||||
|
a.next_retry_time AS nextRetryTime, |
||||
|
a.last_retry_time AS lastRetryTime, |
||||
|
a.warehouse_id AS warehouseId, |
||||
|
a.created_by AS createdBy, |
||||
|
a.created_date AS createdDate, |
||||
|
b.interface_type AS interfaceType |
||||
|
FROM api_log as a |
||||
|
left join api_Interface as b on a.interface_name = b.interface_name AND a.site = b.site and a.bu_no = b.bu_no |
||||
|
<where> |
||||
|
a.site in (select site from AccessSite where userID = #{userName}) |
||||
|
and a.bu_no in (select bu_no from AccessBu where username = #{userName}) |
||||
|
and type <> 'Interface' |
||||
|
<if test="interfaceName != null and interfaceName.trim() != ''"> |
||||
|
AND a.interface_name LIKE '%' + #{interfaceName} + '%' |
||||
|
</if> |
||||
|
<if test="requestId != null and requestId.trim() != ''"> |
||||
|
AND a.request_id = #{requestId} |
||||
|
</if> |
||||
|
<if test="reDocumentNo != null and reDocumentNo.trim() != ''"> |
||||
|
AND a.re_document_no LIKE '%' + #{reDocumentNo} + '%' |
||||
|
</if> |
||||
|
<if test="reDocumentType != null and reDocumentType.trim() != ''"> |
||||
|
AND a.re_document_type LIKE '%' + #{reDocumentType} + '%' |
||||
|
</if> |
||||
|
<if test="statusCode != null and statusCode.trim() != ''"> |
||||
|
AND a.status_code = #{statusCode} |
||||
|
</if> |
||||
|
<if test="sourceSystem != null and sourceSystem.trim() != ''"> |
||||
|
AND a.source_system = #{sourceSystem} |
||||
|
</if> |
||||
|
<if test="targetSystem != null and targetSystem.trim() != ''"> |
||||
|
AND a.target_system = #{targetSystem} |
||||
|
</if> |
||||
|
<if test="needRetryFlag != null"> |
||||
|
AND a.need_retry_flag = #{needRetryFlag} |
||||
|
</if> |
||||
|
<if test="warehouseId != null and warehouseId.trim() != ''"> |
||||
|
AND a.warehouse_id = #{warehouseId} |
||||
|
</if> |
||||
|
<if test="startDate != null and startDate.trim() != ''"> |
||||
|
AND CONVERT(varchar(10), a.created_date, 23) >= #{startDate} |
||||
|
</if> |
||||
|
<if test="endDate != null and endDate.trim() != ''"> |
||||
|
AND CONVERT(varchar(10), a.created_date, 23) <= #{endDate} |
||||
|
</if> |
||||
|
</where> |
||||
|
ORDER BY a.created_date DESC |
||||
|
<if test="offset != null and limit != null"> |
||||
|
OFFSET #{offset} ROWS |
||||
|
FETCH NEXT #{limit} ROWS ONLY |
||||
|
</if> |
||||
|
</select> |
||||
|
|
||||
|
<!-- 查询系统日志总数 --> |
||||
|
<select id="queryTotal" resultType="int"> |
||||
|
SELECT COUNT(*) |
||||
|
FROM api_log as a |
||||
|
left join api_Interface as b on a.interface_name = b.interface_name AND a.site = b.site |
||||
|
<where> |
||||
|
a.site in (select site from AccessSite where userID = #{userName}) |
||||
|
and a.bu_no in (select bu_no from AccessBu where username = #{userName}) |
||||
|
and type <> 'Interface' |
||||
|
<if test="interfaceName != null and interfaceName.trim() != ''"> |
||||
|
AND a.interface_name LIKE '%' + #{interfaceName} + '%' |
||||
|
</if> |
||||
|
<if test="requestId != null and requestId.trim() != ''"> |
||||
|
AND a.request_id = #{requestId} |
||||
|
</if> |
||||
|
<if test="reDocumentNo != null and reDocumentNo.trim() != ''"> |
||||
|
AND a.re_document_no LIKE '%' + #{reDocumentNo} + '%' |
||||
|
</if> |
||||
|
<if test="reDocumentType != null and reDocumentType.trim() != ''"> |
||||
|
AND a.re_document_type LIKE '%' + #{reDocumentType} + '%' |
||||
|
</if> |
||||
|
<if test="statusCode != null and statusCode.trim() != ''"> |
||||
|
AND a.status_code = #{statusCode} |
||||
|
</if> |
||||
|
<if test="sourceSystem != null and sourceSystem.trim() != ''"> |
||||
|
AND a.source_system = #{sourceSystem} |
||||
|
</if> |
||||
|
<if test="targetSystem != null and targetSystem.trim() != ''"> |
||||
|
AND a.target_system = #{targetSystem} |
||||
|
</if> |
||||
|
<if test="needRetryFlag != null"> |
||||
|
AND a.need_retry_flag = #{needRetryFlag} |
||||
|
</if> |
||||
|
<if test="warehouseId != null and warehouseId.trim() != ''"> |
||||
|
AND a.warehouse_id = #{warehouseId} |
||||
|
</if> |
||||
|
<if test="startDate != null and startDate.trim() != ''"> |
||||
|
AND CONVERT(varchar(10), a.created_date, 23) >= #{startDate} |
||||
|
</if> |
||||
|
<if test="endDate != null and endDate.trim() != ''"> |
||||
|
AND CONVERT(varchar(10), a.created_date, 23) <= #{endDate} |
||||
|
</if> |
||||
|
</where> |
||||
|
</select> |
||||
|
|
||||
|
<!-- 批量删除 --> |
||||
|
<delete id="deleteBatch"> |
||||
|
DELETE FROM api_log WHERE id IN |
||||
|
<foreach item="id" collection="ids" open="(" separator="," close=")"> |
||||
|
#{id} |
||||
|
</foreach> |
||||
|
</delete> |
||||
|
|
||||
|
<!-- 查询单条api_log记录 --> |
||||
|
<select id="getApiLog" resultType="map"> |
||||
|
SELECT |
||||
|
id, |
||||
|
site, |
||||
|
bu_no AS buNo, |
||||
|
request_id AS requestId, |
||||
|
interface_name AS interfaceName, |
||||
|
request_group_id AS requestGroupId, |
||||
|
re_document_no AS reDocumentNo, |
||||
|
re_document_type AS reDocumentType, |
||||
|
order_no AS orderNo, |
||||
|
seq_no AS seqNo, |
||||
|
status_code AS statusCode, |
||||
|
message, |
||||
|
request_data AS requestData, |
||||
|
source_system AS sourceSystem, |
||||
|
target_system AS targetSystem, |
||||
|
need_retry_flag AS needRetryFlag, |
||||
|
retry_count AS retryCount, |
||||
|
max_retry_count AS maxRetryCount, |
||||
|
retry_interval AS retryInterval, |
||||
|
next_retry_time AS nextRetryTime, |
||||
|
last_retry_time AS lastRetryTime, |
||||
|
last_response_data AS lastResponseData, |
||||
|
created_by AS createdBy, |
||||
|
created_date AS createdDate |
||||
|
FROM api_log WITH(NOLOCK) |
||||
|
WHERE site = #{site} |
||||
|
AND bu_no = #{buNo} |
||||
|
AND request_id = #{requestId} |
||||
|
AND request_group_id = #{requestGroupId} |
||||
|
</select> |
||||
|
|
||||
|
<!-- 更新接口重试信息 --> |
||||
|
<update id="updateRetryInfo"> |
||||
|
UPDATE api_log |
||||
|
SET status_code = #{statusCode}, |
||||
|
message = #{message}, |
||||
|
last_response_data = #{lastResponseData}, |
||||
|
retry_count = #{retryCount}, |
||||
|
last_retry_time = GETDATE() |
||||
|
WHERE site = #{site} |
||||
|
AND bu_no = #{buNo} |
||||
|
AND request_id = #{requestId} |
||||
|
AND request_group_id = #{requestGroupId} |
||||
|
</update> |
||||
|
|
||||
|
</mapper> |
||||
|
|
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue