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