From 2893347bf72477c4d108e8589a0f61e3e97a990c Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期三, 27 五月 2020 09:56:56 +0800 Subject: [PATCH] bak 更新后 --- src/main/resources/mapping/TableInfoMapper.xml | 706 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 363 insertions(+), 343 deletions(-) diff --git a/src/main/resources/mapping/TableInfoMapper.xml b/src/main/resources/mapping/TableInfoMapper.xml index 5526fe0..8a6f8e0 100644 --- a/src/main/resources/mapping/TableInfoMapper.xml +++ b/src/main/resources/mapping/TableInfoMapper.xml @@ -6,400 +6,356 @@ show TABLES like #{tableName} </select> + <select id="selectIdxByTableName" parameterType="java.lang.String" resultType="java.util.Map" + statementType="STATEMENT"> + SELECT * FROM mysql.`innodb_index_stats` a WHERE a.table_name = ${tableName} + </select> + <select id="getTableField" parameterType="String" resultType="com.highdatas.mdm.entity.TableSchemaResult"> - select COLUMN_NAME as fieldName,DATA_TYPE as dbType from information_schema.COLUMNS where table_name = #{tableName} and table_schema = (select database()) ; + select COLUMN_NAME as fieldName,DATA_TYPE as dbType, character_maximum_length as length from information_schema.COLUMNS where table_name = #{tableName} and table_schema = (select database()) </select> - <select id="getTableFieldFromDb" parameterType="com.highdatas.mdm.entity.TableSchema" resultType="com.highdatas.mdm.entity.TableSchemaResult"> - select COLUMN_NAME as fieldName,DATA_TYPE as dbType from information_schema.COLUMNS where table_name = #{tableName} and table_schema = #{dbName}; + <select id="getTableFieldFromDb" parameterType="com.highdatas.mdm.entity.TableSchema" + resultType="com.highdatas.mdm.entity.TableSchemaResult"> + select COLUMN_NAME as fieldName,DATA_TYPE as dbType,character_maximum_length as length from information_schema.COLUMNS where table_name = #{tableName} and table_schema = #{dbName} </select> - <select id="selectByPage" resultType="java.util.Map" statementType="STATEMENT" > + <select id="selectByPage" resultType="java.util.Map" statementType="STATEMENT"> select ${fields} from ${tableName} where ${where} ${limit} </select> - <select id="selectByPageByVersion" resultType="java.util.Map" statementType="STATEMENT" > + <select id="selectDistinct" resultType="java.util.Map" statementType="STATEMENT"> + select DISTINCT ${fields} from ${tableName} where ${where} + </select> + + <select id="selectByPageByVersion" resultType="java.util.Map" statementType="STATEMENT"> <![CDATA[ - select ${fields} from ( - SELECT - ${A1fields} from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and operate = 'create' - AND tm.std_id = m.id - and maintain.table_name = '${tableName}' - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt - LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id - LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is null + SELECT ${fields} +FROM + (SELECT ${A1fields} + FROM ${tableName} a1 + LEFT JOIN + (SELECT DISTINCT mt1.std_id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND (operate = 'create' + OR operate = 'update') ) v + ON v.std_id = a1.id + WHERE v.std_id IS NULL UNION - SELECT - ${A2fields} - from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and operate = 'create' - AND tm.std_id = m.id - and maintain.table_name = '${tableName}' - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt - LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id - LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is not null - UNION - SELECT ${tempFields} FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete' - and maintain.table_name = '${tableName}' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'create' - AND mt.std_id = mt1.std_id - and maintain.table_name = '${tableName}' - ) - )a where ${where} ${limit} - ]]> + SELECT ${tempFields} + FROM + (SELECT mt.*, + m.order_no + FROM ${tableTempName} mt + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt.id + LEFT JOIN maintain m + ON md.parent_id = m.id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'update' ) AS a1 + INNER JOIN + (SELECT std_id, + min(order_no) AS order_no + FROM + (SELECT mt.id, + std_id, + m.order_no + FROM ${tableTempName} mt + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt.id + LEFT JOIN maintain m + ON md.parent_id = m.id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'update' + AND NOT EXISTS + (SELECT mt1.id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'create' + AND mt1.std_id = mt.std_id ) ) AS gz + GROUP BY std_id ) AS zb + ON a1.std_id = zb.std_id + AND a1.order_no = zb.order_no + UNION + SELECT DISTINCT ${tempFields} + FROM ${tableTempName} a1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = a1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + LEFT JOIN + (SELECT DISTINCT mt1.std_id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND (operate = 'create' + OR operate = 'update') ) zb + ON zb.std_id = a1.std_id + WHERE zb.std_id is null + AND md.operate = 'delete' + AND m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' ) a + WHERE ${where} ${limit} + ]]> </select> - <select id="selectByPageByMaxVersion" resultType="java.util.Map" statementType="STATEMENT" > + <select id="selectByPageByMaxVersion" resultType="java.util.Map" statementType="STATEMENT"> <![CDATA[ - select ${fields},operate, status from ( - SELECT - ${A1fields}, '' as operate, '' as status from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND tm.std_id = m.id - and maintain.table_name = '${tableName}' - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id + + select ${fields},operate, status from ( + SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1 + LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.id is null + UNION + SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1 + LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id + LEFT JOIN maintain m on m.id = md.parent_id + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.`status` = 'working' + + union + SELECT ${A1fields}, '', '' from ${tableName} a1 + LEFT JOIN + ( + SELECT DISTINCT std_id from ${tableTempName} mt LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is null + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.id is null UNION - SELECT - ${A2fields}, 'update' as operate, a2.status as status - from ( - SELECT ${fields} from ${tableName} m - ) a1 - LEFT JOIN - ( - SELECT ${tempHFields}, f.status from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - LEFT JOIN flows f on m.flow_id = f.id - INNER JOIN ( - SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt + SELECT DISTINCT std_id from ${tableTempName} mt LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is not null - UNION - SELECT ${tempFields}, 'create' as operate, f.status as status FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN flows f on maintain.flow_id = f.id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'create' - and maintain.table_name = '${tableName}' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'delete' - AND mt.std_id = mt1.std_id - and maintain.table_name = '${tableName}' - ) - UNION - SELECT ${tempFields}, 'delete' as operate, f.status as status FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN flows f on maintain.flow_id = f.id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} AND operate = 'delete' - and maintain.table_name = '${tableName}' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'create' - AND mt.std_id = mt1.std_id - and maintain.table_name = '${tableName}' - ) + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.`status` = 'working' + ) a on a.std_id = a1.id where a.std_id is null )a where ${where} ${limit} - ]]> + + ]]> </select> - <select id="select" resultType="java.util.Map" statementType="STATEMENT" > + <select id="select" resultType="java.util.Map" statementType="STATEMENT"> select ${fields} from ${tableName} where ${where} </select> - <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Long"> + <select id="tempDeal" statementType="STATEMENT" resultType="java.lang.Integer"> + UPDATE ${tableTempName} mt + INNER JOIN ( + SELECT pre_merge_id from + maintain_detail + WHERE maintain_detail.parent_id = ${maintainId} + )md on mt.id = md.pre_merge_id + set mt.deal = 1 - UPDATE ${tableTempName} t - SET deal = 1 - where EXISTS ( - SELECT pre_merge_id from maintain_detail WHERE parent_id = ${maintainId} - and maintain_detail.pre_merge_id = t.id - ) + </select> - <select id="getCount" resultType="java.lang.Long" statementType="STATEMENT" > + <select id="getCount" resultType="java.lang.Long" statementType="STATEMENT"> select count(1) from ${tableName} where ${where} </select> - <select id="getCountByVersion" resultType="java.lang.Long" statementType="STATEMENT" > + <select id="getCountByVersion" resultType="java.lang.Long" statementType="STATEMENT"> <![CDATA[ - select count(1) from ( - SELECT - ${A1fields} - from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and maintain.table_name = '${tableName}' - and operate = 'create' - AND tm.std_id = m.id - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt - LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id - LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is null + SELECT count(1) +FROM + (SELECT ${A1fields} + FROM ${tableName} a1 + LEFT JOIN + (SELECT DISTINCT mt1.std_id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND (operate = 'create' + OR operate = 'update') ) v + ON v.std_id = a1.id + WHERE v.std_id IS NULL UNION - SELECT - ${A2fields} - from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and maintain.table_name = '${tableName}' - and operate = 'create' - AND tm.std_id = m.id - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT MIN(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt - LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id - LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is not null - UNION - SELECT ${tempFields} FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and maintain.table_name = '${tableName}' - AND operate = 'delete' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'create' - AND mt.std_id = mt1.std_id - and maintain.table_name = '${tableName}' - ) - )a where ${where} - ]]> + SELECT ${tempFields} + FROM + (SELECT mt.*, + m.order_no + FROM ${tableTempName} mt + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt.id + LEFT JOIN maintain m + ON md.parent_id = m.id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'update' ) AS a1 + INNER JOIN + (SELECT std_id, + min(order_no) AS order_no + FROM + (SELECT mt.id, + std_id, + m.order_no + FROM ${tableTempName} mt + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt.id + LEFT JOIN maintain m + ON md.parent_id = m.id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'update' + AND NOT EXISTS + (SELECT mt1.id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND operate = 'create' + AND mt1.std_id = mt.std_id ) ) AS gz + GROUP BY std_id ) AS zb + ON a1.std_id = zb.std_id + AND a1.order_no = zb.order_no + UNION + SELECT DISTINCT ${tempFields} + FROM ${tableTempName} a1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = a1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + LEFT JOIN + (SELECT DISTINCT mt1.std_id + FROM ${tableTempName} mt1 + LEFT JOIN maintain_detail md + ON md.pre_merge_id = mt1.id + LEFT JOIN maintain m + ON m.id = md.parent_id + WHERE m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' + AND (operate = 'create' + OR operate = 'update') ) zb + ON zb.std_id = a1.std_id + WHERE zb.std_id is null + AND md.operate = 'delete' + AND m.order_no <= ${fromOrderNo} + AND m.order_no > ${toOrderNo} + AND m.table_name = '${tableName}' ) a + WHERE ${where} + + ]]> </select> - <select id="getCountByMaxVersion" resultType="java.lang.Long" statementType="STATEMENT" > + <select id="getCountByMaxVersion" resultType="java.lang.Long" statementType="STATEMENT"> <![CDATA[ - select count(1) from ( - SELECT - ${A1fields}, '' as operate, '' as status from ( - SELECT ${fields} from ${tableName} m - WHERE NOT EXISTS ( - SELECT std_id FROM ${tableTempName} tm - LEFT JOIN maintain_detail ON tm.id = maintain_detail.pre_merge_id - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - and maintain.table_name = '${tableName}' - AND tm.std_id = m.id - ) ) a1 - LEFT JOIN - ( - SELECT ${tempHFields} from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id + + select count(1) from ( + SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1 + LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id LEFT JOIN maintain m on m.id = md.parent_id - INNER JOIN ( - SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.id is null + UNION + SELECT ${tempFields}, md.operate, f.`status` from ${tableTempName} a1 + LEFT JOIN maintain_detail md on md.pre_merge_id = a1.id + LEFT JOIN maintain m on m.id = md.parent_id + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.`status` = 'working' + + union + SELECT ${A1fields}, '', '' from ${tableName} a1 + LEFT JOIN + ( + SELECT DISTINCT std_id from ${tableTempName} mt LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} - and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is null + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.id is null UNION - SELECT - ${A2fields}, 'update' as operate, a2.status as status - from ( - SELECT ${fields} from ${tableName} m - ) a1 - LEFT JOIN - ( - SELECT ${tempHFields}, f.status from ${tableTempName} h - LEFT JOIN maintain_detail md on md.pre_merge_id = h.id - LEFT JOIN maintain m on m.id = md.parent_id - LEFT JOIN flows f on m.flow_id = f.id - INNER JOIN ( - SELECT max(m.order_no) as order_no, mt.std_id FROM ${tableTempName} mt + SELECT DISTINCT std_id from ${tableTempName} mt LEFT JOIN maintain_detail md on md.pre_merge_id = mt.id LEFT JOIN maintain m on m.id = md.parent_id - WHERE m.order_no <= ${fromOrderNo} and m.order_no > ${toOrderNo} - and m.table_name = '${tableName}' - and operate = 'update' - GROUP BY mt.std_id - ) a on a.order_no = m.order_no and a.std_id = h.std_id - )a2 on a1.id = a2.id WHERE a2.id is not null - UNION - SELECT ${tempFields}, 'create' as operate, f.status as status FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN flows f on maintain.flow_id = f.id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND maintain.table_name = '${tableName}' - AND operate = 'create' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'delete' - AND mt.std_id = mt1.std_id - AND maintain.table_name = '${tableName}' - ) - UNION - SELECT ${tempFields}, 'delete' as operate, f.status as status FROM maintain_detail md - LEFT JOIN maintain ON maintain.id = md.parent_id - LEFT JOIN flows f on maintain.flow_id = f.id - LEFT JOIN ${tableTempName} mt on mt.id = md.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND maintain.table_name = '${tableName}' - AND operate = 'delete' - AND NOT EXISTS ( - SELECT * FROM maintain_detail - LEFT JOIN maintain ON maintain.id = maintain_detail.parent_id - LEFT JOIN ${tableTempName} mt1 on mt1.id = maintain_detail.pre_merge_id - WHERE maintain.order_no <= ${fromOrderNo} and maintain.order_no > ${toOrderNo} - AND operate = 'create' - AND mt.std_id = mt1.std_id - and maintain.table_name = '${tableName}' - ) + LEFT JOIN flows f on flow_id = f.id + WHERE order_no > ${fromOrderNo} and f.`status` = 'working' + ) a on a.std_id = a1.id where a.std_id is null )a where ${where} - ]]> + + ]]> </select> - <select id="insert" resultType="java.lang.Boolean" statementType="STATEMENT" > + <insert id="insert" statementType="STATEMENT"> INSERT INTO ${tableName} (${fields}) VALUES ${values} - </select> + </insert> + + <insert id="insertOneSelect" statementType="STATEMENT"> + INSERT INTO ${tableName} (${fields}) + select ${selectFields} from (${selectSql}) a + </insert> <update id="update"> update ${tableName} set ${updateSegment} where ${where} </update> + <update id="updateJoin"> + update ${tableName} + ${joinTableSegment} + set ${updateSegment} + where ${where} + </update> + <delete id="delete"> DELETE FROM ${tableName} where ${where} </delete> + <select id="createIdx"> + CREATE INDEX ${idxName} ON ${tableName} (${fields}) + </select> + + <delete id="deleteTempByMaintainId"> - DELETE FROM ${tableTempName} where EXISTS ( - SELECT pre_merge_id from maintain_detail d - where parent_id = ${maintainId} and d.pre_merge_id = ${tableTempName}.id - ) + DELETE tm FROM ${tableTempName} tm , maintain_detail md WHERE tm.id = md.pre_merge_id + and md.parent_id = ${maintainId}; </delete> <!-- temp 2 standrad--> - <select id="tempCreate2std" statementType="STATEMENT" > + <insert id="tempCreate2std" statementType="STATEMENT"> INSERT INTO ${tableName} SELECT ${tempFields} from ${tableTempName} t - where - EXISTS - ( - SELECT std_id from ${tableTempName} tm - LEFT JOIN maintain_detail on tm.id = maintain_detail.pre_merge_id - WHERE maintain_detail.parent_id = ${maintainId} - and operate = 'create' - and tm.id = t.id - ) - </select> + inner join maintain_detail md on t.id = md.pre_merge_id + where md.parent_id = ${maintainId} and md.operate = 'create' + + </insert> <select id="getTempIdByStdId" statementType="STATEMENT" resultType="java.lang.String"> SELECT tm.id from ${tableTempName} tm @@ -408,33 +364,97 @@ </select> - <select id="insertMatintainDetailFromTemp" statementType="STATEMENT" resultType="java.lang.Integer"> + <insert id="insertMatintainDetailFromTemp" statementType="STATEMENT"> INSERT INTO maintain_detail - SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'create' as operate, id as pre_merge_id, NOW() as createdate + SELECT md5(uuid()) as id, ${maintainId} as parent_id, ${operate} as operate, id as pre_merge_id, NOW() as create_time from ${tableTempName} m WHERE m.deal = 0 - </select> + </insert> - <select id="updateStdId" statementType="STATEMENT" resultType="java.lang.Integer"> + <insert id="insertMatintainDetailFromStandrad" statementType="STATEMENT"> + + INSERT INTO maintain_detail + SELECT md5(uuid()) as id, ${maintainId} as parent_id, 'delete' as operate, id as pre_merge_id, NOW() as create_time + from ${tableTempName} m WHERE m.deal = 0 + + </insert> + + <update id="updateStdId" statementType="STATEMENT"> update ${tableTempName} set std_id = md5(uuid()) WHERE deal = 0 - </select> + </update> + + <insert id="insertRecordFromStandrad" statementType="STATEMENT"> + INSERT INTO ${recordTableName} + SELECT ${tempFieldList}, 0 as deal + from ${tableName} + + </insert> <select id="tempByOperate" statementType="STATEMENT" resultType="java.util.Map"> SELECT ${fields} from ${tableTempName} t - where - EXISTS - ( - SELECT pre_merge_id from maintain_detail - LEFT JOIN maintain on maintain.id = maintain_detail.parent_id - WHERE maintain.id = ${maintainId} + inner join maintain_detail md on md.pre_merge_id = t.id + where md.parent_id = ${maintainId} and operate = ${operate} - and maintain_detail.pre_merge_id = t.id - ) + + </select> + + <update id="updateRecordByMaintainId" statementType="STATEMENT"> + update ${tableTempName} + INNER JOIN maintain_detail on ${tableTempName}.id = maintain_detail.pre_merge_id + set ${updateSegment} + WHERE maintain_detail.parent_id = ${maintainId} + + </update> + + <delete id="deleteRecordByMaintainId" statementType="STATEMENT"> + DELETE ${tableTempName} from ${tableTempName} + INNER JOIN maintain_detail on maintain_detail.pre_merge_id = ${tableTempName}.id + WHERE maintain_detail.parent_id = ${maintainId} and ${tableTempName}.std_id = ${stdId} + </delete> + + <select id="selectActMemberShip" parameterType="java.util.Map" resultType="java.util.Map"> + select * from ACT_ID_MEMBERSHIP where USER_ID_ = #{userId} and GROUP_ID_ = #{roleId} + </select> + <select id="selectActMemberShipByRole" parameterType="java.util.Map" resultType="java.util.Map"> + select * from ACT_ID_MEMBERSHIP where GROUP_ID_ = #{roleId} + </select> + <select id="selectActMemberShipByUser" parameterType="java.util.Map" resultType="java.util.Map"> + select * from ACT_ID_MEMBERSHIP where USER_ID_ = #{userId} + </select> + + <select id="getOneTempFieldDataByMaintainExtent" statementType="STATEMENT" resultType="java.util.Map"> + <![CDATA[ + + SELECT DISTINCT ${field} FROM ${tempTableName} t + LEFT JOIN maintain_detail md on md.pre_merge_id = t.id + LEFT JOIN maintain m on m.id = md.parent_id + + WHERE + m.table_name = ${tableName} + AND m.order_no >= ${fromOrderNo} + AND m.order_no < ${toOrderNo} + + ]]> + </select> + + <select id="getTempDataByMaintainExtent" statementType="STATEMENT" resultType="java.util.Map"> + <![CDATA[ + SELECT t.* FROM ${tempTableName} t + LEFT JOIN maintain_detail md on md.pre_merge_id = t.id + LEFT JOIN maintain m on m.id = md.parent_id + + WHERE + m.table_name = ${tableName} + AND m.order_no >= ${fromOrderNo} + AND m.order_no < ${toOrderNo} + + + ]]> </select> </mapper> -- Gitblit v1.8.0