tj
2025-06-05 2d549a04870d1315868a7cf19952b64e8071e711
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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<?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.cloudroam.mapper.SupplierContactInfoMapperCustom">
 
    <resultMap id="ProjectBaseMap" type="com.cloudroam.model.ProjectInfoDO">
        <id column="id" property="id" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="delete_time" property="deleteTime" />
        <result column="tenant_id" property="tenantId" />
        <result column="project_no" property="projectNo" />
        <result column="project_name" property="projectName" />
        <result column="manager_id" property="managerId" />
        <result column="contact_id" property="contactId" />
        <result column="project_desc" property="projectDesc" />
        <result column="estimate_start_time" property="estimateStartTime" />
        <result column="estimate_complete_time" property="estimateCompleteTime" />
        <result column="actual_start_time" property="actualStartTime" />
        <result column="actual_complete_time" property="actualCompleteTime" />
        <result column="inner_hours" property="innerHours" />
        <result column="outer_hours" property="outerHours" />
        <result column="actual_hours" property="actualHours" />
        <result column="project_status" property="projectStatus" />
        <result column="remark" property="remark" />
        <result column="company_id" property="companyId" />
        <result column="project_stage" property="projectStage" />
        <result column="project_type" property="projectType" />
        <result column="estimate_develop_hours" property="estimateDevelopHours" />
        <result column="estimate_test_hours" property="estimateTestHours" />
        <result column="need_design" property="needDesign" />
        <result column="need_develop" property="needDevelop" />
        <result column="need_price" property="needPrice" />
        <result column="create_user_id" property="createUserId" />
        <result column="create_user_name" property="createUserName" />
        <result column="update_user_id" property="updateUserId" />
        <result column="update_user_name" property="updateUserName" />
        <result column="is_deleted" property="isDeleted" />
        <result column="delete_user_id" property="deleteUserId" />
        <result column="delete_user_name" property="deleteUserName" />
    </resultMap>
 
    <!-- 通用查询映射结果 -->
    <resultMap id="BaseResultMap" type="com.cloudroam.bo.supplierContact.SupplierContactInfoBO">
        <result column="id" property="id" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="delete_time" property="deleteTime" />
        <result column="tenant_id" property="tenantId" />
        <result column="company_id" property="companyId" />
        <result column="name" property="name" />
        <result column="sex" property="sex" />
        <result column="phone" property="phone" />
        <result column="email_address" property="emailAddress" />
        <result column="title" property="title" />
        <result column="address" property="address" />
        <result column="remark" property="remark" />
        <result column="create_user_id" property="createUserId" />
        <result column="create_user_name" property="createUserName" />
        <result column="update_user_id" property="updateUserId" />
        <result column="update_user_name" property="updateUserName" />
        <result column="is_deleted" property="isDeleted" />
        <result column="delete_user_id" property="deleteUserId" />
        <result column="delete_user_name" property="deleteUserName" />
 
 
 
    </resultMap>
    <select id="getSupplierContactInfoPage"
            resultType="com.cloudroam.bo.supplierContact.SupplierContactInfoBO">
    select * from (
        select c.*,
            i.`name` as company_name,
            sex.label as sex_name,
            project_list.project_list as project_names,
            skill_list.skill_list as skill_names
        from supplier_contact_info c
        left join supplier_company_info i
        on c.company_id=i.id
        left join (
            select id,label,value from sys_dict_item where dict_type='sex' and is_deleted=0
        ) sex
        on c.sex=sex.`value`
        left join (
            select
            i.supplier_contact_id, GROUP_CONCAT(p.project_name) as project_list
            from supplier_contact_project_re i
            left join project_info p
            on i.project_id=p.id
            group by supplier_contact_id
        )project_list
        on c.id=project_list.supplier_contact_id
        left join (
            select re.target_id,GROUP_CONCAT(i.label) as skill_list
            from sys_dict_item_re re
            left join sys_dict_item i
            on re.sys_dict_type=i.dict_type
            and re.sys_dict_value=i.value
            where re.sys_dict_type='skill_type'
            group by target_id
        ) skill_list
        on c.id=skill_list.target_id
        )t
        where t.is_deleted=0
        <if test=" dto.keyword !=null and dto.keyword !='' ">
            and (
            t.name like concat('%',#{dto.keyword},'%')
            or t.sex_name like concat('%',#{dto.keyword},'%')
            or t.phone like concat('%',#{dto.keyword},'%')
            or t.company_name like concat('%',#{dto.keyword},'%')
            or t.email_address like concat('%',#{dto.keyword},'%')
            or t.address like concat('%',#{dto.keyword},'%')
            or t.title like concat('%',#{dto.keyword},'%')
            or t.remark like concat('%',#{dto.keyword},'%')
            or t.project_list like concat('%',#{dto.keyword},'%')
            )
        </if>
 
        order by create_time desc
    </select>
    <select id="getProjectListByContactId" resultType="com.cloudroam.model.ProjectInfoDO">
        select
            p.*
        from supplier_contact_project_re i
        left join project_info p
        on i.project_id=p.id
        where i.supplier_contact_id=#{id}
    </select>
    <select id="getSkillListByContactId" resultType="com.cloudroam.model.SysDictItemDO">
        select i.*
        from sys_dict_item_re re
        left join sys_dict_item i
        on re.sys_dict_type=i.dict_type
        and re.sys_dict_value=i.value
        where re.sys_dict_type='skill_type'
        and re.target_id=#{id}
    </select>
 
</mapper>