8 changed files with 676 additions and 3 deletions
-
102src/main/java/com/gaotao/modules/api/controller/IfsCallErrorLogController.java
-
14src/main/java/com/gaotao/modules/api/dao/IfsCallErrorLogMapper.java
-
123src/main/java/com/gaotao/modules/api/entity/IfsCallErrorLog.java
-
49src/main/java/com/gaotao/modules/api/entity/IfsCallErrorLogData.java
-
2src/main/java/com/gaotao/modules/api/entity/PushPalletDetailDto.java
-
68src/main/java/com/gaotao/modules/api/service/IfsCallErrorLogService.java
-
182src/main/java/com/gaotao/modules/api/service/impl/IfsCallErrorLogServiceImpl.java
-
139src/main/java/com/gaotao/modules/other/service/impl/InventoryMoveServiceImpl.java
@ -0,0 +1,102 @@ |
|||||
|
package com.gaotao.modules.api.controller; |
||||
|
|
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.common.utils.R; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLogData; |
||||
|
import com.gaotao.modules.api.service.IfsCallErrorLogService; |
||||
|
import com.gaotao.modules.sys.controller.AbstractController; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.web.bind.annotation.*; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志Controller - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
@RestController |
||||
|
@RequestMapping("/api/ifsCallErrorLog") |
||||
|
public class IfsCallErrorLogController extends AbstractController { |
||||
|
|
||||
|
@Autowired |
||||
|
private IfsCallErrorLogService ifsCallErrorLogService; |
||||
|
|
||||
|
/** |
||||
|
* @Description 分页查询IFS错误日志列表 - rqrq |
||||
|
* @Title list |
||||
|
* @param data 查询条件 |
||||
|
* @return R |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
@PostMapping("/list") |
||||
|
public R list(@RequestBody IfsCallErrorLogData data) { |
||||
|
try { |
||||
|
PageUtils page = ifsCallErrorLogService.queryPage(data); |
||||
|
return R.ok().put("page", page); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("查询IFS错误日志列表失败", e); |
||||
|
return R.error("查询失败:" + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Description 标记错误日志为已处理 - rqrq |
||||
|
* @Title markProcessed |
||||
|
* @param data 包含id和remark |
||||
|
* @return R |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
@PostMapping("/markProcessed") |
||||
|
public R markProcessed(@RequestBody IfsCallErrorLogData data) { |
||||
|
try { |
||||
|
String processedBy = getUser().getUsername(); |
||||
|
ifsCallErrorLogService.markAsProcessed(data.getId(), processedBy, data.getRemark()); |
||||
|
return R.ok().put("msg", "标记成功"); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("标记IFS错误日志失败", e); |
||||
|
return R.error("操作失败:" + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Description 标记错误日志为已忽略 - rqrq |
||||
|
* @Title markIgnored |
||||
|
* @param data 包含id和remark |
||||
|
* @return R |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
@PostMapping("/markIgnored") |
||||
|
public R markIgnored(@RequestBody IfsCallErrorLogData data) { |
||||
|
try { |
||||
|
String processedBy = getUser().getUsername(); |
||||
|
ifsCallErrorLogService.markAsIgnored(data.getId(), processedBy, data.getRemark()); |
||||
|
return R.ok().put("msg", "标记成功"); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("标记IFS错误日志失败", e); |
||||
|
return R.error("操作失败:" + e.getMessage()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* @Description 获取用户授权站点列表 - rqrq |
||||
|
* @Title getUserAuthorizedSites |
||||
|
* @param params 包含userName |
||||
|
* @return R |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
@PostMapping("/getUserAuthorizedSites") |
||||
|
public R getUserAuthorizedSites(@RequestBody java.util.Map<String, Object> params) { |
||||
|
try { |
||||
|
// 这里简化处理,实际项目中可能需要从权限表查询 |
||||
|
java.util.List<String> sites = new java.util.ArrayList<>(); |
||||
|
sites.add("55"); |
||||
|
return R.ok().put("data", sites); |
||||
|
} catch (Exception e) { |
||||
|
logger.error("获取站点列表失败", e); |
||||
|
return R.error("获取站点列表失败"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
package com.gaotao.modules.api.dao; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLog; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志Mapper - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
@Mapper |
||||
|
public interface IfsCallErrorLogMapper extends BaseMapper<IfsCallErrorLog> { |
||||
|
} |
||||
@ -0,0 +1,123 @@ |
|||||
|
package com.gaotao.modules.api.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.*; |
||||
|
import lombok.Data; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志基础实体类 - 直接映射数据库表 - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
@Data |
||||
|
@TableName("ifs_call_error_log") |
||||
|
public class IfsCallErrorLog { |
||||
|
|
||||
|
/** |
||||
|
* 主键ID |
||||
|
*/ |
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Long id; |
||||
|
|
||||
|
/** |
||||
|
* 站点 |
||||
|
*/ |
||||
|
private String site; |
||||
|
|
||||
|
/** |
||||
|
* 接口名称 |
||||
|
*/ |
||||
|
private String interfaceName; |
||||
|
|
||||
|
/** |
||||
|
* 方法类型 |
||||
|
*/ |
||||
|
private String methodType; |
||||
|
|
||||
|
/** |
||||
|
* 物料编号 |
||||
|
*/ |
||||
|
private String partNo; |
||||
|
|
||||
|
/** |
||||
|
* 批次号 |
||||
|
*/ |
||||
|
private String lotBatchNo; |
||||
|
|
||||
|
/** |
||||
|
* 源库位 |
||||
|
*/ |
||||
|
private String sourceLocation; |
||||
|
|
||||
|
/** |
||||
|
* 目标库位 |
||||
|
*/ |
||||
|
private String destLocation; |
||||
|
|
||||
|
/** |
||||
|
* 数量 |
||||
|
*/ |
||||
|
private Integer qty; |
||||
|
|
||||
|
/** |
||||
|
* 过期日期 |
||||
|
*/ |
||||
|
private Date expiredDate; |
||||
|
|
||||
|
/** |
||||
|
* 请求参数(JSON格式) |
||||
|
*/ |
||||
|
private String requestData; |
||||
|
|
||||
|
/** |
||||
|
* IFS响应数据 |
||||
|
*/ |
||||
|
private String responseData; |
||||
|
|
||||
|
/** |
||||
|
* 解析后的错误信息 |
||||
|
*/ |
||||
|
private String errorMessage; |
||||
|
|
||||
|
/** |
||||
|
* 处理状态:PENDING待处理, PROCESSED已处理, IGNORED已忽略 |
||||
|
*/ |
||||
|
private String processStatus; |
||||
|
|
||||
|
/** |
||||
|
* 重试次数 |
||||
|
*/ |
||||
|
private Integer retryCount; |
||||
|
|
||||
|
/** |
||||
|
* 最大重试次数 |
||||
|
*/ |
||||
|
private Integer maxRetry; |
||||
|
|
||||
|
/** |
||||
|
* 创建时间 |
||||
|
*/ |
||||
|
@TableField(fill = FieldFill.INSERT) |
||||
|
private Date createdAt; |
||||
|
|
||||
|
/** |
||||
|
* 更新时间 |
||||
|
*/ |
||||
|
@TableField(fill = FieldFill.UPDATE) |
||||
|
private Date updatedAt; |
||||
|
|
||||
|
/** |
||||
|
* 处理时间 |
||||
|
*/ |
||||
|
private Date processedAt; |
||||
|
|
||||
|
/** |
||||
|
* 处理人 |
||||
|
*/ |
||||
|
private String processedBy; |
||||
|
|
||||
|
/** |
||||
|
* 备注信息 |
||||
|
*/ |
||||
|
private String remark; |
||||
|
} |
||||
@ -0,0 +1,49 @@ |
|||||
|
package com.gaotao.modules.api.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.TableField; |
||||
|
import lombok.Data; |
||||
|
import org.apache.ibatis.type.Alias; |
||||
|
import org.springframework.format.annotation.DateTimeFormat; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志业务实体类 - 用于业务查询 - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
@Data |
||||
|
@Alias("IfsCallErrorLogData") |
||||
|
public class IfsCallErrorLogData extends IfsCallErrorLog { |
||||
|
|
||||
|
/** |
||||
|
* 查询开始日期 |
||||
|
*/ |
||||
|
@TableField(exist = false) |
||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
||||
|
private Date startDate; |
||||
|
|
||||
|
/** |
||||
|
* 查询结束日期 |
||||
|
*/ |
||||
|
@TableField(exist = false) |
||||
|
@DateTimeFormat(pattern = "yyyy-MM-dd") |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") |
||||
|
private Date endDate; |
||||
|
|
||||
|
/** |
||||
|
* 分页参数 |
||||
|
*/ |
||||
|
@TableField(exist = false) |
||||
|
private Integer page; |
||||
|
|
||||
|
@TableField(exist = false) |
||||
|
private Integer limit; |
||||
|
|
||||
|
@TableField(exist = false) |
||||
|
private Integer pageNum; |
||||
|
|
||||
|
@TableField(exist = false) |
||||
|
private Integer pageSize; |
||||
|
} |
||||
@ -0,0 +1,68 @@ |
|||||
|
package com.gaotao.modules.api.service; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.extension.service.IService; |
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLog; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLogData; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志服务接口 - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
public interface IfsCallErrorLogService extends IService<IfsCallErrorLog> { |
||||
|
|
||||
|
/** |
||||
|
* @Description 记录IFS调用失败日志 - rqrq |
||||
|
* @param site 站点 |
||||
|
* @param interfaceName 接口名称 |
||||
|
* @param methodType 方法类型 |
||||
|
* @param partNo 物料编号 |
||||
|
* @param lotBatchNo 批次号 |
||||
|
* @param sourceLocation 源库位 |
||||
|
* @param destLocation 目标库位 |
||||
|
* @param qty 数量 |
||||
|
* @param expiredDate 过期日期 |
||||
|
* @param requestData 请求数据 |
||||
|
* @param responseData 响应数据 |
||||
|
* @param errorMessage 错误信息 |
||||
|
* @return Long 日志ID |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
Long logIfsError(String site, String interfaceName, String methodType, |
||||
|
String partNo, String lotBatchNo, |
||||
|
String sourceLocation, String destLocation, |
||||
|
Integer qty, Date expiredDate, |
||||
|
String requestData, String responseData, String errorMessage); |
||||
|
|
||||
|
/** |
||||
|
* @Description 分页查询IFS错误日志 - rqrq |
||||
|
* @param data 查询条件 |
||||
|
* @return PageUtils |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
PageUtils queryPage(IfsCallErrorLogData data) throws Exception; |
||||
|
|
||||
|
/** |
||||
|
* @Description 标记错误日志为已处理 - rqrq |
||||
|
* @param id 日志ID |
||||
|
* @param processedBy 处理人 |
||||
|
* @param remark 处理备注 |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
void markAsProcessed(Long id, String processedBy, String remark); |
||||
|
|
||||
|
/** |
||||
|
* @Description 标记错误日志为已忽略 - rqrq |
||||
|
* @param id 日志ID |
||||
|
* @param processedBy 处理人 |
||||
|
* @param remark 忽略原因 |
||||
|
* @author rqrq |
||||
|
* @date 2025/10/08 |
||||
|
*/ |
||||
|
void markAsIgnored(Long id, String processedBy, String remark); |
||||
|
} |
||||
@ -0,0 +1,182 @@ |
|||||
|
package com.gaotao.modules.api.service.impl; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
||||
|
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
|
import com.gaotao.common.utils.PageUtils; |
||||
|
import com.gaotao.modules.api.dao.IfsCallErrorLogMapper; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLog; |
||||
|
import com.gaotao.modules.api.entity.IfsCallErrorLogData; |
||||
|
import com.gaotao.modules.api.service.IfsCallErrorLogService; |
||||
|
import lombok.extern.slf4j.Slf4j; |
||||
|
import org.springframework.stereotype.Service; |
||||
|
import org.springframework.transaction.annotation.Propagation; |
||||
|
import org.springframework.transaction.annotation.Transactional; |
||||
|
import org.springframework.util.StringUtils; |
||||
|
|
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* @Description IFS接口调用错误日志服务实现类 - rqrq |
||||
|
* @Author rqrq |
||||
|
* @Date 2025/10/08 |
||||
|
*/ |
||||
|
@Slf4j |
||||
|
@Service |
||||
|
public class IfsCallErrorLogServiceImpl extends ServiceImpl<IfsCallErrorLogMapper, IfsCallErrorLog> |
||||
|
implements IfsCallErrorLogService { |
||||
|
|
||||
|
@Override |
||||
|
@Transactional(propagation = Propagation.REQUIRES_NEW) |
||||
|
public Long logIfsError(String site, String interfaceName, String methodType, |
||||
|
String partNo, String lotBatchNo, |
||||
|
String sourceLocation, String destLocation, |
||||
|
Integer qty, Date expiredDate, |
||||
|
String requestData, String responseData, String errorMessage) { |
||||
|
|
||||
|
System.out.println("========== IFS错误日志记录开始 =========="); |
||||
|
System.out.println("站点: " + site + ", 接口: " + interfaceName + ", 方法: " + methodType); |
||||
|
System.out.println("物料: " + partNo + ", 批次: " + lotBatchNo); |
||||
|
|
||||
|
try { |
||||
|
IfsCallErrorLog errorLog = new IfsCallErrorLog(); |
||||
|
errorLog.setSite(site); |
||||
|
errorLog.setInterfaceName(interfaceName); |
||||
|
errorLog.setMethodType(methodType); |
||||
|
errorLog.setPartNo(partNo); |
||||
|
errorLog.setLotBatchNo(lotBatchNo); |
||||
|
errorLog.setSourceLocation(sourceLocation); |
||||
|
errorLog.setDestLocation(destLocation); |
||||
|
errorLog.setQty(qty); |
||||
|
errorLog.setExpiredDate(expiredDate); |
||||
|
errorLog.setRequestData(requestData); |
||||
|
errorLog.setResponseData(responseData); |
||||
|
errorLog.setErrorMessage(errorMessage); |
||||
|
errorLog.setProcessStatus("PENDING"); |
||||
|
errorLog.setRetryCount(0); |
||||
|
errorLog.setMaxRetry(3); |
||||
|
errorLog.setCreatedAt(new Date()); |
||||
|
|
||||
|
this.save(errorLog); |
||||
|
|
||||
|
System.out.println("IFS错误日志记录成功,日志ID: " + errorLog.getId()); |
||||
|
System.out.println("========== IFS错误日志记录结束 =========="); |
||||
|
|
||||
|
return errorLog.getId(); |
||||
|
|
||||
|
} catch (Exception e) { |
||||
|
log.error("记录IFS错误日志失败: {}", e.getMessage(), e); |
||||
|
System.out.println("IFS错误日志记录失败: " + e.getMessage()); |
||||
|
System.out.println("========== IFS错误日志记录结束 =========="); |
||||
|
return null; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public PageUtils queryPage(IfsCallErrorLogData data) throws Exception { |
||||
|
System.out.println("========== IFS错误日志查询开始 =========="); |
||||
|
System.out.println("查询条件 - 站点: " + data.getSite() + ", 状态: " + data.getProcessStatus()); |
||||
|
|
||||
|
// 构建分页对象 - rqrq |
||||
|
int pageNum = data.getPage() != null ? data.getPage() : |
||||
|
(data.getPageNum() != null ? data.getPageNum() : 1); |
||||
|
int pageSize = data.getLimit() != null ? data.getLimit() : |
||||
|
(data.getPageSize() != null ? data.getPageSize() : 10); |
||||
|
Page<IfsCallErrorLog> page = new Page<>(pageNum, pageSize); |
||||
|
|
||||
|
// 构建查询条件 - rqrq |
||||
|
QueryWrapper<IfsCallErrorLog> wrapper = new QueryWrapper<>(); |
||||
|
|
||||
|
// 站点 - rqrq |
||||
|
if (StringUtils.hasText(data.getSite())) { |
||||
|
wrapper.eq("site", data.getSite()); |
||||
|
} |
||||
|
|
||||
|
// 接口名称 - rqrq |
||||
|
if (StringUtils.hasText(data.getInterfaceName())) { |
||||
|
wrapper.eq("interface_name", data.getInterfaceName()); |
||||
|
} |
||||
|
|
||||
|
// 方法类型 - rqrq |
||||
|
if (StringUtils.hasText(data.getMethodType())) { |
||||
|
wrapper.eq("method_type", data.getMethodType()); |
||||
|
} |
||||
|
|
||||
|
// 物料编号 - rqrq |
||||
|
if (StringUtils.hasText(data.getPartNo())) { |
||||
|
wrapper.like("part_no", data.getPartNo()); |
||||
|
} |
||||
|
|
||||
|
// 批次号 - rqrq |
||||
|
if (StringUtils.hasText(data.getLotBatchNo())) { |
||||
|
wrapper.like("lot_batch_no", data.getLotBatchNo()); |
||||
|
} |
||||
|
|
||||
|
// 处理状态 - rqrq |
||||
|
if (StringUtils.hasText(data.getProcessStatus())) { |
||||
|
wrapper.eq("process_status", data.getProcessStatus()); |
||||
|
} |
||||
|
|
||||
|
// 日期范围 - rqrq |
||||
|
if (data.getStartDate() != null) { |
||||
|
wrapper.ge("created_at", data.getStartDate()); |
||||
|
} |
||||
|
if (data.getEndDate() != null) { |
||||
|
wrapper.le("created_at", data.getEndDate()); |
||||
|
} |
||||
|
|
||||
|
// 按创建时间倒序 - rqrq |
||||
|
wrapper.orderByDesc("created_at"); |
||||
|
|
||||
|
// 执行分页查询 - rqrq |
||||
|
IPage<IfsCallErrorLog> pageResult = baseMapper.selectPage(page, wrapper); |
||||
|
|
||||
|
System.out.println("查询结果总数: " + pageResult.getTotal()); |
||||
|
System.out.println("========== IFS错误日志查询结束 =========="); |
||||
|
|
||||
|
return new PageUtils(pageResult); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional |
||||
|
public void markAsProcessed(Long id, String processedBy, String remark) { |
||||
|
System.out.println("========== 标记IFS错误日志为已处理 =========="); |
||||
|
System.out.println("日志ID: " + id + ", 处理人: " + processedBy); |
||||
|
|
||||
|
IfsCallErrorLog errorLog = this.getById(id); |
||||
|
if (errorLog != null) { |
||||
|
errorLog.setProcessStatus("PROCESSED"); |
||||
|
errorLog.setProcessedAt(new Date()); |
||||
|
errorLog.setProcessedBy(processedBy); |
||||
|
errorLog.setRemark(remark); |
||||
|
errorLog.setUpdatedAt(new Date()); |
||||
|
this.updateById(errorLog); |
||||
|
|
||||
|
System.out.println("标记成功"); |
||||
|
} |
||||
|
|
||||
|
System.out.println("========== 标记IFS错误日志结束 =========="); |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
@Transactional |
||||
|
public void markAsIgnored(Long id, String processedBy, String remark) { |
||||
|
System.out.println("========== 标记IFS错误日志为已忽略 =========="); |
||||
|
System.out.println("日志ID: " + id + ", 处理人: " + processedBy); |
||||
|
|
||||
|
IfsCallErrorLog errorLog = this.getById(id); |
||||
|
if (errorLog != null) { |
||||
|
errorLog.setProcessStatus("IGNORED"); |
||||
|
errorLog.setProcessedAt(new Date()); |
||||
|
errorLog.setProcessedBy(processedBy); |
||||
|
errorLog.setRemark(remark); |
||||
|
errorLog.setUpdatedAt(new Date()); |
||||
|
this.updateById(errorLog); |
||||
|
|
||||
|
System.out.println("标记成功"); |
||||
|
} |
||||
|
|
||||
|
System.out.println("========== 标记IFS错误日志结束 =========="); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue