|
@@ -0,0 +1,400 @@
|
|
|
+package com.fuzamei.service;
|
|
|
+
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.LinkedHashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
+import com.fuzamei.dao.AccountOpenDao;
|
|
|
+import com.fuzamei.entity.AccountOpeningRecord;
|
|
|
+import com.fuzamei.entity.PromptLetter;
|
|
|
+import com.fuzamei.entity.User;
|
|
|
+import com.fuzamei.utils.PageDTO;
|
|
|
+
|
|
|
+
|
|
|
+@Service
|
|
|
+public class AccountOpenService {
|
|
|
+ @Autowired
|
|
|
+ private AccountOpenDao accountOpenDao;
|
|
|
+ private static final int ROW_NUM = 10; // 分页每页显示数据的数量
|
|
|
+ public PageDTO queryAllAccountOpening(Map<String, Object> map) {//查询账户开立表
|
|
|
+ int page = 1; // 默认页是第一页
|
|
|
+ String customer_name = ""; //
|
|
|
+ String bank_account = ""; //
|
|
|
+ long startTime = 0; // 开始时间默认0
|
|
|
+ long endTime = Long.MAX_VALUE; // 结束时间默认Long最大值
|
|
|
+ if (!"".equals(map.get("page")) && map.get("page") != null) { // 等于空就直接取第一页
|
|
|
+ try {
|
|
|
+ page = Integer.parseInt((String) map.get("page"));
|
|
|
+ if (page < 1) {
|
|
|
+ page = 1;
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ page = 1; // 数据解析异常page还是1
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("customer_name")) && map.get("customer_name") != null) { // 等于空就直接取空值
|
|
|
+ customer_name = (String) map.get("customer_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("bank_account")) && map.get("bank_account") != null) { // 等于空就直接取空值
|
|
|
+ bank_account = (String) map.get("bank_account");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("startTime")) && map.get("startTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ startTime = Long.parseLong((String) map.get("startTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ startTime = 0; // 数据解析异常startTime还是0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("endTime")) && map.get("endTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ endTime = Long.parseLong((String) map.get("endTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ endTime = Long.MAX_VALUE; // 数据解析异常endTime还是9223372036854775807L
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageDTO pageDto = new PageDTO(); // 创建分页对象
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("startPage", (page - 1) * ROW_NUM);
|
|
|
+ mapToDao.put("customer_name", customer_name);
|
|
|
+ mapToDao.put("bank_account", bank_account);
|
|
|
+ if (startTime <= endTime) {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", endTime);
|
|
|
+ } else {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", Long.MAX_VALUE);
|
|
|
+ }
|
|
|
+ mapToDao.put("rowNum", ROW_NUM); // 默认每页显示数据是10条,可根据需求修改分页数量
|
|
|
+
|
|
|
+
|
|
|
+ int count = accountOpenDao.serchCountPage();
|
|
|
+ List<AccountOpeningRecord> list=accountOpenDao.queryAllAccountOpening(mapToDao);
|
|
|
+ pageDto.setTotal(count);
|
|
|
+ pageDto.setRows(list);
|
|
|
+ return pageDto;
|
|
|
+ }
|
|
|
+ ////////////////////////////////////////////////////////////
|
|
|
+ public PageDTO selectPromptLetter(Map<String, Object> map){//查询风险提示函
|
|
|
+ int page = 1; // 默认页是第一页
|
|
|
+ long startTime = 0; // 开始时间默认0
|
|
|
+ long endTime = Long.MAX_VALUE; // 结束时间默认Long最大值
|
|
|
+ if (!"".equals(map.get("page")) && map.get("page") != null) { // 等于空就直接取第一页
|
|
|
+ try {
|
|
|
+ page = Integer.parseInt((String) map.get("page"));
|
|
|
+ if (page < 1) {
|
|
|
+ page = 1;
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ page = 1; // 数据解析异常page还是1
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!"".equals(map.get("startTime")) && map.get("startTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ startTime = Long.parseLong((String) map.get("startTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ startTime = 0; // 数据解析异常startTime还是0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("endTime")) && map.get("endTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ endTime = Long.parseLong((String) map.get("endTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ endTime = Long.MAX_VALUE; // 数据解析异常endTime还是9223372036854775807L
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageDTO pageDto = new PageDTO(); // 创建分页对象
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("startPage", (page - 1) * ROW_NUM);
|
|
|
+ if (startTime <= endTime) {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", endTime);
|
|
|
+ } else {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", Long.MAX_VALUE);
|
|
|
+ }
|
|
|
+ mapToDao.put("rowNum", ROW_NUM); // 默认每页显示数据是10条,可根据需求修改分页数量
|
|
|
+
|
|
|
+
|
|
|
+ int count = accountOpenDao.serchCountPage2();
|
|
|
+ List<PromptLetter> list=accountOpenDao.selectPromptLetter(mapToDao);
|
|
|
+ pageDto.setTotal(count);
|
|
|
+ pageDto.setRows(list);
|
|
|
+ return pageDto;
|
|
|
+
|
|
|
+ }
|
|
|
+ //////////////////////////////////////////////////////////////////////////////
|
|
|
+
|
|
|
+ public PageDTO selectTishihan(Map<String, Object> map){//查询风险提示函
|
|
|
+ int page = 1; // 默认页是第一页
|
|
|
+ long startTime = 0; // 开始时间默认0
|
|
|
+ long endTime = Long.MAX_VALUE; // 结束时间默认Long最大值
|
|
|
+ if (!"".equals(map.get("page")) && map.get("page") != null) { // 等于空就直接取第一页
|
|
|
+ try {
|
|
|
+ page = Integer.parseInt((String) map.get("page"));
|
|
|
+ if (page < 1) {
|
|
|
+ page = 1;
|
|
|
+ }
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ page = 1; // 数据解析异常page还是1
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!"".equals(map.get("startTime")) && map.get("startTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ startTime = Long.parseLong((String) map.get("startTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ startTime = 0; // 数据解析异常startTime还是0
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("endTime")) && map.get("endTime") != null) { // 等于空就直接取空值
|
|
|
+ try {
|
|
|
+ endTime = Long.parseLong((String) map.get("endTime"));
|
|
|
+ } catch (NumberFormatException e) {
|
|
|
+ endTime = Long.MAX_VALUE;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ PageDTO pageDto = new PageDTO(); // 创建分页对象
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("startPage", (page - 1) * ROW_NUM);
|
|
|
+ if (startTime <= endTime) {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", endTime);
|
|
|
+ } else {
|
|
|
+ mapToDao.put("startTime", startTime);
|
|
|
+ mapToDao.put("endTime", Long.MAX_VALUE);
|
|
|
+ }
|
|
|
+ mapToDao.put("rowNum", ROW_NUM); // 默认每页显示数据是10条,可根据需求修改分页数量
|
|
|
+
|
|
|
+
|
|
|
+ int count = accountOpenDao.serchCountPage2();
|
|
|
+ List<PromptLetter> list=accountOpenDao.selectTishihan(mapToDao);
|
|
|
+ pageDto.setTotal(count);
|
|
|
+ pageDto.setRows(list);
|
|
|
+ return pageDto;
|
|
|
+
|
|
|
+ }
|
|
|
+/////////////////////////////////////////////////////////////////////////////////
|
|
|
+ @Transactional
|
|
|
+ public void insertTiShiHanOrUser(Map<String, Object> map) {//只上传了id到数据库 待修改哦
|
|
|
+ String prompt_letter_id=""; // 提示函id
|
|
|
+
|
|
|
+
|
|
|
+ String attachment_id=""; //附件id
|
|
|
+ String attachment_name=""; //附件名称
|
|
|
+ String url=""; //附件url
|
|
|
+ String upload_person_id=""; //附件上传人的id
|
|
|
+ long create_time=0; //附件添加的时间
|
|
|
+
|
|
|
+ if (!"".equals(map.get("prompt_letter_id")) && map.get("prompt_letter_id") != null) {
|
|
|
+ prompt_letter_id = (String) map.get("prompt_letter_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("attachment_id")) && map.get("attachment_id") != null) {
|
|
|
+ attachment_id = (String) map.get("attachment_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("attachment_name")) && map.get("attachment_name") != null) {
|
|
|
+ attachment_name = (String) map.get("attachment_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("url")) && map.get("url") != null) {
|
|
|
+ url = (String) map.get("url");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("upload_person_id")) && map.get("upload_person_id") != null) {
|
|
|
+ upload_person_id = (String) map.get("upload_person_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("create_time")) && map.get("create_time") != null) {
|
|
|
+ create_time = (Long) map.get("create_time");
|
|
|
+ }
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("prompt_letter_id", prompt_letter_id);//提示函id
|
|
|
+ //mapToDao.put("hash","1a2b3c4d5e");//先注视
|
|
|
+
|
|
|
+ mapToDao.put("attachment_id", 110120119);//附件id 目前写死
|
|
|
+ mapToDao.put("attachment_name", attachment_name);//附件名称 暂时没写
|
|
|
+ mapToDao.put("url", url);//附件url 后面有下载的 需要地址
|
|
|
+ mapToDao.put("upload_person_id", 111222333);//附件人上传的id这里写的是死值
|
|
|
+ mapToDao.put("create_time", System.currentTimeMillis());//附件添加时间,这里应该写添加得到的当前系统时间 目前写的是死值
|
|
|
+
|
|
|
+ accountOpenDao.insertTiShiHanOrUser(mapToDao);//将数据添加到数据库里
|
|
|
+ }
|
|
|
+ @Transactional
|
|
|
+ public void insertTrueFalseSelect(Map<String, Object> map) {
|
|
|
+ String attachment_id=""; //附件id
|
|
|
+ String attachment_name=""; //附件名称
|
|
|
+ String url=""; //附件url
|
|
|
+ String upload_person_id=""; //附件上传人的id
|
|
|
+ long create_time=0; //附件添加的时间
|
|
|
+
|
|
|
+ if (!"".equals(map.get("attachment_id")) && map.get("attachment_id") != null) {
|
|
|
+ attachment_id = (String) map.get("attachment_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("attachment_name")) && map.get("attachment_name") != null) {
|
|
|
+ attachment_name = (String) map.get("attachment_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("url")) && map.get("url") != null) {
|
|
|
+ url = (String) map.get("url");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("upload_person_id")) && map.get("upload_person_id") != null) {
|
|
|
+ upload_person_id = (String) map.get("upload_person_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("create_time")) && map.get("create_time") != null) {
|
|
|
+ create_time = (Long) map.get("create_time");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("attachment_id", 123456789);//附件id 目前写死
|
|
|
+ mapToDao.put("attachment_name", attachment_name);//附件名称 暂时没写
|
|
|
+ mapToDao.put("url", url);//附件url 后面有下载的 需要地址
|
|
|
+ mapToDao.put("upload_person_id", 223344);//附件人上传的id这里写的是死值
|
|
|
+ mapToDao.put("create_time", System.currentTimeMillis());//附件添加时间,这里应该写添加得到的当前系统时间
|
|
|
+
|
|
|
+ accountOpenDao.insertTrueFalseSelect(mapToDao);//把数据插入到附件表里
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ @Transactional
|
|
|
+ public void insertAccountUploadFile(Map<String, Object> map) {
|
|
|
+ String customer_id=""; //ID
|
|
|
+ String customer_name="";//客户名称
|
|
|
+ String bank_account="";//银行账号
|
|
|
+
|
|
|
+ //省略几个直接put进去
|
|
|
+
|
|
|
+
|
|
|
+ String basicAttachment_id=""; //基本资料附件id
|
|
|
+ String basicAttachment_name=""; //基本资料附件名称
|
|
|
+ String basicUrl=""; //基本资料附件url
|
|
|
+ String basicUpload_person_id=""; //基本资料附件上传人的id
|
|
|
+ long basicCreate_time=0; //基本资料附件添加的时间
|
|
|
+
|
|
|
+ String letterAttachment_id=""; //承诺书附件id
|
|
|
+ String letterAttachment_name=""; //承诺书附件名称
|
|
|
+ String letterUrl=""; //承诺书附件url
|
|
|
+ String letterUpload_person_id=""; //承诺书附件上传人的id
|
|
|
+ long letterCreate_time=0; //承诺书附件添加的时间
|
|
|
+
|
|
|
+ String applicationAttachment_id=""; //开户申请书附件id
|
|
|
+ String applicationAttachment_name=""; //开户申请书附件名称
|
|
|
+ String applicationUrl=""; //开户申请书附件url
|
|
|
+ String applicationUpload_person_id=""; //开户申请书附件上传人的id
|
|
|
+ long applicationCreate_time=0; //开户申请书附件添加的时间
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if (!"".equals(map.get("customer_id")) && map.get("customer_id") != null) {
|
|
|
+ customer_id = String.valueOf(map.get("customer_id"));
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("customer_name")) && map.get("customer_name") != null) {
|
|
|
+ customer_name = (String) map.get("customer_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("bank_account")) && map.get("bank_account") != null) {
|
|
|
+ bank_account = (String) map.get("bank_account");
|
|
|
+ }/*else {
|
|
|
+ throw new RuntimeException("银行账号是空");
|
|
|
+ }*/
|
|
|
+
|
|
|
+ if (!"".equals(map.get("basicAttachment_id")) && map.get("basicAttachment_id") != null) {
|
|
|
+ basicAttachment_id = String.valueOf(map.get("basicAttachment_id"));
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("basicAttachment_name")) && map.get("basicAttachment_name") != null) {
|
|
|
+ basicAttachment_name = (String) map.get("basicAttachment_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("basicUrl")) && map.get("basicUrl") != null) {
|
|
|
+ basicUrl = (String) map.get("basicUrl");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("basicUpload_person_id")) && map.get("basicUpload_person_id") != null) {
|
|
|
+ basicUpload_person_id = (String) map.get("basicUpload_person_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("basicCreate_time")) && map.get("basicCreate_time") != null) {
|
|
|
+ basicCreate_time = (Long) map.get("basicCreate_time");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!"".equals(map.get("letterAttachment_id")) && map.get("letterAttachment_id") != null) {
|
|
|
+ letterAttachment_id = String.valueOf(map.get("letterAttachment_id"));
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("letterAttachment_name")) && map.get("letterAttachment_name") != null) {
|
|
|
+ letterAttachment_name = (String) map.get("letterAttachment_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("letterUrl")) && map.get("letterUrl") != null) {
|
|
|
+ letterUrl = (String) map.get("letterUrl");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("letterUpload_person_id")) && map.get("letterUpload_person_id") != null) {
|
|
|
+ letterUpload_person_id = (String) map.get("letterUpload_person_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("letterCreate_time")) && map.get("letterCreate_time") != null) {
|
|
|
+ letterCreate_time = (Long) map.get("letterCreate_time");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!"".equals(map.get("applicationAttachment_id")) && map.get("applicationAttachment_id") != null) {
|
|
|
+ applicationAttachment_id = String.valueOf(map.get("applicationAttachment_id"));
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("applicationAttachment_name")) && map.get("applicationAttachment_name") != null) {
|
|
|
+ applicationAttachment_name = (String) map.get("applicationAttachment_name");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("applicationUrl")) && map.get("applicationUrl") != null) {
|
|
|
+ applicationUrl = (String) map.get("applicationUrl");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("applicationUpload_person_id")) && map.get("applicationUpload_person_id") != null) {
|
|
|
+ applicationUpload_person_id = (String) map.get("applicationUpload_person_id");
|
|
|
+ }
|
|
|
+ if (!"".equals(map.get("applicationCreate_time")) && map.get("applicationCreate_time") != null) {
|
|
|
+ applicationCreate_time = (Long) map.get("applicationCreate_time");
|
|
|
+ }
|
|
|
+ //Math.round(Math.random()*8999+1000);
|
|
|
+
|
|
|
+ SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
|
|
|
+ String ss= df.format(new Date());
|
|
|
+
|
|
|
+ Map<String, Object> mapToDao = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDao.put("customer_id", "201712"+Math.round(Math.random()*8999+100));//ID先写成随机数 到时候不行在改
|
|
|
+ mapToDao.put("customer_name",customer_name );
|
|
|
+ mapToDao.put("bank_account","6223"+ss);//银行帐号 产生不能一样 这里是用Date时间做账号 18位数 //直接put进来 Action 可以不要
|
|
|
+ mapToDao.put("basicAttachment_id", basicAttachment_id);//基本资料id
|
|
|
+ mapToDao.put("letterAttachment_id", letterAttachment_id);//承诺书id 这三个id为空
|
|
|
+ mapToDao.put("applicationAttachment_id", applicationAttachment_id);//申请书id
|
|
|
+ mapToDao.put("update_time", System.currentTimeMillis());//更新时间
|
|
|
+ mapToDao.put("status_id", 9);//状态写的是死值 9状态代表已完成
|
|
|
+ mapToDao.put("hash","1aaa2bbb3ccc");//哈希值暂时写的是个字符串死值
|
|
|
+ accountOpenDao.insertAccountUploadFile(mapToDao);//把数据插入到开户表里
|
|
|
+
|
|
|
+ Map<String, Object> mapToDaoBasic = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDaoBasic.put("attachment_id", basicAttachment_id);
|
|
|
+ mapToDaoBasic.put("attachment_name", basicAttachment_name);
|
|
|
+ mapToDaoBasic.put("url", basicUrl);
|
|
|
+ mapToDaoBasic.put("upload_person_id", 10085);//写的是死值 到时候在改
|
|
|
+ mapToDaoBasic.put("create_time", mapToDao.get("update_time"));
|
|
|
+ accountOpenDao.insertAccountUploadFileFuJianBiao(mapToDaoBasic);//上传基本资料的 到附件表
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, Object> mapToDaoLetter = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDaoLetter.put("attachment_id", letterAttachment_id);
|
|
|
+ mapToDaoLetter.put("attachment_name", letterAttachment_name);
|
|
|
+ mapToDaoLetter.put("url", letterUrl);
|
|
|
+ mapToDaoLetter.put("upload_person_id", 10086);//写的是死值 到时候在改
|
|
|
+ mapToDaoLetter.put("create_time", mapToDao.get("update_time"));
|
|
|
+ accountOpenDao.insertAccountUploadFileFuJianBiao(mapToDaoLetter);//上传承诺书的 到附件表
|
|
|
+
|
|
|
+ Map<String, Object> mapToDaoApplication = new LinkedHashMap<String, Object>();
|
|
|
+ mapToDaoApplication.put("attachment_id", applicationAttachment_id);
|
|
|
+ mapToDaoApplication.put("attachment_name", applicationAttachment_name);
|
|
|
+ mapToDaoApplication.put("url", applicationUrl);
|
|
|
+ mapToDaoApplication.put("upload_person_id", 10087);//写的是死值 到时候在改
|
|
|
+ mapToDaoApplication.put("create_time", mapToDao.get("update_time"));
|
|
|
+ accountOpenDao.insertAccountUploadFileFuJianBiao(mapToDaoApplication);//上传开户申请书的 到附件表
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|