yeg
2026-09-29 b78295e8da96c3e5e76befeef9582ce5273dbb74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?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.battery.business.mapper.TBatteryGroupMapper">
    <resultMap type="TBatteryGroup" id="TBatteryGroupResult">
        <id property="groupId" column="group_id" /><result property="groupName" column="group_name" />
        <result property="model" column="model" /><result property="purpose" column="purpose" />
        <result property="status" column="status" />
        <result property="createBy" column="create_by" /><result property="createTime" column="create_time" />
        <result property="updateBy" column="update_by" /><result property="updateTime" column="update_time" />
        <result property="remark" column="remark" /><result property="delFlag" column="del_flag" />
        <result property="batteryCount" column="battery_count" />
    </resultMap>
    <resultMap type="TBatteryGroupBattery" id="TBatteryGroupBatteryResult">
        <id property="relationId" column="relation_id" /><result property="groupId" column="group_id" />
        <result property="batteryNo" column="battery_no" /><result property="sortOrder" column="sort_order" />
        <result property="delFlag" column="del_flag" />
    </resultMap>
    <resultMap type="TBatteryGroupRelationField" id="TBatteryGroupRelationFieldResult">
        <id property="relationId" column="relation_id" /><result property="groupId" column="group_id" />
        <result property="templateId" column="template_id" /><result property="batteryGroupFieldId" column="battery_group_field_id" />
        <result property="fieldName" column="field_name" /><result property="fieldType" column="field_type" />
        <result property="fieldValue" column="field_value" />
        <result property="delFlag" column="del_flag" />
    </resultMap>
    <resultMap type="TBatteryGroupTemplate" id="TBatteryGroupTemplateReferenceResult">
        <id property="templateId" column="template_id" />
        <result property="templateName" column="template_name" />
    </resultMap>
    <sql id="groupColumns">select group_id, group_name, model, purpose, status, create_by, create_time, update_by, update_time, remark, del_flag from t_battery_group</sql>
    <select id="selectBatteryGroupList" parameterType="TBatteryGroup" resultMap="TBatteryGroupResult">
        select bg.group_id, bg.group_name, bg.model, bg.purpose, bg.status,
               bg.create_by, bg.create_time, bg.update_by, bg.update_time, bg.remark, bg.del_flag,
               (select count(1) from t_battery_group_battery bgb where bgb.group_id = bg.group_id and bgb.del_flag = '0') as battery_count
        from t_battery_group bg
        <where>bg.del_flag = '0'
            <if test="groupId != null">and bg.group_id = #{groupId}</if>
            <if test="groupName != null and groupName != ''">and bg.group_name like concat('%', #{groupName}, '%')</if>
            <if test="model != null and model != ''">and bg.model like concat('%', #{model}, '%')</if>
            <if test="status != null and status != ''">and bg.status = #{status}</if>
            <if test="createBy != null and createBy != ''">and bg.create_by like concat('%', #{createBy}, '%')</if>
            <if test="beginCreateTime != null">and bg.create_time &gt;= #{beginCreateTime}</if>
            <if test="endCreateTime != null">and bg.create_time &lt;= #{endCreateTime}</if>
        </where> order by bg.create_time desc, bg.group_id desc
    </select>
    <select id="selectBatteryGroupCreatorOptions" resultType="map">
        select distinct bg.create_by as userName, u.nick_name as nickName
        from t_battery_group bg
        left join sys_user u on u.user_name collate utf8mb4_general_ci = bg.create_by collate utf8mb4_general_ci
        where bg.del_flag = '0' and bg.create_by is not null and bg.create_by != ''
        order by bg.create_by
    </select>
    <select id="selectBatteryGroupById" parameterType="Long" resultMap="TBatteryGroupResult"><include refid="groupColumns"/> where group_id = #{groupId} and del_flag = '0'</select>
    <select id="selectBatteryGroupByName" resultMap="TBatteryGroupResult"> <include refid="groupColumns"/> where group_name = #{groupName} and del_flag = '0' limit 1</select>
    <select id="selectBatteries" parameterType="Long" resultMap="TBatteryGroupBatteryResult">select relation_id, group_id, battery_no, sort_order, del_flag from t_battery_group_battery where group_id = #{groupId} and del_flag = '0' order by sort_order, relation_id</select>
    <select id="selectRelationFields" parameterType="Long" resultMap="TBatteryGroupRelationFieldResult">select r.relation_id, r.group_id, r.template_id, r.battery_group_field_id, f.field_name, f.field_type, r.field_value, r.del_flag from t_battery_group_relation_field r inner join t_battery_group_field f on f.field_id = r.battery_group_field_id and f.del_flag = '0' where r.group_id = #{groupId} and r.del_flag = '0' order by r.relation_id</select>
    <select id="selectTemplate" resultMap="TBatteryGroupTemplateReferenceResult">select template_id, template_name from t_battery_group_template where template_id = #{templateId}</select>
    <select id="selectTemplateFieldIds" resultType="Long">select field_id from t_battery_group_template_field where template_id = #{templateId} and del_flag = '0' order by sort_order, relation_id</select>
    <select id="selectValidTemplateFields" resultMap="TBatteryGroupRelationFieldResult">select r.relation_id, r.template_id, r.field_id as battery_group_field_id, f.field_name, f.field_type, '0' as del_flag from t_battery_group_template_field r inner join t_battery_group_field f on f.field_id = r.field_id and f.del_flag = '0' where r.template_id = #{templateId} and r.del_flag = '0' and r.field_id in <foreach collection="fieldIds" item="fieldId" open="(" separator="," close=")">#{fieldId}</foreach></select>
    <select id="selectBatteryByNo" resultMap="TBatteryGroupBatteryResult">select relation_id, group_id, battery_no, sort_order, del_flag from t_battery_group_battery where battery_no = #{batteryNo} and del_flag = 0 <choose><when test="groupId != null">and group_id = #{groupId}</when><otherwise>and 1 = 0</otherwise></choose> limit 1</select>
    <insert id="insertBatteryGroup" parameterType="TBatteryGroup" useGeneratedKeys="true" keyProperty="groupId">insert into t_battery_group (group_name, model, purpose, status, create_by, create_time, remark, del_flag) values (#{groupName}, #{model}, #{purpose}, #{status}, #{createBy}, utc_timestamp(3), #{remark}, 0)</insert>
    <update id="updateBatteryGroup" parameterType="TBatteryGroup">update t_battery_group set group_name=#{groupName}, model=#{model}, purpose=#{purpose}, status=#{status}, update_by=#{updateBy}, update_time=utc_timestamp(3), remark=#{remark} where group_id=#{groupId} and del_flag=0</update>
    <update id="updateBatteryGroupStatus" parameterType="TBatteryGroup">update t_battery_group set status=#{status}, update_by=#{updateBy}, update_time=sysdate() where group_id=#{groupId} and del_flag='0'</update>
    <update id="deleteBatteryGroup">update t_battery_group set del_flag=group_id, update_by=#{updateBy}, update_time=utc_timestamp(3) where group_id=#{groupId} and del_flag=0</update>
    <update id="deleteBatteries">update t_battery_group_battery set del_flag=relation_id where group_id=#{groupId} and del_flag=0</update>
    <delete id="deleteRelationFields">delete from t_battery_group_relation_field where group_id=#{groupId}</delete>
    <insert id="batchInsertBatteries">insert into t_battery_group_battery (group_id,battery_no,sort_order,del_flag) values <foreach collection="items" item="item" separator=",">(#{item.groupId},#{item.batteryNo},#{item.sortOrder},#{item.delFlag})</foreach></insert>
    <insert id="batchInsertRelationFields">insert into t_battery_group_relation_field (group_id,template_id,battery_group_field_id,field_value,del_flag) values <foreach collection="items" item="item" separator=",">(#{item.groupId},#{item.templateId},#{item.batteryGroupFieldId},#{item.fieldValue},#{item.delFlag})</foreach></insert>
    <select id="countTestingByGroupId" resultType="int">select count(1) from t_test_battery b inner join t_test t on t.test_id = b.test_id and t.del_flag = 0 where b.group_id=#{groupId} and b.del_flag=0 and t.test_status not in ('COMPLETED', 'COMPLETION_PENDING', 'TERMINATED')</select>
    <insert id="saveSpecFields">
        insert into t_battery_group_relation_field (group_id, battery_group_field_id, field_value, del_flag)
        select #{groupId}, field_id,
          case field_name when 'Z' then #{z} when 'H' then #{h} when 'F' then #{f} when 'A' then #{a} when 'B' then #{b} end, 0
        from t_battery_group_field where field_name in ('Z','H','F','A','B') and del_flag=0
          and case field_name when 'Z' then #{z} when 'H' then #{h} when 'F' then #{f} when 'A' then #{a} when 'B' then #{b} end is not null
        on duplicate key update field_value=values(field_value)
    </insert>
    <select id="selectCurrentFieldDefinitions" resultMap="TBatteryGroupRelationFieldResult">
        select field_id battery_group_field_id, field_name, field_type from t_battery_group_field
        where del_flag=0 and field_id in <foreach collection="fieldIds" item="id" open="(" separator="," close=")">#{id}</foreach>
    </select>
</mapper>