You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

279 lines
11 KiB

<?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.epmet.dao.IcFormItemDao">
<resultMap id="ConditionResultDTOMap" type="com.epmet.dto.result.ConditionResultDTO">
<id property="itemId" column="item_id" ></id>
<result property="tableName" column="table_name"/>
<result property="parentItemId" column="PARENT_ITEM_ID"/>
<result property="label" column="LABEL"/>
<result property="itemType" column="ITEM_TYPE"/>
<result property="itemGroupId" column="ITEM_GROUP_ID"/>
<result property="required" column="REQUIRED"/>
<result property="validType" column="VALID_TYPE"/>
<result property="defaultValue" column="DEFAULT_VALUE"/>
<result property="optionSourceType" column="OPTION_SOURCE_TYPE"/>
<result property="optionSourceValue" column="OPTION_SOURCE_VALUE"/>
<result property="sort" column="SORT"/>
<result property="placeholder" column="PLACEHOLDER"/>
<result property="columnName" column="COLUMN_NAME"/>
<result property="queryType" column="QUERY_TYPE"/>
<result property="funType" column="FUN_TYPE"/>
<collection property="options" ofType="com.epmet.dto.result.OptionDTO"
column="item_id" select="com.epmet.dao.IcFormDao.selectListOption">
<result property="label" column="label"/>
<result property="value" column="value"/>
</collection>
</resultMap>
<select id="selectConditionList" parameterType="map" resultMap="ConditionResultDTOMap">
SELECT
b.FORM_ITEM_ID AS item_id,
(
case when g.table_name is null then 'ic_resi_user'
when g.table_name ='' then 'ic_resi_user'
else g.table_name
end
)AS TABLE_NAME,
i.PARENT_ITEM_ID,
i.LABEL,
i.ITEM_TYPE,
i.ITEM_GROUP_ID,
i.REQUIRED,
IFNULL(i.VALID_TYPE,'')as VALID_TYPE,
IFNULL(i.DEFAULT_VALUE,'') as DEFAULT_VALUE,
IFNULL(i.OPTION_SOURCE_TYPE,'') as OPTION_SOURCE_TYPE,
IFNULL(i.OPTION_SOURCE_VALUE,'') as OPTION_SOURCE_VALUE,
b.SORT,
IFNULL(i.PLACEHOLDER,'') as PLACEHOLDER,
IFNULL(i.COLUMN_NAME,'')as COLUMN_NAME,
b.QUERY_TYPE,
b.FUN_TYPE
FROM ic_form_query_builder b
inner join ic_form_item i on(i.id=b.FORM_ITEM_ID and i.DEL_FLAG='0')
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
WHERE
b.DEL_FLAG = '0'
AND b.CUSTOMER_ID = #{customerId}
AND b.FORM_CODE = #{formCode}
ORDER BY b.SORT asc
</select>
<select id="selectConditionListByGroupId" parameterType="java.lang.String" resultMap="ConditionResultDTOMap">
SELECT
b.FORM_ITEM_ID AS item_id,
(
case when g.table_name is null then 'ic_resi_user'
when g.table_name ='' then 'ic_resi_user'
else g.table_name
end
)AS TABLE_NAME,
i.PARENT_ITEM_ID,
b.LABEL,
b.ITEM_TYPE,
i.ITEM_GROUP_ID,
i.REQUIRED,
IFNULL(b.VALID_TYPE,'')as VALID_TYPE,
IFNULL(i.DEFAULT_VALUE,'') as DEFAULT_VALUE,
IFNULL(i.OPTION_SOURCE_TYPE,'') as OPTION_SOURCE_TYPE,
IFNULL(i.OPTION_SOURCE_VALUE,'') as OPTION_SOURCE_VALUE,
b.SORT,
IFNULL(i.PLACEHOLDER,'') as PLACEHOLDER,
IFNULL(i.COLUMN_NAME,'')as COLUMN_NAME,
b.QUERY_TYPE,
b.FUN_TYPE
FROM ic_form_query_builder b
inner join ic_form_item i on(i.id=b.FORM_ITEM_ID and i.DEL_FLAG='0')
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
WHERE
b.DEL_FLAG = '0'
AND i.ITEM_GROUP_ID=#{groupId}
ORDER BY b.SORT asc
</select>
<resultMap id="TableHeaderResultDTOMap" type="com.epmet.dto.result.TableHeaderResultDTO">
<id property="itemId" column="item_id" ></id>
<result property="label" column="LABEL"/>
<result property="columnName" column="COLUMN_NAME"/>
<result property="itemType" column="item_type"/>
<collection property="options" ofType="com.epmet.dto.result.OptionDTO"
column="item_id" select="com.epmet.dao.IcFormDao.selectListOption">
<result property="label" column="label"/>
<result property="value" column="value"/>
</collection>
</resultMap>
<select id="queryTableHeaderList" parameterType="map" resultMap="TableHeaderResultDTOMap">
SELECT
l.FORM_ITEM_ID AS item_id,
l.WIDTH,
i.LABEL,
i.COLUMN_NAME,
I.ITEM_TYPE
FROM
ic_form_list_item l
LEFT JOIN ic_form_item i
on(l.FORM_ITEM_ID=i.id and i.DEL_FLAG='0')
WHERE
l.CUSTOMER_ID = #{customerId}
AND l.DEL_FLAG = '0'
AND l.FORM_CODE = #{formCode}
ORDER BY
l.SORT ASC
</select>
<!-- 用于列表展示的列:table.列名 -->
<select id="queryConditions" parameterType="map" resultType="com.epmet.dto.result.IcFormResColumnDTO">
select
temp.table_name,
concat(temp.table_name,'.',temp.columnName) as columnName,
temp.LABEL
from (
SELECT
IF(LENGTH(g.TABLE_NAME)>0,g.TABLE_NAME,'ic_resi_user') AS table_name,
#( CASE WHEN M.ITEM_GROUP_ID = '0' THEN 'ic_resi_user' ELSE g.TABLE_NAME END ) AS table_name,
m.COLUMN_NAME AS columnName,
m.LABEL
FROM
ic_form_item m
LEFT JOIN ic_form_item_group g ON ( m.ITEM_GROUP_ID = g.id )
WHERE
m.DEL_FLAG = '0'
AND m.CUSTOMER_ID = #{customerId}
and m.FORM_CODE=#{formCode}
AND m.LIST_DISPLAY = '1'
)temp
</select>
<!-- 构造出所有子表关联语句 -->
<select id="querySubTables" parameterType="map" resultType="com.epmet.dto.result.SubTableJoinDTO">
select
temp.TABLE_NAME as tableName,
CONCAT('left join ',temp.TABLE_NAME, ' on ( ic_resi_user.ID=',temp.TABLE_NAME,'.IC_RESI_USER and ',temp.TABLE_NAME,'.del_flag="0" )') as joinTableSql,
SUPPORT_ADD as supportAdd
from (
SELECT DISTINCT
m.TABLE_NAME,
m.SUPPORT_ADD
FROM
ic_form_item_group m
WHERE
m.DEL_FLAG = '0'
AND m.TABLE_NAME != 'ic_resi_user'
AND m.CUSTOMER_ID = #{customerId}
AND m.FORM_CODE = #{formCode}
)temp
</select>
<select id="queryIcResiSubTables" parameterType="map" resultType="java.lang.String">
SELECT DISTINCT
m.TABLE_NAME
FROM
ic_form_item_group m
WHERE
m.DEL_FLAG = '0'
AND m.TABLE_NAME != 'ic_resi_user'
AND m.CUSTOMER_ID = #{customerId}
AND m.FORM_CODE = #{formCode}
</select>
<select id="getMustColumn" resultType="com.epmet.dto.result.ColumnTableNameResultDTO">
SELECT
a.label "label",
a.column_name "columnName",
IF (
('' = b.table_name OR b.table_name IS NULL ), 'ic_resi_user', b.table_name
) "tableName"
FROM
ic_form_item a
LEFT JOIN ic_form_item_group b ON a.item_group_id = b.id
WHERE
a.del_flag = '0'
AND a.required = '1'
AND a.customer_id = #{customerId}
</select>
<resultMap id="ConditionResDTOMap" type="com.epmet.dto.result.ConditionResDTO">
<id property="itemGroupId" column="ITEM_GROUP_ID"></id>
<result property="groupName" column="LABEL"/>
<collection property="queryItemList" ofType="com.epmet.dto.result.ConditionResultDTO"
column="ITEM_GROUP_ID" select="com.epmet.dao.IcFormItemDao.selectConditionListByGroupId">
</collection>
</resultMap>
<select id="selectConditionListGroup" parameterType="map" resultMap="ConditionResDTOMap">
SELECT DISTINCT
i.ITEM_GROUP_ID,
g.LABEL
FROM
ic_form_item i
LEFT JOIN ic_form_item_group g ON ( i.ITEM_GROUP_ID = g.id )
WHERE
i.DEL_FLAG = '0'
AND i.SEARCH_DISPLAY = '1'
AND g.DEL_FLAG = '0'
and i.CUSTOMER_ID=#{customerId}
and i.FORM_CODE=#{formCode}
AND(
<foreach collection="itemIdList" item="itemId" separator=" OR ">
i.ID = #{itemId}
</foreach>
)
order by g.sort asc
</select>
<select id="getConditionRemoteItems" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifi.OPTION_SOURCE_VALUE,
ifig.TABLE_NAME,
concat(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM ic_form_item ifi LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.OPTION_SOURCE_TYPE = 'remote'
AND ifi.OPTION_SOURCE_VALUE like '%?%'
AND ifi.CUSTOMER_ID = #{customerId}
AND ifi.FORM_CODE = #{formCode}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getConditionItem" resultType="com.epmet.dto.result.ConditionResultDTO">
SELECT
ifi.ID AS itemId,
ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName,
ifi.OPTION_SOURCE_TYPE,
ifi.OPTION_SOURCE_VALUE
FROM
ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ifi.ID= #{itemId}
and ifi.DEL_FLAG = '0'
AND ifig.DEL_FLAG = '0'
</select>
<select id="getItemListByGroupId" resultType="com.epmet.dto.result.FormItemBaseResult">
SELECT
ifi.ID itemId,
ifi.CUSTOMER_ID,
ifi.ITEM_GROUP_ID,
ifi.LABEL,
ifi.SORT,
ifi.OPTION_SOURCE_VALUE,
ifi.OPTION_SOURCE_TYPE,
ifig.TABLE_NAME,
CONCAT(ifi.COLUMN_NAME, if(ifi.COLUMN_NUM = 0, '', ifi.COLUMN_NUM)) columnName
FROM
ic_form_item ifi
LEFT JOIN ic_form_item_group ifig ON ifi.ITEM_GROUP_ID = ifig.ID
WHERE
ITEM_GROUP_ID = #{groupId} and ifi.CUSTOMER_ID = #{customerId}
AND LENGTH(ifi.COLUMN_NAME)>0
ORDER BY ifi.SORT
</select>
</mapper>