Browse Source

取消调用记录

master
常熟吴彦祖 3 months ago
parent
commit
078bd53822
  1. 45
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoSortServiceImpl.java
  2. 47
      src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java
  3. 36
      src/main/java/com/gaotao/modules/warehouse/controller/HandlingUnitOperationLogController.java
  4. 134
      src/main/java/com/gaotao/modules/warehouse/entity/HandlingUnitOperationLog.java
  5. 101
      src/main/java/com/gaotao/modules/warehouse/entity/HandlingUnitOperationLogData.java
  6. 32
      src/main/java/com/gaotao/modules/warehouse/mapper/HandlingUnitOperationLogMapper.java
  7. 70
      src/main/java/com/gaotao/modules/warehouse/service/HandlingUnitOperationLogService.java
  8. 151
      src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitOperationLogServiceImpl.java
  9. 52
      src/main/resources/mapper/warehouse/HandlingUnitOperationLogMapper.xml

45
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/AutoSortServiceImpl.java

@ -40,6 +40,8 @@ public class AutoSortServiceImpl implements AutoSortService {
private com.gaotao.modules.notify.mapper.NewIssureMapper newIssureMapper;
@Autowired
private DeliveryTaskService deliveryTaskService;
@Autowired
private com.gaotao.modules.warehouse.service.HandlingUnitOperationLogService handlingUnitOperationLogService;
/**
* @Description 增量明细数据类内部使用- rqrq
@ -199,6 +201,28 @@ public class AutoSortServiceImpl implements AutoSortService {
if (!serialNosToDelete.isEmpty()) {
wcsIntegrationMapper.batchDeletePalletDetailsBySerialNos(callback.getSite(), serialNosToDelete);
log.info("批量删除{}条旧记录 - rqrq", serialNosToDelete.size());
// 循环记录每个标签的扫出操作日志从原栈板扫出- rqrq
for (String serialNo : serialNosToDelete) {
try {
String originalPalletId = serialToExistingPalletMap.get(serialNo);
handlingUnitOperationLogService.logHandlingUnitOperation(
callback.getSite(), // 站点
serialNo, // 条码号
"扫出", // 操作类型
"自动分拣扫出", // 操作原因
"所在栈板", // 字段名
originalPalletId, // 旧值原栈板ID
"", // 新值表示已移出
"WMS后台任务", // 操作者
null // 任务号
);
} catch (Exception e) {
log.error("记录标签扫出日志失败 - rqrq,serialNo={},错误:{}", serialNo, e.getMessage());
// 日志记录失败不影响主流程继续执行
}
}
log.info("扫出日志记录完成 - rqrq");
}
// 6.4 批量插入排除已在目标托盘的记录- rqrq
@ -216,6 +240,27 @@ public class AutoSortServiceImpl implements AutoSortService {
if (!detailsToInsert.isEmpty()) {
wcsIntegrationMapper.batchSavePalletDetailNoValidation(detailsToInsert);
log.info("批量扫进{}条增量数据 - rqrq", detailsToInsert.size());
// 循环记录每个标签的扫入操作日志 - rqrq
for (PalletDetailInsert detail : detailsToInsert) {
try {
handlingUnitOperationLogService.logHandlingUnitOperation(
detail.getSite(), // 站点
detail.getSerialNo(), // 条码号
"扫入", // 操作类型
"自动分拣扫入", // 操作原因
"所在栈板", // 字段名
"", // 旧值表示新扫入
targetPalletId, // 新值目标栈板ID
"WMS后台任务", // 操作者
null // 任务号
);
} catch (Exception e) {
log.error("记录标签扫入日志失败 - rqrq,serialNo={},错误:{}", detail.getSerialNo(), e.getMessage());
// 日志记录失败不影响主流程继续执行
}
}
log.info("扫入日志记录完成 - rqrq");
}
// 记录所有处理成功的序列号包括已在目标托盘的- rqrq

47
src/main/java/com/gaotao/modules/automatedWarehouse/service/impl/WcsIntegrationServiceImpl.java

@ -18,6 +18,7 @@ import com.gaotao.modules.trans.entity.TransNoControl;
import com.gaotao.modules.trans.service.TransNoControlService;
import com.gaotao.modules.warehouse.dao.PalletMapper;
import com.gaotao.modules.warehouse.entity.Pallet;
import com.gaotao.modules.warehouse.service.HandlingUnitOperationLogService;
import com.gaotao.modules.warehouse.service.PalletOperationLogService;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -57,6 +58,8 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
private com.gaotao.modules.notify.mapper.NewIssureMapper newIssureMapper;
@Autowired
private DeliveryTaskService deliveryTaskService;
@Autowired
private HandlingUnitOperationLogService handlingUnitOperationLogService;
@org.springframework.beans.factory.annotation.Value("${custom.wcs-url}")
private String wcsUrl;
@Override
@ -479,12 +482,13 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
throw new Exception("栈板和物料的仓库不同,无法进行打托操作");
}
String oldPalletId="";
// 2. 检查标签是否已在栈板中当前栈板或其他栈板
Map<String, Object> existingPalletInfo = wcsIntegrationMapper.findPalletByLabel(site, serialNo);
if (existingPalletInfo != null) {
String existingPalletId = (String) existingPalletInfo.get("palletId");
oldPalletId=existingPalletId;
Integer wcsFlag = Integer.valueOf(existingPalletInfo.get("wcsFlag")!=null?existingPalletInfo.get("wcsFlag").toString():"1");
// 如果标签在当前栈板提示不要重复扫描
@ -535,7 +539,7 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
String partNo = (String) labelInfo.get("partNo");
wcsIntegrationMapper.savePalletDetail(site, palletId, position, layer, serialNo, partNo, username);
handlingUnitOperationLogService.logHandlingUnitOperation(site,serialNo,"扫入","组盘扫标签","所在栈板",oldPalletId,palletId,username,null);
// 6. 更新空栈板标记扫入后栈板有货标记为N
updatePalletEmptyFlag(site, palletId, username);
}
@ -579,6 +583,7 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
wcsIntegrationMapper.deletePalletDetail(site, palletId, serialNo);
handlingUnitOperationLogService.logHandlingUnitOperation(site,serialNo,"扫出","组盘扫标签","所在栈板",palletId,"",username,null);
// 更新空栈板标记扫出后根据剩余数量判断
updatePalletEmptyFlag(site, palletId, username);
@ -605,7 +610,8 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
if (pallet != null && "Y".equals(pallet.getCallingFlag())) {
throw new Exception("原栈板正在被调用中,无法恢复标签,最近一次调用备注:" + (pallet.getRemark() != null ? pallet.getRemark() : "无"));
}
// 更新当前栈板的空栈板标记 - rqrq
Map<String, Object> currentPalletInfo = wcsIntegrationMapper.findPalletByLabel(data.getSite(), data.getSerialNo());
// 执行恢复操作先删除当前记录再插入到原栈板- rqrq
wcsIntegrationMapper.deletePalletDetailBySerialNo(data.getSite(), data.getSerialNo());
wcsIntegrationMapper.restorePalletDetail(data.getSite(), data.getSerialNo(), data.getOriginalPalletId(),
@ -614,14 +620,15 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
String username = ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername();
// 更新当前栈板的空栈板标记 - rqrq
Map<String, Object> currentPalletInfo = wcsIntegrationMapper.findPalletByLabel(data.getSite(), data.getSerialNo());
String oldPalletId="";
if (currentPalletInfo != null) {
String currentPalletId = (String) currentPalletInfo.get("palletId");
oldPalletId=currentPalletId;
if (StringUtils.hasText(currentPalletId) && !currentPalletId.equals(data.getOriginalPalletId())) {
updatePalletEmptyFlag(data.getSite(), currentPalletId, username);
}
}
handlingUnitOperationLogService.logHandlingUnitOperation(data.getSite(), data.getSerialNo(),"扫入","分拣扫回","所在栈板",oldPalletId,data.getOriginalPalletId(),username,null);
// 更新原栈板的空栈板标记 - rqrq
updatePalletEmptyFlag(data.getSite(), data.getOriginalPalletId(), username);
@ -2307,10 +2314,38 @@ public class WcsIntegrationServiceImpl implements WcsIntegrationService {
if (detailCount == 0) {
throw new RuntimeException("栈板无明细数据");
}
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
String username = currentUser.getUsername();
// 删除前先查询所有明细并记录日志 - rqrq
List<PalletDetailData> detailList = wcsIntegrationMapper.getPalletDetailsData(site, palletId);
System.out.println("查询到栈板明细 " + detailList.size() + " 条,开始记录移出日志 - rqrq");
// 循环记录每个标签的移出操作日志 - rqrq
for (PalletDetailData detail : detailList) {
try {
handlingUnitOperationLogService.logHandlingUnitOperation(
site, // 站点
detail.getSerialNo(), // 条码号
"扫出", // 操作类型
"一键移出物料", // 操作原因
"所在栈板", // 字段名
palletId, // 旧值原栈板ID
"", // 新值表示已移出
username, // 操作者
null // 任务号
);
} catch (Exception e) {
System.err.println("记录标签移出日志失败 - rqrq,serialNo=" + detail.getSerialNo() + ",错误:" + e.getMessage());
// 日志记录失败不影响主流程继续执行
}
}
System.out.println("移出日志记录完成 - rqrq");
// 删除所有明细 - rqrq
wcsIntegrationMapper.deleteAllPalletDetail(site, palletId);
updatePalletEmptyFlag(site, palletId, currentUser.getUsername());
updatePalletEmptyFlag(site, palletId, username);
System.out.println("已删除所有栈板明细 - rqrq");
System.out.println("移出全部物料完成 - rqrq");

36
src/main/java/com/gaotao/modules/warehouse/controller/HandlingUnitOperationLogController.java

@ -0,0 +1,36 @@
package com.gaotao.modules.warehouse.controller;
import com.gaotao.common.utils.PageUtils;
import com.gaotao.common.utils.R;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLogData;
import com.gaotao.modules.warehouse.service.HandlingUnitOperationLogService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 标签操作记录Controller - rqrq
*
* @author rqrq
* @date 2025/11/28
*/
@RestController
@RequestMapping("/warehouse/handlingunitoperationlog")
public class HandlingUnitOperationLogController {
@Autowired
private HandlingUnitOperationLogService handlingUnitOperationLogService;
/**
* @Description 分页查询标签操作记录列表 - rqrq
* @param query 查询条件
* @return R
* @author rqrq
* @date 2025/11/28
*/
@PostMapping("/list")
public R searchHandlingUnitOperationLogList(@RequestBody HandlingUnitOperationLogData query) {
PageUtils page = handlingUnitOperationLogService.searchHandlingUnitOperationLogList(query);
return R.ok().put("page", page);
}
}

134
src/main/java/com/gaotao/modules/warehouse/entity/HandlingUnitOperationLog.java

@ -0,0 +1,134 @@
package com.gaotao.modules.warehouse.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.apache.ibatis.type.Alias;
import java.util.Date;
/**
* 标签操作记录实体类 - 直接映射数据库表 - rqrq
*
* <p><b>数据库表名</b>handling_unit_operation_log</p>
*
* <p><b>表索引</b></p>
* <ul>
* <li>PRIMARY KEY: id</li>
* <li>INDEX: IX_log_serial_no (serial_no)</li>
* <li>INDEX: IX_log_site_time (site, operation_time DESC)</li>
* <li>INDEX: IX_log_operation_type (operation_type, operation_time DESC)</li>
* </ul>
*
* <p><b>核心字段说明</b></p>
* <ul>
* <li><b>id</b>日志ID自增主键</li>
* <li><b>serial_no</b>关联标签条码号对应 handling_unit.unit_id</li>
* <li><b>operation_type</b>操作类型CREATE / UPDATE / DELETE / MERGE / SPLIT / FREEZE </li>
* <li><b>operation_reason</b>操作原因/描述</li>
* <li><b>old_value / new_value</b>字段变更前后的值</li>
* <li><b>operator</b>操作者</li>
* <li><b>operation_time</b>操作时间</li>
* <li><b>task_no</b>关联任务号/业务单号</li>
* </ul>
*
* <p><b>业务用途</b></p>
* <pre>
* 记录标签的所有操作历史包括
* 1. 标签创建修改删除
* 2. 标签合并拆分操作
* 3. 标签冻结解冻操作
* 4. 标签特殊信息修改
* 5. 其他业务操作
* </pre>
*
* @author rqrq
* @date 2025/11/28
*/
@Data
@TableName("handling_unit_operation_log")
@Alias("HandlingUnitOperationLog")
public class HandlingUnitOperationLog {
/**
* 日志ID自增主键- rqrq
*/
@TableId(type = IdType.AUTO)
@TableField("id")
private Integer id;
/**
* 关联标签条码号(对应 handling_unit.unit_id) - rqrq
*/
@TableField("serial_no")
private String serialNo;
/**
* 站点可冗余记录方便跨站点查询- rqrq
*/
@TableField("site")
private String site;
/**
* 被操作/修改的字段名如果是"创建标签"这种动作可为空- rqrq
*/
@TableField("field_name")
private String fieldName;
/**
* 操作类型CREATE=创建标签UPDATE=更新字段DELETE=删除MERGE=合并SPLIT=拆分FREEZE=冻结等- rqrq
*/
@TableField("operation_type")
private String operationType;
/**
* 操作原因/描述入库创建移库合并拆分冻结解冻等- rqrq
*/
@TableField("operation_reason")
private String operationReason;
/**
* 变更前的值 - rqrq
*/
@TableField("old_value")
private String oldValue;
/**
* 变更后的值 - rqrq
*/
@TableField("new_value")
private String newValue;
/**
* 操作者 - rqrq
*/
@TableField("operator")
private String operator;
/**
* 操作时间 - rqrq
*/
@TableField("operation_time")
private Date operationTime;
/**
* 关联任务号/业务单号可选便于追踪- rqrq
*/
@TableField("task_no")
private String taskNo;
/**
* 操作IP可选扩展- rqrq
*/
@TableField("ip_address")
private String ipAddress;
/**
* 额外备注可扩展- rqrq
*/
@TableField("remark")
private String remark;
}

101
src/main/java/com/gaotao/modules/warehouse/entity/HandlingUnitOperationLogData.java

@ -0,0 +1,101 @@
package com.gaotao.modules.warehouse.entity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.ibatis.type.Alias;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* @Description 标签操作记录业务实体类 - 用于业务查询和操作 - rqrq
*
* <p><b>继承关系</b>继承 HandlingUnitOperationLog 基础实体类</p>
*
* <p><b>用途</b></p>
* <ul>
* <li>用于分页查询接口的参数和返回值</li>
* <li>包含额外的查询条件字段</li>
* <li>包含分页参数</li>
* </ul>
*
* <p><b>常用查询逻辑</b></p>
* <pre>
* -- 示例1模糊查询条码号
* WHERE serial_no LIKE '%' + #{query.searchSerialNo} + '%'
*
* -- 示例2按操作类型过滤
* WHERE operation_type = #{query.operationType}
*
* -- 示例3日期范围查询
* WHERE operation_time BETWEEN #{query.startDate} AND #{query.endDate}
* </pre>
*
* @author rqrq
* @date 2025/11/28
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Alias("HandlingUnitOperationLogData")
public class HandlingUnitOperationLogData extends HandlingUnitOperationLog {
// ==================== 分页参数必需====================
/**
* 分页参数 - 当前页码 - rqrq
*/
private Integer page = 1;
/**
* 分页参数 - 每页数量 - rqrq
*/
private Integer limit = 20;
// ==================== 查询条件字段 ====================
/**
* 查询条件 - 条码号模糊查询- rqrq
* <p>SQL示例WHERE serial_no LIKE '%' + #{query.searchSerialNo} + '%'</p>
*/
private String searchSerialNo;
/**
* 查询条件 - 操作类型精确查询- rqrq
* <p>SQL示例WHERE operation_type = #{query.searchOperationType}</p>
*/
private String searchOperationType;
/**
* 查询条件 - 操作者模糊查询- rqrq
* <p>SQL示例WHERE operator LIKE '%' + #{query.searchOperator} + '%'</p>
*/
private String searchOperator;
/**
* 查询条件 - 任务号/业务单号模糊查询- rqrq
* <p>SQL示例WHERE task_no LIKE '%' + #{query.searchTaskNo} + '%'</p>
*/
private String searchTaskNo;
/**
* 查询条件 - 字段名精确查询- rqrq
* <p>SQL示例WHERE field_name = #{query.searchFieldName}</p>
*/
private String searchFieldName;
/**
* 查询条件 - 查询开始日期 - rqrq
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date startDate;
/**
* 查询条件 - 查询结束日期 - rqrq
*/
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date endDate;
}

32
src/main/java/com/gaotao/modules/warehouse/mapper/HandlingUnitOperationLogMapper.java

@ -0,0 +1,32 @@
package com.gaotao.modules.warehouse.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLog;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLogData;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 标签操作记录Mapper接口 - rqrq
*
* @author rqrq
* @date 2025/11/28
*/
@Mapper
public interface HandlingUnitOperationLogMapper extends BaseMapper<HandlingUnitOperationLog> {
/**
* @Description 分页查询标签操作记录列表 - rqrq
* @param page 分页对象
* @param query 查询条件
* @return IPage<HandlingUnitOperationLogData>
* @author rqrq
* @date 2025/11/28
*/
IPage<HandlingUnitOperationLogData> searchHandlingUnitOperationLogList(
Page<HandlingUnitOperationLogData> page,
@Param("query") HandlingUnitOperationLogData query);
}

70
src/main/java/com/gaotao/modules/warehouse/service/HandlingUnitOperationLogService.java

@ -0,0 +1,70 @@
package com.gaotao.modules.warehouse.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gaotao.common.utils.PageUtils;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLog;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLogData;
/**
* 标签操作记录Service接口 - rqrq
*
* @author rqrq
* @date 2025/11/28
*/
public interface HandlingUnitOperationLogService extends IService<HandlingUnitOperationLog> {
/**
* @Description 分页查询标签操作记录列表 - rqrq
* @param query 查询条件
* @return PageUtils
* @author rqrq
* @date 2025/11/28
*/
PageUtils searchHandlingUnitOperationLogList(HandlingUnitOperationLogData query);
/**
* @Description 记录标签操作日志通用插入方法- rqrq
* @param site 站点
* @param serialNo 条码号
* @param operationType 操作类型CREATE/UPDATE/DELETE/MERGE/SPLIT/FREEZE等
* @param operationReason 操作原因
* @param fieldName 字段名可选
* @param oldValue 旧值
* @param newValue 新值
* @param operator 操作者
* @param taskNo 任务号可选
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
boolean logHandlingUnitOperation(String site, String serialNo, String operationType, String operationReason,
String fieldName, String oldValue, String newValue, String operator, String taskNo);
/**
* @Description 记录标签字段更新日志简化版- rqrq
* @param site 站点
* @param serialNo 条码号
* @param fieldName 字段名
* @param oldValue 旧值
* @param newValue 新值
* @param operator 操作者
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
boolean logFieldUpdate(String site, String serialNo, String fieldName, String oldValue, String newValue, String operator);
/**
* @Description 记录标签创建日志 - rqrq
* @param site 站点
* @param serialNo 条码号
* @param operationReason 创建原因入库创建拆分创建等
* @param taskNo 任务号
* @param operator 操作者
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
boolean logHandlingUnitCreate(String site, String serialNo, String operationReason, String taskNo, String operator);
}

151
src/main/java/com/gaotao/modules/warehouse/service/impl/HandlingUnitOperationLogServiceImpl.java

@ -0,0 +1,151 @@
package com.gaotao.modules.warehouse.service.impl;
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.warehouse.entity.HandlingUnitOperationLog;
import com.gaotao.modules.warehouse.entity.HandlingUnitOperationLogData;
import com.gaotao.modules.warehouse.mapper.HandlingUnitOperationLogMapper;
import com.gaotao.modules.warehouse.service.HandlingUnitOperationLogService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
/**
* 标签操作记录Service实现类 - rqrq
*
* @author rqrq
* @date 2025/11/28
*/
@Service("handlingUnitOperationLogService")
@Slf4j
public class HandlingUnitOperationLogServiceImpl
extends ServiceImpl<HandlingUnitOperationLogMapper, HandlingUnitOperationLog>
implements HandlingUnitOperationLogService {
/**
* @Description 分页查询标签操作记录列表 - rqrq
* @param query 查询条件
* @return PageUtils
* @author rqrq
* @date 2025/11/28
*/
@Override
public PageUtils searchHandlingUnitOperationLogList(HandlingUnitOperationLogData query) {
System.out.println("开始分页查询标签操作记录 - rqrq,条码号=" + query.getSearchSerialNo() +
", 操作类型=" + query.getSearchOperationType());
// 创建分页对象 - rqrq
Page<HandlingUnitOperationLogData> page = new Page<>(query.getPage(), query.getLimit());
// 执行分页查询 - rqrq
IPage<HandlingUnitOperationLogData> pageResult = baseMapper.searchHandlingUnitOperationLogList(page, query);
System.out.println("查询完成 - rqrq,共查询到 " + pageResult.getTotal() + " 条数据");
return new PageUtils(pageResult);
}
/**
* @Description 记录标签操作日志通用插入方法- rqrq
* @param site 站点
* @param serialNo 条码号
* @param operationType 操作类型CREATE/UPDATE/DELETE/MERGE/SPLIT/FREEZE等
* @param operationReason 操作原因
* @param fieldName 字段名可选
* @param oldValue 旧值
* @param newValue 新值
* @param operator 操作者
* @param taskNo 任务号可选
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean logHandlingUnitOperation(String site, String serialNo, String operationType, String operationReason,
String fieldName, String oldValue, String newValue, String operator, String taskNo) {
System.out.println("开始记录标签操作日志 - rqrq,条码号=" + serialNo + ", 操作类型=" + operationType);
try {
HandlingUnitOperationLog log = new HandlingUnitOperationLog();
log.setSerialNo(serialNo);
log.setSite(site);
log.setOperationType(operationType);
log.setOperationReason(operationReason);
log.setFieldName(fieldName);
log.setOldValue(oldValue);
log.setNewValue(newValue);
log.setOperator(operator);
log.setTaskNo(taskNo);
log.setOperationTime(new Date());
boolean result = this.save(log);
System.out.println("记录标签操作日志完成 - rqrq,结果=" + result);
return result;
} catch (Exception e) {
System.out.println("记录标签操作日志失败 - rqrq,错误=" + e.getMessage());
throw e;
}
}
/**
* @Description 记录标签字段更新日志简化版- rqrq
* @param site 站点
* @param serialNo 条码号
* @param fieldName 字段名
* @param oldValue 旧值
* @param newValue 新值
* @param operator 操作者
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean logFieldUpdate(String site, String serialNo, String fieldName, String oldValue, String newValue, String operator) {
return logHandlingUnitOperation(
site,
serialNo,
"UPDATE",
"字段更新:" + fieldName,
fieldName,
oldValue,
newValue,
operator,
null
);
}
/**
* @Description 记录标签创建日志 - rqrq
* @param site 站点
* @param serialNo 条码号
* @param operationReason 创建原因入库创建拆分创建等
* @param taskNo 任务号
* @param operator 操作者
* @return boolean
* @author rqrq
* @date 2025/11/28
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean logHandlingUnitCreate(String site, String serialNo, String operationReason, String taskNo, String operator) {
return logHandlingUnitOperation(
site,
serialNo,
"CREATE",
operationReason,
null,
null,
null,
operator,
taskNo
);
}
}

52
src/main/resources/mapper/warehouse/HandlingUnitOperationLogMapper.xml

@ -0,0 +1,52 @@
<?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.warehouse.mapper.HandlingUnitOperationLogMapper">
<!-- rqrq - 分页查询标签操作记录列表 -->
<select id="searchHandlingUnitOperationLogList" resultType="HandlingUnitOperationLogData">
SELECT
id,
serial_no AS serialNo,
site,
field_name AS fieldName,
operation_type AS operationType,
operation_reason AS operationReason,
old_value AS oldValue,
new_value AS newValue,
operator,
operation_time AS operationTime,
task_no AS taskNo,
ip_address AS ipAddress,
remark
FROM handling_unit_operation_log WITH (NOLOCK)
WHERE 1=1
<if test="query.site != null and query.site != ''">
AND site = #{query.site}
</if>
<if test="query.searchSerialNo != null and query.searchSerialNo != ''">
AND serial_no LIKE '%' + #{query.searchSerialNo} + '%'
</if>
<if test="query.searchOperationType != null and query.searchOperationType != ''">
AND operation_type = #{query.searchOperationType}
</if>
<if test="query.searchOperator != null and query.searchOperator != ''">
AND operator LIKE '%' + #{query.searchOperator} + '%'
</if>
<if test="query.searchTaskNo != null and query.searchTaskNo != ''">
AND task_no LIKE '%' + #{query.searchTaskNo} + '%'
</if>
<if test="query.searchFieldName != null and query.searchFieldName != ''">
AND field_name = #{query.searchFieldName}
</if>
<if test="query.startDate != null">
AND operation_time &gt;= #{query.startDate}
</if>
<if test="query.endDate != null">
AND operation_time &lt;= #{query.endDate}
</if>
ORDER BY operation_time DESC
</select>
</mapper>
Loading…
Cancel
Save