多语言(英语、法语、西班牙语、德语、波兰语、阿拉伯语)处理
This commit is contained in:
@ -75,9 +75,4 @@ public interface EventMapper {
|
||||
|
||||
List<Integer> eventDeviceNum(@Param("vo") EventNumReq vo);
|
||||
|
||||
|
||||
List<EventVo> selectTableList(@Param("tableName") String tableName, @Param("name") String name, @Param("nameEn") String nameEn);
|
||||
|
||||
int updateNameEnById(@Param("id") long id, @Param("tableName") String tableName,@Param("nameEn") String nameEn,@Param("translateName") String translateName);
|
||||
|
||||
}
|
||||
|
||||
@ -16,11 +16,11 @@ public interface TranslateNameMapper {
|
||||
|
||||
List<TranslateName> getDictNation();
|
||||
|
||||
TranslateName selectNameEN(@Param("name")String name);
|
||||
TranslateName selectNameLang(@Param("name")String name);
|
||||
|
||||
int insert(@Param("vo")TranslateName vo);
|
||||
|
||||
int updateNameEnById(@Param("id") Integer id, @Param("nameEn") String nameEn);
|
||||
int updateById(@Param("vo") TranslateName vo);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.ho.flow.service;
|
||||
|
||||
|
||||
import com.ho.business.entity.TranslateName;
|
||||
import com.ho.business.vo.req.MonitorQuery;
|
||||
import com.ho.common.tools.entity.SimpleUser;
|
||||
import com.ho.common.tools.entity.UserDetailRespVO;
|
||||
@ -97,11 +98,8 @@ public interface EventService {
|
||||
|
||||
Map<String,Integer> eventDeviceNum(EventNumReq vo);
|
||||
|
||||
/**
|
||||
* 修改点名称英文
|
||||
* @return
|
||||
*/
|
||||
int updatePointNameEn(String tableName,String name,String nameEn);
|
||||
TranslateName getNameLanguage(String name);
|
||||
|
||||
String getNameByLang(String name,String lang);
|
||||
|
||||
String getNameEn(String name);
|
||||
}
|
||||
|
||||
@ -650,7 +650,13 @@ public class EventServiceImpl implements EventService {
|
||||
//设置为告警数据
|
||||
snEvent.setIsRecovery(0);
|
||||
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL);
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
events.add(snEvent);
|
||||
sendSmsConfigService.sendSms(vo);
|
||||
} else { //如果告警事件存在且该数据的告警已恢复,则产生告警数据
|
||||
@ -659,7 +665,13 @@ public class EventServiceImpl implements EventService {
|
||||
//设置为告警数据
|
||||
snEvent.setIsRecovery(0);
|
||||
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL);
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
events.add(snEvent);
|
||||
sendSmsConfigService.sendSms(vo);
|
||||
}
|
||||
@ -683,7 +695,13 @@ public class EventServiceImpl implements EventService {
|
||||
snEvent.setConfirmTime(new Date());
|
||||
snEvent.setConfirmMan(FlowConstant.DEFAULT_CONFIRM_MAN);
|
||||
snEvent.setDescription(name + CommonConstant.Heartbeat.STATION_FAIL + "恢复");
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
events.add(snEvent);
|
||||
//确认前一条告警数据
|
||||
Event beforeEvent = new Event();
|
||||
@ -763,7 +781,13 @@ public class EventServiceImpl implements EventService {
|
||||
snEvent.setConfirmMan(FlowConstant.DEFAULT_CONFIRM_MAN);
|
||||
snEvent.setConfirmTime(updateTime);
|
||||
snEvent.setDescription(CommonConstant.OutsideEle.SUCCESS);
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
events.add(snEvent);
|
||||
//确认前一条告警数据
|
||||
Event beforeEvent = new Event();
|
||||
@ -953,7 +977,13 @@ public class EventServiceImpl implements EventService {
|
||||
snEvent.setSignal(sn);
|
||||
snEvent.setStatus(CommonConstant.STATUS);
|
||||
snEvent.setDescription(sn + CommonConstant.Heartbeat.SN_FAIL);
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
snEvent.setConfirmStatus(CommonConstant.STATUS);
|
||||
snEvent.setCreateTime(date);
|
||||
return snEvent;
|
||||
@ -981,7 +1011,13 @@ public class EventServiceImpl implements EventService {
|
||||
snEvent.setSignal(DeviceTypeConstant.OUTSIDE_ELE);
|
||||
snEvent.setStatus(CommonConstant.STATUS);
|
||||
snEvent.setDescription(CommonConstant.OutsideEle.FAIL);
|
||||
snEvent.setDescriptionEn(getNameEn(snEvent.getDescription()));
|
||||
TranslateName translate = getNameLanguage(snEvent.getDescription());
|
||||
snEvent.setDescriptionEn(translate.getNameEn());
|
||||
snEvent.setDescriptionFra(translate.getNameFra());
|
||||
snEvent.setDescriptionSpa(translate.getNameSpa());
|
||||
snEvent.setDescriptionDe(translate.getNameDe());
|
||||
snEvent.setDescriptionPl(translate.getNamePl());
|
||||
snEvent.setDescriptionAra(translate.getNameAra());
|
||||
snEvent.setConfirmStatus(CommonConstant.STATUS);
|
||||
snEvent.setCreateTime(date);
|
||||
return snEvent;
|
||||
@ -1169,50 +1205,98 @@ public class EventServiceImpl implements EventService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int updatePointNameEn(String tableName,String name,String nameEn) {
|
||||
int a=0;
|
||||
//查询所有name_en 为空的数据
|
||||
List<EventVo> list = eventMapper.selectTableList(tableName,name,nameEn);
|
||||
for (EventVo vo:list){
|
||||
if(StringUtil.isNotBlank(vo.getName())){
|
||||
String translateName = getNameEn(vo.getName());
|
||||
int resoult=eventMapper.updateNameEnById(vo.getId(),tableName,nameEn,translateName);
|
||||
a=a+resoult;
|
||||
}
|
||||
public String getNameByLang(String name,String lang){
|
||||
TranslateName translate = getNameLanguage(name);
|
||||
switch (lang){
|
||||
case CommonConstant.langTemp.EN_US:
|
||||
return translate.getNameEn();
|
||||
case CommonConstant.langTemp.DE_DE:
|
||||
return translate.getNameDe();
|
||||
case CommonConstant.langTemp.ES_ES:
|
||||
return translate.getNameSpa();
|
||||
case CommonConstant.langTemp.AR_EG:
|
||||
return translate.getNameAra();
|
||||
case CommonConstant.langTemp.PL_PL:
|
||||
return translate.getNamePl();
|
||||
case CommonConstant.langTemp.FR_FR:
|
||||
return translate.getNameFra();
|
||||
case CommonConstant.langTemp.ZH_CN:
|
||||
return translate.getName();
|
||||
}
|
||||
return a;
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getNameEn(String name) {
|
||||
// 查询数据库中有预先翻译的中文字段
|
||||
public TranslateName getNameLanguage(String name) {
|
||||
// 英语
|
||||
String nameEn = null;
|
||||
TranslateName vo = translateNameMapper.selectNameEN(name);
|
||||
// 法语
|
||||
String nameFra = null;
|
||||
// 西班牙语
|
||||
String nameSpa = null;
|
||||
// 德语
|
||||
String nameDe = null;
|
||||
// 波兰语
|
||||
String namePl = null;
|
||||
// 阿拉伯语
|
||||
String nameAra = null;
|
||||
// 查询数据库中 预先翻译的中文字段 语言
|
||||
TranslateName vo = translateNameMapper.selectNameLang(name);
|
||||
TranslateName translate = new TranslateName();
|
||||
boolean flag = false;
|
||||
if(vo == null){
|
||||
nameEn = TranslateUtils.translate(name);
|
||||
nameEn = TranslateUtils.translate(name,CommonConstant.lang.EN);
|
||||
nameFra = TranslateUtils.translate(name,CommonConstant.lang.FRA);
|
||||
nameSpa = TranslateUtils.translate(name,CommonConstant.lang.SPA);
|
||||
nameDe = TranslateUtils.translate(name,CommonConstant.lang.DE);
|
||||
namePl = TranslateUtils.translate(name,CommonConstant.lang.PL);
|
||||
nameAra = TranslateUtils.translate(name,CommonConstant.lang.ARA);
|
||||
// 插入中文预翻译表
|
||||
TranslateName translate = new TranslateName();
|
||||
translate.setName(name);
|
||||
translate.setNameEn(nameEn);
|
||||
translate.setNameFra(nameFra);
|
||||
translate.setNameSpa(nameSpa);
|
||||
translate.setNameDe(nameDe);
|
||||
translate.setNamePl(namePl);
|
||||
translate.setNameAra(nameAra);
|
||||
CompletableFuture.runAsync(()->{
|
||||
translateNameMapper.insert(translate);
|
||||
});
|
||||
return translate;
|
||||
}else{
|
||||
if(StringUtil.isEmpty(vo.getNameEn())){
|
||||
nameEn = TranslateUtils.translate(name);
|
||||
String finalNameEn = nameEn;
|
||||
vo.setNameEn(TranslateUtils.translate(name,CommonConstant.lang.EN));
|
||||
flag = true;
|
||||
}
|
||||
if(StringUtil.isEmpty(vo.getNameFra())){
|
||||
vo.setNameFra(TranslateUtils.translate(name,CommonConstant.lang.FRA));
|
||||
flag = true;
|
||||
}
|
||||
if(StringUtil.isEmpty(vo.getNameSpa())){
|
||||
vo.setNameSpa(TranslateUtils.translate(name,CommonConstant.lang.SPA));
|
||||
flag = true;
|
||||
}
|
||||
if(StringUtil.isEmpty(vo.getNameDe())){
|
||||
vo.setNameDe(TranslateUtils.translate(name,CommonConstant.lang.DE));
|
||||
flag = true;
|
||||
}
|
||||
if(StringUtil.isEmpty(vo.getNamePl())){
|
||||
vo.setNamePl(TranslateUtils.translate(name,CommonConstant.lang.PL));
|
||||
flag = true;
|
||||
}
|
||||
if(StringUtil.isEmpty(vo.getNameAra())){
|
||||
vo.setNameAra(TranslateUtils.translate(name,CommonConstant.lang.ARA));
|
||||
flag = true;
|
||||
}
|
||||
if(flag){
|
||||
CompletableFuture.runAsync(()->{
|
||||
translateNameMapper.updateNameEnById(vo.getId(), finalNameEn);
|
||||
translateNameMapper.updateById(vo);
|
||||
});
|
||||
}else{
|
||||
nameEn = vo.getNameEn();
|
||||
}
|
||||
}
|
||||
return nameEn;
|
||||
return vo;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -10,6 +10,21 @@
|
||||
<when test="record.lang != null and record.lang=='en_US' ">
|
||||
<include refid="Base_Column_List1"/>
|
||||
</when>
|
||||
<when test="record.lang != null and record.lang=='fr_FR' ">
|
||||
<include refid="Base_Column_List2"/>
|
||||
</when>
|
||||
<when test="record.lang != null and record.lang=='es_ES' ">
|
||||
<include refid="Base_Column_List3"/>
|
||||
</when>
|
||||
<when test="record.lang != null and record.lang=='de_DE' ">
|
||||
<include refid="Base_Column_List4"/>
|
||||
</when>
|
||||
<when test="record.lang != null and record.lang=='pl_PL' ">
|
||||
<include refid="Base_Column_List5"/>
|
||||
</when>
|
||||
<when test="record.lang != null and record.lang=='ar_EG' ">
|
||||
<include refid="Base_Column_List6"/>
|
||||
</when>
|
||||
<otherwise>
|
||||
<include refid="Base_Column_List"/>
|
||||
</otherwise>
|
||||
@ -177,6 +192,56 @@
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
<sql id="Base_Column_List2">
|
||||
id
|
||||
,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id, `signal`,`status`,
|
||||
value,description_fra description ,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
<sql id="Base_Column_List3">
|
||||
id
|
||||
,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id, `signal`,`status`,
|
||||
value,description_spa description ,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
<sql id="Base_Column_List4">
|
||||
id
|
||||
,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id, `signal`,`status`,
|
||||
value,description_de description ,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
<sql id="Base_Column_List5">
|
||||
id
|
||||
,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id, `signal`,`status`,
|
||||
value,description_pl description ,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
<sql id="Base_Column_List6">
|
||||
id
|
||||
,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id, `signal`,`status`,
|
||||
value,description_ara description ,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
suggestion,create_time,update_time,
|
||||
category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
</sql>
|
||||
|
||||
|
||||
<select id="selectByPrimaryKey" resultType="com.ho.flow.vo.Event">
|
||||
@ -343,15 +408,17 @@
|
||||
id,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id,`signal`,status,
|
||||
`value`,`description`,description_en,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
`value`,`description`,description_en,
|
||||
description_fra,description_spa,description_de,description_pl,description_ara,
|
||||
confirm_status,confirm_man,confirm_time,remark,
|
||||
suggestion,category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
) values(
|
||||
#{id},#{stationId},#{deptId},#{groupId},
|
||||
#{eventType},#{eventLevel},#{timeStamp},
|
||||
#{targetDevice},#{deviceType}, #{deviceTypeId},#{signal},#{status},
|
||||
#{value},#{description},#{descriptionEn},#{confirmStatus},
|
||||
#{confirmMan},#{confirmTime},#{remark},
|
||||
#{value},#{description},#{descriptionEn},
|
||||
#{descriptionFra},#{descriptionSpa},#{descriptionDe},#{descriptionPl},#{descriptionAra},
|
||||
#{confirmStatus},#{confirmMan},#{confirmTime},#{remark},
|
||||
#{suggestion},#{category},#{type},#{subType},#{sensType},#{isRecovery},#{beforeEventId}
|
||||
)
|
||||
</insert>
|
||||
@ -421,8 +488,9 @@
|
||||
id,station_id,dept_id,group_id,
|
||||
event_type,event_level,time_stamp,
|
||||
target_device,device_type, device_type_id,`signal`,status,
|
||||
`value`,`description`,description_en,confirm_status,
|
||||
confirm_man,confirm_time,remark,
|
||||
`value`,`description`,description_en,
|
||||
description_fra,description_spa,description_de,description_pl,description_ara,
|
||||
confirm_status,confirm_man,confirm_time,remark,
|
||||
suggestion,category,type,sub_type,sens_type,is_recovery,before_event_id
|
||||
)
|
||||
VALUES
|
||||
@ -431,8 +499,9 @@
|
||||
#{item.id},#{item.stationId},#{item.deptId},#{item.groupId},
|
||||
#{item.eventType},#{item.eventLevel},#{item.timeStamp},
|
||||
#{item.targetDevice},#{item.deviceType}, #{item.deviceTypeId},#{item.signal},#{item.status},
|
||||
#{item.value},#{item.description},#{item.descriptionEn},#{item.confirmStatus},
|
||||
#{item.confirmMan},#{item.confirmTime},#{item.remark},
|
||||
#{item.value},#{item.description},#{item.descriptionEn},
|
||||
#{item.descriptionFra},#{item.descriptionSpa},#{item.descriptionDe},#{item.descriptionPl},#{item.descriptionAra},
|
||||
#{item.confirmStatus},#{item.confirmMan},#{item.confirmTime},#{item.remark},
|
||||
#{item.suggestion},#{item.category},#{item.type},#{item.subType},#{item.sensType},#{item.isRecovery},#{item.beforeEventId}
|
||||
)
|
||||
</foreach>
|
||||
@ -452,6 +521,21 @@
|
||||
<if test="event.descriptionEn != null">
|
||||
description_en = #{event.descriptionEn,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.descriptionFra != null">
|
||||
description_fra = #{event.descriptionFra,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.descriptionSpa != null">
|
||||
description_spa = #{event.descriptionSpa,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.descriptionDe != null">
|
||||
description_de = #{event.descriptionDe,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.descriptionPl != null">
|
||||
description_pl = #{event.descriptionPl,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.descriptionAra != null">
|
||||
description_ara = #{event.descriptionAra,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="event.updateTime != null">
|
||||
update_time = #{event.updateTime,jdbcType=TIMESTAMP},
|
||||
</if>
|
||||
@ -800,13 +884,4 @@
|
||||
SELECT count(0) faultDevice FROM event where status = 0 and station_id = #{vo.stationId} group by target_device
|
||||
</select>
|
||||
|
||||
<select id="selectTableList" resultType="com.ho.flow.vo.EventVo">
|
||||
select
|
||||
id,${name} name
|
||||
from ${tableName} where (${nameEn} is null or ${nameEn}='') and ${name} is not null
|
||||
</select>
|
||||
|
||||
<update id="updateNameEnById">
|
||||
update ${tableName} set ${nameEn}=#{translateName} where id = #{id}
|
||||
</update>
|
||||
</mapper>
|
||||
|
||||
@ -5,26 +5,32 @@
|
||||
<mapper namespace="com.ho.flow.mapper.TranslateNameMapper">
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
id,`name`,name_en
|
||||
id,`name`,name_en,name_fra,name_spa,name_de,name_pl,name_ara
|
||||
</sql>
|
||||
|
||||
<select id="getDictNation" resultType="com.ho.business.entity.TranslateName">
|
||||
select <include refid="Base_Column_List"/> from translate_name
|
||||
</select>
|
||||
|
||||
<select id="selectNameEN" resultType="com.ho.business.entity.TranslateName">
|
||||
<select id="selectNameLang" resultType="com.ho.business.entity.TranslateName">
|
||||
select <include refid="Base_Column_List"/> from translate_name where name = #{name} limit 1
|
||||
</select>
|
||||
|
||||
<update id="updateNameEnById">
|
||||
update translate_name set name_en=#{nameEn} where id = #{id}
|
||||
<update id="updateById">
|
||||
update translate_name
|
||||
set name_en=#{vo.nameEn},name_fra=#{vo.nameFra},
|
||||
name_spa = #{vo.nameSpa},name_de=#{vo.nameDe},
|
||||
name_pl = #{vo.namePl},name_ara = #{vo.nameAra}
|
||||
where id = #{vo.id}
|
||||
</update>
|
||||
|
||||
<insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.ho.business.entity.TranslateName"
|
||||
useGeneratedKeys="true">
|
||||
insert into translate_name
|
||||
( id, name, name_en)
|
||||
values ( #{vo.id,jdbcType=INTEGER}, #{vo.name,jdbcType=VARCHAR}, #{vo.nameEn,jdbcType=VARCHAR})
|
||||
( id, name, name_en,name_fra,name_spa,name_de,name_pl,name_ara)
|
||||
values ( #{vo.id,jdbcType=INTEGER}, #{vo.name,jdbcType=VARCHAR}, #{vo.nameEn,jdbcType=VARCHAR},
|
||||
#{vo.nameFra,jdbcType=VARCHAR},#{vo.nameSpa,jdbcType=VARCHAR},#{vo.nameDe,jdbcType=VARCHAR},
|
||||
#{vo.namePl,jdbcType=VARCHAR},#{vo.nameAra,jdbcType=VARCHAR})
|
||||
</insert>
|
||||
|
||||
</mapper>
|
||||
|
||||
Reference in New Issue
Block a user