insert into crm_sales_expansion ( employee_no, candidate_name, office_name, mobile, email, target_dept, industry, title, intent_level, stage, has_desktop_exp, in_progress, employment_status, expected_join_date, owner_user_id, remark ) values ( #{request.employeeNo}, #{request.candidateName}, #{request.officeName}, #{request.mobile}, #{request.email}, #{request.targetDept}, #{request.industry}, #{request.title}, #{request.intentLevel}, #{request.stage}, #{request.hasDesktopExp}, #{request.inProgress}, #{request.employmentStatus}, #{request.expectedJoinDate}, #{userId}, #{request.remark} ) insert into crm_channel_expansion ( channel_code, province, channel_name, office_address, channel_industry, annual_revenue, staff_size, contact_established_date, intent_level, has_desktop_exp, contact_name, contact_title, contact_mobile, channel_attribute, internal_attribute, stage, landed_flag, expected_sign_date, owner_user_id, remark ) values ( 'QD-' || to_char(current_date, 'YYYYMMDD') || '-' || lpad(( coalesce(( select count(1) from crm_channel_expansion where created_at::date = current_date ), 0) + 1 )::text, 3, '0'), #{request.province}, #{request.channelName}, #{request.officeAddress}, #{request.channelIndustry}, #{request.annualRevenue}, #{request.staffSize}, #{request.contactEstablishedDate}, #{request.intentLevel}, #{request.hasDesktopExp}, null, null, null, #{request.channelAttribute}, #{request.internalAttribute}, #{request.stage}, #{request.landedFlag}, #{request.expectedSignDate}, #{userId}, #{request.remark} ) insert into crm_channel_expansion_contact ( channel_expansion_id, contact_name, contact_mobile, contact_title, sort_order, created_at, updated_at ) values ( #{channelExpansionId}, #{contact.name}, #{contact.mobile}, #{contact.title}, #{sortOrder}, now(), now() ) delete from crm_channel_expansion_contact where channel_expansion_id = #{channelExpansionId} update crm_sales_expansion set employee_no = #{request.employeeNo}, candidate_name = #{request.candidateName}, office_name = #{request.officeName}, mobile = #{request.mobile}, email = #{request.email}, target_dept = #{request.targetDept}, industry = #{request.industry}, title = #{request.title}, intent_level = #{request.intentLevel}, stage = #{request.stage}, has_desktop_exp = #{request.hasDesktopExp}, in_progress = #{request.inProgress}, employment_status = #{request.employmentStatus}, expected_join_date = #{request.expectedJoinDate}, remark = #{request.remark} where id = #{id} and owner_user_id = #{userId} update crm_channel_expansion set channel_name = #{request.channelName}, province = #{request.province}, office_address = #{request.officeAddress}, channel_industry = #{request.channelIndustry}, annual_revenue = #{request.annualRevenue}, staff_size = #{request.staffSize}, contact_established_date = #{request.contactEstablishedDate}, intent_level = #{request.intentLevel}, has_desktop_exp = #{request.hasDesktopExp}, contact_name = null, contact_title = null, contact_mobile = null, channel_attribute = #{request.channelAttribute}, internal_attribute = #{request.internalAttribute}, stage = #{request.stage}, landed_flag = #{request.landedFlag}, expected_sign_date = #{request.expectedSignDate}, remark = #{request.remark} where id = #{id} and owner_user_id = #{userId} insert into crm_expansion_followup ( biz_type, biz_id, followup_time, followup_type, content, next_action, followup_user_id, visit_start_time, evaluation_content, next_plan ) values ( #{bizType}, #{bizId}, #{request.followUpTime}, #{request.followUpType}, #{request.content}, #{request.nextAction}, #{userId}, #{request.visitStartTime}, #{request.evaluationContent}, #{request.nextPlan} )