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