修改bug12702、13770、13714、13580、12922、12994、13119、13407

2024年2月1日V1.0.53
limingyu 2024-01-31 10:24:46 +08:00
parent 1fda1726fa
commit c40de96242
27 changed files with 304 additions and 32 deletions

View File

@ -7,6 +7,7 @@ import java.util.Map;
import com.zcloud.service.system.*;
import com.zcloud.util.*;
import org.apache.commons.lang.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.DisabledAccountException;
@ -397,4 +398,22 @@ public class AppUsersController extends BaseController {
map.put("result", errInfo);
return map;
}
//根据用户id查询部门
@RequestMapping(value="/getDepartmentByUserId")
@ResponseBody
public Object getDepartmentByUserId()throws Exception{
Map<String,Object> map = new HashMap<String,Object>();
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
PageData data = usersService.findById(pd);
if (data == null || StringUtils.equals(data.getString("DEPARTMENT_ID"),"")) {
map.put("result", errInfo);
return map;
}
map.put("data", data);
map.put("result", errInfo);
return map;
}
}

View File

@ -34,6 +34,8 @@ public class AppHomeController extends BaseController {
@Resource
private GFBreakGroundService GFbreakGroundService;
@Resource
private GFConfinedSpaceService GFconfinedspaceService;
@Autowired
private ConfinedSpaceService confinedspaceService;
@ -77,7 +79,7 @@ public class AppHomeController extends BaseController {
pd = this.getPageData();
PageData blindboardCount = GFblindboardService.countCheck(pd);// 待办盲板作业数统计
PageData breakGroundCount = GFbreakGroundService.countCheck(pd);// 待办动土作业数统计
PageData confinedspaceCount = confinedspaceService.countCheck(pd);// 待办有限空间作业数统计
PageData confinedspaceCount = GFconfinedspaceService.countCheck(pd);// 待办有限空间作业数统计
PageData electricityCount = GFelectricityService.countCheck(pd);// 待办临时用电作业数统计
PageData highworkCount = GFhighworkService.countCheck(pd);// 待办高处作业数统计
PageData hoistingCount = GFhoistingService.countCheck(pd);// 待办吊装作业数统计

View File

@ -14,6 +14,7 @@ import com.zcloud.service.highriskwork.HotWorkSafetyMethodRecordService;
import com.zcloud.service.highriskwork.HotworkToMeasuresService;
import com.zcloud.service.system.DictionariesService;
import com.zcloud.service.system.FHlogService;
import com.zcloud.service.system.UsersService;
import com.zcloud.util.*;
import com.zcloud.util.message.MessageService;
import org.apache.commons.io.FileUtils;
@ -86,6 +87,8 @@ public class AppHotWorkApplicationController extends BaseController {
*
*/
@Autowired
private UsersService usersService;
@Autowired
private HotWorkApplicationService hotworkapplicationService;
@Autowired
private HotWorkApplicationUserService hotWorkApplicationUserService;
@ -1753,7 +1756,8 @@ public class AppHotWorkApplicationController extends BaseController {
content.put("params2", "延时监火");
content.put("params3", "处理");// 作业操作
mes.put("CONTENT", content);// 站内信内容
noticeCorpService.sendNotice(mes);
noticeCorpService.sendNoticeToDep(mes); //向部门中的所有人员发通知
// noticeCorpService.sendNotice(mes);
} else if(hot.getString("STATE").equals("30")){
PageData hotUser = hotUserList.get(0);
String userID = hotUser.getString("USER_ID");

View File

@ -274,6 +274,7 @@ public class CorpInfoController extends BaseController {
pd2.put("TYPE",2);
List<PageData> fourImgs = imgfilesService.listAll(pd2);//四色图照图片
pd.put("INDUSTRYALL", CORP_TYPEALL);
pd.put("FOURTYPE", "1");
map.put("pd", pd);
map.put("pdrelated",pdrelated);
map.put("busImgs", busImgs);

View File

@ -156,6 +156,13 @@ public class IdentificationPartsController extends BaseController {
String errInfo = "success";
PageData pd = new PageData();
pd = this.getPageData();
List<PageData> byName = identificationpartsService.findByName(pd);
if (byName != null && byName.size() > 0) {
errInfo = "fail";
map.put("result", errInfo);
map.put("msg", "辨识部位已存在,请修改后重试");
return map;
}
pd.put("OPERATOR", Jurisdiction.getUsername()); //修改人
pd.put("OPERATTIME", DateUtil.date2Str(new Date())); //修改时间
identificationpartsService.edit(pd);

View File

@ -75,7 +75,7 @@ public class RiskUnitController extends BaseController {
//pd.put("DEPARTMENT_ID",Jurisdiction.getDEPARTMENT_ID());
List<PageData> list = riskunitService.listAll(pd);
if(list!=null&&list.size()>0) {
map.put("result", "failed");
map.put("result", "fail");
map.put("exception", "风险点(单元)已存在,请修改后重试");
return map;
}

View File

@ -23,6 +23,7 @@ import com.zcloud.entity.PageData;
import com.zcloud.service.firemanager.FireDeviceService;
import com.zcloud.util.*;
import com.zcloud.util.logAop.LogOperation;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@ -389,4 +390,57 @@ public class FireDeviceController extends BaseController {
map.put("result", errInfo);
return map;
}
/**
* excel
* @return
* @throws Exception
*/
@RequestMapping(value = "/excelAll")
public ModelAndView excelAll() throws Exception {
ModelAndView mv = new ModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
// String paramJson = pd.getString("param");
// Map<String, String> param = (Map<String, String>) JSON.parse(paramJson);
// pd.putAll(param);
String KEYWORDS = pd.getString("KEYWORDS"); //关键词检索条件
if(Tools.notEmpty(KEYWORDS))pd.put("KEYWORDS", KEYWORDS.trim());
pd.put("CORPINFO_ID", Jurisdiction.getCORPINFO_ID());
List<PageData> varList = fireDeviceService.exportDataList(pd);
List<PageData> exportList = new ArrayList<>(); //导出的数据列表
Map<String, Object> dataMap = new HashMap<String, Object>();
List<String> titles = new ArrayList<String>();
titles.add("消防区域编码");
titles.add("消防点位名称");
titles.add("消防点位编码");
titles.add("负责部门");
titles.add("负责人手机号");
titles.add("消防器材类型");
titles.add("消防器材编码");
titles.add("有效期开始");
titles.add("结束时间");
titles.add("存放地点");
titles.add("负责人");
dataMap.put("titles", titles);
for (int i = 0; i < varList.size(); i++) {
PageData vpd = new PageData();
vpd.put("var1", varList.get(i).getString("FIRE_REGION_CODE")); //消防区域编码
vpd.put("var2", varList.get(i).getString("FIRE_POINT_NAME")); //消防点位名称
vpd.put("var3", varList.get(i).getString("FIRE_POINT_CODE")); //消防点位编码
vpd.put("var4", varList.get(i).getString("DEPARTMENTNAME")); //负责部门
vpd.put("var5", varList.get(i).getString("USER_PHONE")); //负责人手机号
vpd.put("var6", varList.get(i).getString("FIRE_DEVICE_TYPE_NAME")); //消防器材类型
vpd.put("var7", varList.get(i).getString("FIRE_DEVICE_CODE")); //消防器材编码
vpd.put("var8", varList.get(i).getString("VALIDITY_START_TIME")); //有效期开始
vpd.put("var9", varList.get(i).getString("VALIDITY_END_TIME"));//结束时间
vpd.put("var10", varList.get(i).getString("REMAKE"));//存放地点
vpd.put("var11", varList.get(i).getString("USERNAME"));//负责人
exportList.add(vpd);
}
dataMap.put("varList", exportList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv, dataMap);
return mv;
}
}

View File

@ -821,6 +821,15 @@ public class HiddenApiController extends BaseController {
if ("list".equals(pd.getString("hiddenVueType"))) { // 整改隐患
pd = Jurisdiction.getUserDataJurisdiction(pd);
}
List<String> hiddenTypeList = new ArrayList<>();
for (Object key : pd.keySet()) {
if (key.toString().contains("hiddenType[")) {
hiddenTypeList.add(pd.getString(key.toString()));
}
}
if (hiddenTypeList.size() > 0) {
pd.put("hiddenTypeList", hiddenTypeList);
}
/*上方的条件选择都是 condform */
/**

View File

@ -4,7 +4,7 @@ import java.util.List;
import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
/**
/**
*
* luoxiaobao
* 2021-01-22
@ -17,37 +17,37 @@ public interface NoticeCorpUserMapper{
* @throws Exception
*/
void save(PageData pd);
/**
* @param pd
* @throws Exception
*/
void delete(PageData pd);
/**
* @param pd
* @throws Exception
*/
void edit(PageData pd);
/**
* @param page
* @throws Exception
*/
List<PageData> datalistPage(Page page);
/**()
* @param pd
* @throws Exception
*/
List<PageData> listAll(PageData pd);
/**id
* @param pd
* @throws Exception
*/
PageData findById(PageData pd);
/**
* @param ArrayDATA_IDS
* @throws Exception
@ -58,7 +58,7 @@ public interface NoticeCorpUserMapper{
* @param pd
*/
void savaAll(PageData pd);
void deleteByNotId(PageData pd);
List<PageData> getTypeCountByNotId (Page page);
/**
@ -68,5 +68,11 @@ public interface NoticeCorpUserMapper{
* @throws Exception
*/
List<PageData> getReadUserlistPage(Page page);
/**
*
* @param noticeCorpUserList
*/
void batchSave(List<PageData> noticeCorpUserList);
}

View File

@ -110,4 +110,6 @@ public interface FireDeviceMapper {
void delDevicePreparedByIds(List<PageData> fireCheckIdList);
void deleteAll(PageData pd);
List<PageData> exportDataList(PageData pd);
}

View File

@ -308,4 +308,6 @@ public interface UsersMapper {
PageData getPersonByCardNo(PageData pd);
PageData findByCardNo(PageData pd);
List<PageData> listUserByDepId(PageData pd);
}

View File

@ -82,5 +82,12 @@ public interface NoticeCorpService{
* @param pd
*/
void sendNotice(PageData pd)throws Exception;
/**
*
* @param mes
* @throws Exception
*/
void sendNoticeToDep(PageData pd)throws Exception;
}

View File

@ -4,7 +4,7 @@ import java.util.List;
import com.zcloud.entity.Page;
import com.zcloud.entity.PageData;
/**
/**
*
* luoxiaobao
* 2021-01-22
@ -17,43 +17,43 @@ public interface NoticeCorpUserService{
* @throws Exception
*/
public void save(PageData pd)throws Exception;
/**
* @param pd
* @throws Exception
*/
public void delete(PageData pd)throws Exception;
/**
* @param pd
* @throws Exception
*/
public void edit(PageData pd)throws Exception;
/**
* @param page
* @throws Exception
*/
public List<PageData> list(Page page)throws Exception;
/**()
* @param pd
* @throws Exception
*/
public List<PageData> listAll(PageData pd)throws Exception;
/**id
* @param pd
* @throws Exception
*/
public PageData findById(PageData pd)throws Exception;
/**
* @param ArrayDATA_IDS
* @throws Exception
*/
public void deleteAll(String[] ArrayDATA_IDS)throws Exception;
public void saveAll (PageData pd) throws Exception;
void deleteByNotId (PageData pd) throws Exception;
List<PageData> getTypeCountByNotId (Page page) throws Exception;
@ -64,5 +64,12 @@ public interface NoticeCorpUserService{
* @throws Exception
*/
List<PageData> getUserReadLiser(Page page) throws Exception;
/**
*
* @param noticeCorpUserList
* @throws Exception
*/
void batchSave(List<PageData> noticeCorpUserList) throws Exception;
}

View File

@ -82,7 +82,12 @@ public class CorpInfoServiceImpl implements CorpInfoService{
* @throws Exception
*/
public PageData findById(PageData pd)throws Exception{
return corpinfoMapper.findById(pd);
PageData byId = corpinfoMapper.findById(pd);
if (byId.get("FOURTYPE") != null) {
String fourtype = byId.get("FOURTYPE").toString();
byId.put("FOURTYPE", fourtype);
}
return byId;
}
/**

View File

@ -4,6 +4,7 @@ import java.util.*;
import com.zcloud.service.bus.NoticeCorpUserService;
import com.zcloud.service.bus.NoticeTemplateService;
import com.zcloud.service.system.UsersService;
import com.zcloud.util.DateUtil;
import com.zcloud.util.Jurisdiction;
import com.zcloud.util.Tools;
@ -34,6 +35,8 @@ public class NoticeCorpServiceImpl implements NoticeCorpService{
private NoticeCorpService noticeCorpService;
@Autowired
private NoticeCorpUserService noticeCorpUserService;
@Autowired
private UsersService usersService;
/**
* @param pd
@ -165,5 +168,54 @@ public class NoticeCorpServiceImpl implements NoticeCorpService{
pd1.put("TYPE",0);
noticeCorpUserService.save(pd1);
}
@Override
public void sendNoticeToDep(PageData pd) throws Exception {
PageData notice = noticeTemplateService.findByBianMa(pd);
String content = "";
if(notice!=null){
content = notice.getString("CONTENT");
PageData contentPd = (PageData) pd.get("CONTENT");
for(Object key : contentPd.keySet()){ //替换占位符
if ("number".equals(key.toString()) && Tools.notEmpty(pd.getString("WORKURL"))) {
content = content.replace("${" + key.toString() + "}", "<span style=\"color: blue; font-weight: bold;\">"+contentPd.get(key).toString()+"</span>");
} else {
content = content.replace("${" + key.toString() + "}", contentPd.get(key).toString());
}
}
}else {
content = "未维护模板,需要管理端-公告模板进行维护";
}
PageData pd1 = new PageData();
pd1.put("NOTICECORP_ID", UuidUtil.get32UUID());
pd1.put("USERNAME",pd.getString("SENDER_NAME"));
pd1.put("CREATOR", pd.getString("SENDER_ID")); //添加人
pd1.put("CREATTIME", DateUtil.date2Str(new Date())); //添加时间
pd1.put("SYNOPSIS",pd.getString("SYNOPSIS"));
pd1.put("WORKURL",pd.getString("WORKURL"));
pd1.put("CONTENT","<p>"+content+"</p>");
pd1.put("ISALL","yes");
pd1.put("ISREPLY",0);
pd1.put("ISDELETE",0);
pd1.put("ISTOP",0);
pd1.put("STATUS",1);
pd1.put("CORP_INFO_ID",pd.getString("CORPINFO_ID"));
noticeCorpService.save(pd1);
List<PageData> userList = usersService.listUserByDepId(pd);
if (userList != null && userList.size() > 0) {
List<PageData> noticeCorpUserList = new ArrayList<>();
for (PageData user : userList) {
PageData noticeCorpUser = new PageData();
pd1.put("NOTICECORPUSERID_ID",UuidUtil.get32UUID());
pd1.put("USER_ID",user.getString("USER_ID"));
pd1.put("TYPE",0);
noticeCorpUser.putAll(pd1);
noticeCorpUserList.add(noticeCorpUser);
}
noticeCorpUserService.batchSave(noticeCorpUserList);
}
// noticeCorpUserService.save(pd1);
}
}

View File

@ -9,7 +9,7 @@ import com.zcloud.entity.PageData;
import com.zcloud.mapper.datasource.bus.NoticeCorpUserMapper;
import com.zcloud.service.bus.NoticeCorpUserService;
/**
/**
*
* luoxiaobao
* 2021-01-22
@ -21,7 +21,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
@Autowired
private NoticeCorpUserMapper noticecorpuseridMapper;
/**
* @param pd
* @throws Exception
@ -29,7 +29,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public void save(PageData pd)throws Exception{
noticecorpuseridMapper.save(pd);
}
/**
* @param pd
* @throws Exception
@ -37,7 +37,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public void delete(PageData pd)throws Exception{
noticecorpuseridMapper.delete(pd);
}
/**
* @param pd
* @throws Exception
@ -45,7 +45,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public void edit(PageData pd)throws Exception{
noticecorpuseridMapper.edit(pd);
}
/**
* @param page
* @throws Exception
@ -53,7 +53,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public List<PageData> list(Page page)throws Exception{
return noticecorpuseridMapper.datalistPage(page);
}
/**()
* @param pd
* @throws Exception
@ -61,7 +61,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public List<PageData> listAll(PageData pd)throws Exception{
return noticecorpuseridMapper.listAll(pd);
}
/**id
* @param pd
* @throws Exception
@ -69,7 +69,7 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
public PageData findById(PageData pd)throws Exception{
return noticecorpuseridMapper.findById(pd);
}
/**
* @param ArrayDATA_IDS
* @throws Exception
@ -106,6 +106,11 @@ public class NoticeCorpUserServiceImpl implements NoticeCorpUserService{
// TODO Auto-generated method stub
return noticecorpuseridMapper.getReadUserlistPage(page);
}
@Override
public void batchSave(List<PageData> noticeCorpUserList) throws Exception {
noticecorpuseridMapper.batchSave(noticeCorpUserList);
}
}

View File

@ -56,4 +56,6 @@ public interface FireDeviceService {
void removeFireDeviceByIds(PageData pd);
List<PageData> exportDataList(PageData pd) throws Exception;
}

View File

@ -263,5 +263,10 @@ public class FireDeviceServiceImpl implements FireDeviceService {
}
}
@Override
public List<PageData> exportDataList(PageData pd) throws Exception {
return fireDeviceMapper.exportDataList(pd);
}
}

View File

@ -360,4 +360,6 @@ public interface UsersService {
PageData getPersonByCardNo(PageData pd) throws Exception;
PageData findByCardNo(PageData pd) throws Exception;
List<PageData> listUserByDepId(PageData pd) throws Exception;
}

View File

@ -491,4 +491,9 @@ public class UsersServiceImpl implements UsersService {
public PageData findByCardNo(PageData pd)throws Exception{
return usersMapper.findByCardNo(pd);
}
@Override
public List<PageData> listUserByDepId(PageData pd) throws Exception {
return usersMapper.listUserByDepId(pd);
}
}

View File

@ -222,6 +222,7 @@
CODE = #{CODE},
COMPANY_AREA = #{COMPANY_AREA},
ADDRESS = #{ADDRESS},
ADDRESS_BUSINESS = #{ADDRESS_BUSINESS},
CREATE_DATE = #{CREATE_DATE},
SCALE = #{SCALE},
LONGITUDE = #{LONGITUDE},

View File

@ -147,7 +147,18 @@
</foreach>
</insert>
<!-- 清除关系信息-->
<!--批量添加关系信息-->
<insert id="batchSave">
insert into <include refid="tableName"></include>
(
<include refid="Field2"></include>
) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.NOTICECORP_ID}, #{item.USER_ID},0, #{item.NOTICECORPUSERID_ID} )
</foreach>
</insert>
<!-- 清除关系信息-->
<delete id="deleteByNotId" parameterType="pd">
delete from <include refid="tableName"></include> where NOTICECORP_ID = #{NOTICECORP_ID}
</delete>

View File

@ -301,4 +301,56 @@
</foreach>
</select>
<select id="exportDataList" parameterType="page" resultType="pd">
SELECT
fp.USER_ID,
fp.DEPARTMENT_ID,
fp.FIRE_POINT_NAME,
fp.FIRE_POINT_CODE,
fp.FIRE_POINT_ID,
fr.FIRE_REGION_NAME,
fr.FIRE_REGION_ID,
fr.FIRE_REGION_CODE,
fd.FIRE_DEVICE_CODE,
fd.FIRE_DEVICE_TYPE_ID,
fd.VALIDITY_START_TIME,
fd.VALIDITY_END_TIME,
fd.REMAKE,
fd.FIRE_DEVICE_ID,
su.`NAME` AS USERNAME,
su.`USERNAME` AS USER_PHONE,
p.`NAME` POSTNAME,
d.`NAME` AS DEPARTMENTNAME,
sys_dictionaries.`NAME` AS FIRE_DEVICE_TYPE_NAME
FROM
bus_fire_point AS fp
left JOIN bus_fire_device AS fd ON fp.FIRE_POINT_ID = fd.FIRE_POINT_ID
left JOIN bus_fire_region AS fr ON fd.FIRE_REGION_ID = fr.FIRE_REGION_ID
left JOIN sys_user AS su ON fp.USER_ID = su.USER_ID
LEFT JOIN sys_post p on su.POST_ID = p.POST_ID
left JOIN oa_department AS d ON fd.DEPARTMENT_ID = d.DEPARTMENT_ID
left JOIN sys_dictionaries ON fd.FIRE_DEVICE_TYPE_ID = sys_dictionaries.BIANMA
WHERE
fp.ISDELETE = 0 and fd.ISDELETE = 0
and fd.CORPINFO_ID = #{CORPINFO_ID}
<if test="FIRE_POINT_ID != null and FIRE_POINT_ID !='' ">
and fp.FIRE_POINT_ID = #{FIRE_POINT_ID}
</if>
<if test="FIRE_DEVICE_TYPE_ID != null and FIRE_DEVICE_TYPE_ID !='' ">
and fd.FIRE_DEVICE_TYPE_ID = #{FIRE_DEVICE_TYPE_ID}
</if>
<if test="FIRE_REGION_ID != null and FIRE_REGION_ID !='' ">
and fr.FIRE_REGION_ID = #{FIRE_REGION_ID}
</if>
<if test="FIRE_DEVICE_CODE != null and FIRE_DEVICE_CODE !='' ">
and fd.FIRE_DEVICE_CODE like concat('%',#{FIRE_DEVICE_CODE,jdbcType=VARCHAR},'%')
</if>
<if test="FIRE_POINT_NAME != null and FIRE_POINT_NAME !='' ">
and fp.FIRE_POINT_NAME like concat('%',#{FIRE_POINT_NAME},'%')
</if>
ORDER BY
fr.FIRE_REGION_ID,fr.CREATTIME,fp.FIRE_POINT_ID,fp.CREATTIME,fd.FIRE_DEVICE_TYPE_ID,fd.CREATTIME, fd.OPERATTIME
DESC
</select>
</mapper>

View File

@ -427,8 +427,11 @@
<if test="pd.state != null and pd.state != ''"> <!-- 隐患状态-->
and f.STATE = #{pd.state}
</if>
<if test="pd.hiddenType != null and pd.hiddenType != ''"><!-- 隐患类型 -->
and f.HIDDENTYPE = #{pd.hiddenType}
<if test="pd.hiddenTypeList != null and pd.hiddenTypeList.size > 0"><!-- 隐患类型 -->
and f.HIDDENTYPE in
<foreach collection="pd.hiddenTypeList" item="item" separator="," open="(" close=")" index="index">
#{pd.hiddenTypeList[${index}]}
</foreach>
</if>
<if test="pd.confirmUserName != null and pd.confirmUserName != ''"><!-- 确认人 -->
and (

View File

@ -374,6 +374,9 @@
</if>
<if test="pd.ISCHECK != null and pd.ISCHECK !='' and pd.ISCHECK == 2" >
and f.STATE = 4
</if>
<if test="pd.SOURCE != null and pd.SOURCE !=''" >
and f.SOURCE = #{pd.SOURCE}
</if>
<if test="pd.HIDDENLEVEL != null and pd.HIDDENLEVEL !=''" >
and f.HIDDENLEVEL = #{pd.HIDDENLEVEL}

View File

@ -1438,4 +1438,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where
u.CARDNO = #{CARDNO}
</select>
<select id="listUserByDepId" resultType="com.zcloud.entity.PageData">
select <include refid="Fieldf"></include>
from <include refid="tableName"></include> f
where DEPARTMENT_ID = #{RECEIVER_ID} and ISDELETE = '0'
</select>
</mapper>