package jnpf.elnMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import jnpf.elnEntity.runtime.ElnRecordEntity; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Update; import java.util.List; @Mapper public interface ElnRecordMapper extends BaseMapper { @Update("UPDATE eln_record SET f_version = f_version + 1, " + "f_last_modify_user_id = #{userId}, f_last_modify_time = CURRENT_TIMESTAMP " + "WHERE f_tenant_id = #{tenantId} AND f_id = #{recordId} " + "AND f_version = #{expectedRecordVersion} AND COALESCE(f_delete_mark, 0) = 0") int advanceVersion(@Param("tenantId") String tenantId, @Param("recordId") String recordId, @Param("expectedRecordVersion") Integer expectedRecordVersion, @Param("userId") String userId); @Select("SELECT f_id AS id, jilu_bianhao AS jiluBianhao, jianyan_xiang_id AS jianyanXiangId, " + "muban_id AS mubanId, muban_bianhao AS mubanBianhao, muban_banben AS mubanBanben, " + "chuangjian_caozuo_bianma AS chuangjianCaozuoBianma, " + "dangqian_xiuding_id AS dangqianXiudingId, f_tenant_id AS fTenantId, " + "f_version AS fVersion, f_delete_mark AS fDeleteMark " + "FROM eln_record WHERE f_tenant_id = #{tenantId} AND f_id = #{recordId} " + "AND COALESCE(f_delete_mark, 0) = 0 FOR UPDATE") ElnRecordEntity selectLiveForUpdate(@Param("tenantId") String tenantId, @Param("recordId") String recordId); @Update("UPDATE eln_record SET dangqian_xiuding_id = #{newRevisionId}, " + "f_version = f_version + 1, f_last_modify_user_id = #{userId}, " + "f_last_modify_time = CURRENT_TIMESTAMP WHERE f_tenant_id = #{tenantId} " + "AND f_id = #{recordId} AND dangqian_xiuding_id = #{previousRevisionId} " + "AND f_version = #{expectedRecordVersion} AND COALESCE(f_delete_mark, 0) = 0") int switchCurrentRevision(@Param("tenantId") String tenantId, @Param("recordId") String recordId, @Param("previousRevisionId") String previousRevisionId, @Param("newRevisionId") String newRevisionId, @Param("expectedRecordVersion") Integer expectedRecordVersion, @Param("userId") String userId); @Insert("INSERT INTO eln_record (jilu_bianhao, jianyan_xiang_id, muban_id, " + "muban_bianhao, muban_banben, chuangjian_caozuo_bianma, dangqian_xiuding_id, " + "f_id, f_tenant_id, f_version, f_creator_user_id, f_creator_time, " + "f_last_modify_user_id, f_last_modify_time, f_delete_user_id, f_delete_time, " + "f_delete_mark) VALUES (#{entity.jiluBianhao}, #{entity.jianyanXiangId}, " + "#{entity.mubanId}, #{entity.mubanBianhao}, #{entity.mubanBanben}, " + "#{entity.chuangjianCaozuoBianma}, #{entity.dangqianXiudingId}, #{entity.id}, " + "#{entity.fTenantId}, #{entity.fVersion}, #{entity.fCreatorUserId}, " + "#{entity.fCreatorTime}, #{entity.fLastModifyUserId}, #{entity.fLastModifyTime}, " + "#{entity.fDeleteUserId}, #{entity.fDeleteTime}, #{entity.fDeleteMark}) " + "ON CONFLICT DO NOTHING") int insertIfAbsent(@Param("entity") ElnRecordEntity entity); @Select("SELECT f_id AS id, jilu_bianhao AS jiluBianhao, jianyan_xiang_id AS jianyanXiangId, " + "muban_id AS mubanId, muban_bianhao AS mubanBianhao, muban_banben AS mubanBanben, " + "chuangjian_caozuo_bianma AS chuangjianCaozuoBianma, " + "dangqian_xiuding_id AS dangqianXiudingId, f_tenant_id AS fTenantId, " + "f_version AS fVersion, f_delete_mark AS fDeleteMark " + "FROM eln_record WHERE f_tenant_id = #{tenantId} " + "AND jianyan_xiang_id = #{testWorkItemId} " + "AND COALESCE(f_delete_mark, 0) = 0") ElnRecordEntity selectLiveByTestWorkItem(@Param("tenantId") String tenantId, @Param("testWorkItemId") String testWorkItemId); @Select("SELECT f_id AS id, jilu_bianhao AS jiluBianhao, jianyan_xiang_id AS jianyanXiangId, " + "muban_id AS mubanId, muban_bianhao AS mubanBianhao, muban_banben AS mubanBanben, " + "chuangjian_caozuo_bianma AS chuangjianCaozuoBianma, " + "dangqian_xiuding_id AS dangqianXiudingId, f_tenant_id AS fTenantId, " + "f_version AS fVersion, f_delete_mark AS fDeleteMark " + "FROM eln_record WHERE f_tenant_id = #{tenantId} " + "AND jianyan_xiang_id = #{testWorkItemId} " + "AND chuangjian_caozuo_bianma = #{operationCode} " + "AND COALESCE(f_delete_mark, 0) = 0") ElnRecordEntity selectLiveByCreationOperation(@Param("tenantId") String tenantId, @Param("testWorkItemId") String testWorkItemId, @Param("operationCode") String operationCode); @Select("SELECT f_id AS id, jilu_bianhao AS jiluBianhao, jianyan_xiang_id AS jianyanXiangId, " + "muban_id AS mubanId, muban_bianhao AS mubanBianhao, muban_banben AS mubanBanben, " + "chuangjian_caozuo_bianma AS chuangjianCaozuoBianma, " + "dangqian_xiuding_id AS dangqianXiudingId, f_tenant_id AS fTenantId, " + "f_version AS fVersion, f_delete_mark AS fDeleteMark " + "FROM eln_record WHERE f_tenant_id = #{tenantId} " + "AND muban_bianhao = #{templateCode} " + "AND COALESCE(f_delete_mark, 0) = 0") List selectLiveByTemplateCode(@Param("tenantId") String tenantId, @Param("templateCode") String templateCode); }