6 changed files with 189 additions and 0 deletions
-
16src/main/java/com/spring/modules/part/controller/PartInformationController.java
-
55src/main/java/com/spring/modules/part/entity/PartFieldChangeLogEntity.java
-
30src/main/java/com/spring/modules/part/mapper/PartFieldChangeLogMapper.java
-
8src/main/java/com/spring/modules/part/service/PartInformationService.java
-
34src/main/java/com/spring/modules/part/service/impl/PartInformationServiceImpl.java
-
46src/main/resources/mapper/part/PartFieldChangeLogMapper.xml
@ -0,0 +1,55 @@ |
|||||
|
package com.spring.modules.part.entity; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.annotation.IdType; |
||||
|
import com.baomidou.mybatisplus.annotation.TableId; |
||||
|
import com.baomidou.mybatisplus.annotation.TableName; |
||||
|
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
|
import lombok.Data; |
||||
|
|
||||
|
import java.io.Serializable; |
||||
|
import java.math.BigDecimal; |
||||
|
import java.util.Date; |
||||
|
|
||||
|
/** |
||||
|
* 物料关键字段变更日志 |
||||
|
* 追踪 std_order_qty 和 estimated_material_cost 的每次变更 |
||||
|
*/ |
||||
|
@Data |
||||
|
@TableName("part_field_change_log") |
||||
|
public class PartFieldChangeLogEntity implements Serializable { |
||||
|
private static final long serialVersionUID = 1L; |
||||
|
|
||||
|
@TableId(type = IdType.AUTO) |
||||
|
private Long id; |
||||
|
|
||||
|
/** 工厂 */ |
||||
|
private String site; |
||||
|
|
||||
|
/** 物料编码 */ |
||||
|
private String partNo; |
||||
|
|
||||
|
/** 变更字段名:std_order_qty 或 estimated_material_cost */ |
||||
|
private String fieldName; |
||||
|
|
||||
|
/** 变更前的值 */ |
||||
|
private BigDecimal oldValue; |
||||
|
|
||||
|
/** 变更后的值 */ |
||||
|
private BigDecimal newValue; |
||||
|
|
||||
|
/** 变更时间 */ |
||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
||||
|
private Date changeTime; |
||||
|
|
||||
|
/** 数据库连接账号(触发器记录,可辨别是否来自存储过程/应用) */ |
||||
|
private String dbUser; |
||||
|
|
||||
|
/** 连接来源程序名(如 Microsoft JDBC Driver for SQL Server) */ |
||||
|
private String appName; |
||||
|
|
||||
|
/** 发起变更的主机名 */ |
||||
|
private String hostName; |
||||
|
|
||||
|
/** 备注(Java 层补充写入操作人、操作类型等) */ |
||||
|
private String remark; |
||||
|
} |
||||
@ -0,0 +1,30 @@ |
|||||
|
package com.spring.modules.part.mapper; |
||||
|
|
||||
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
||||
|
import com.spring.modules.part.entity.PartFieldChangeLogEntity; |
||||
|
import org.apache.ibatis.annotations.Mapper; |
||||
|
import org.apache.ibatis.annotations.Param; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
@Mapper |
||||
|
public interface PartFieldChangeLogMapper extends BaseMapper<PartFieldChangeLogEntity> { |
||||
|
|
||||
|
/** |
||||
|
* 查询指定物料的字段变更记录 |
||||
|
*/ |
||||
|
List<PartFieldChangeLogEntity> queryChangeLog( |
||||
|
@Param("site") String site, |
||||
|
@Param("partNo") String partNo, |
||||
|
@Param("fieldName") String fieldName); |
||||
|
|
||||
|
/** |
||||
|
* 更新最近一条日志的 db_user(PLM 操作人)和 remark |
||||
|
*/ |
||||
|
void updateLastLogUser( |
||||
|
@Param("site") String site, |
||||
|
@Param("partNo") String partNo, |
||||
|
@Param("fieldName") String fieldName, |
||||
|
@Param("operator") String operator, |
||||
|
@Param("remark") String remark); |
||||
|
} |
||||
@ -0,0 +1,46 @@ |
|||||
|
<?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.spring.modules.part.mapper.PartFieldChangeLogMapper"> |
||||
|
|
||||
|
<!-- 查询指定物料的字段变更记录 --> |
||||
|
<select id="queryChangeLog" resultType="com.spring.modules.part.entity.PartFieldChangeLogEntity"> |
||||
|
SELECT |
||||
|
id, |
||||
|
site, |
||||
|
part_no AS partNo, |
||||
|
field_name AS fieldName, |
||||
|
old_value AS oldValue, |
||||
|
new_value AS newValue, |
||||
|
change_time AS changeTime, |
||||
|
db_user AS dbUser, |
||||
|
app_name AS appName, |
||||
|
host_name AS hostName, |
||||
|
remark |
||||
|
FROM part_field_change_log |
||||
|
WHERE site = #{site} |
||||
|
AND part_no = #{partNo} |
||||
|
<if test="fieldName != null and fieldName != ''"> |
||||
|
AND field_name = #{fieldName} |
||||
|
</if> |
||||
|
ORDER BY change_time DESC |
||||
|
</select> |
||||
|
|
||||
|
<!-- 触发器写入后,Java 层立即回填 PLM 操作人到 db_user,并补充 remark --> |
||||
|
<update id="updateLastLogUser"> |
||||
|
UPDATE part_field_change_log |
||||
|
SET db_user = #{operator}, |
||||
|
remark = #{remark} |
||||
|
WHERE id = ( |
||||
|
SELECT TOP 1 id |
||||
|
FROM part_field_change_log |
||||
|
WHERE site = #{site} |
||||
|
AND part_no = #{partNo} |
||||
|
AND field_name = #{fieldName} |
||||
|
AND db_user NOT LIKE '%|PLM|%' |
||||
|
ORDER BY change_time DESC |
||||
|
) |
||||
|
</update> |
||||
|
|
||||
|
</mapper> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue