Преглед изворни кода

加入文件保存和查询api功能,供外围调用

webapp пре 7 година
родитељ
комит
1ad2ab3b3c

+ 71 - 0
Api/src/main/java/com/java110/api/listener/file/GetFileListener.java

@@ -0,0 +1,71 @@
+package com.java110.api.listener.file;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.smo.file.IFileInnerServiceSMO;
+import com.java110.dto.file.FileDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.ServiceCodeServiceConstant;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.api.file.ApiFileVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+import java.util.List;
+
+
+/**
+ * 查询小区侦听类
+ */
+@Java110Listener("getFileListener")
+public class GetFileListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeServiceConstant.GET_FILE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson,"fileId", "未包含文件ID");
+        Assert.hasKeyAndValue(reqJson,"communityId", "未包含小区ID");
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        FileDto fileDto = BeanConvertUtil.covertBean(reqJson, FileDto.class);
+
+        List<FileDto> fileDtos = fileInnerServiceSMOImpl.queryFiles(fileDto);
+
+        Assert.listOnlyOne(fileDtos,"存在多个文件,数据错误" + reqJson.toJSONString());
+
+        ApiFileVo fileVo = BeanConvertUtil.covertBean(fileDtos.get(0), ApiFileVo.class);
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONObject.toJSONString(fileVo), HttpStatus.OK);
+
+        context.setResponseEntity(responseEntity);
+
+    }
+}

+ 85 - 0
Api/src/main/java/com/java110/api/listener/file/SaveFileListener.java

@@ -0,0 +1,85 @@
+package com.java110.api.listener.file;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.core.smo.file.IFileInnerServiceSMO;
+import com.java110.core.smo.service.IServiceInnerServiceSMO;
+import com.java110.dto.file.FileDto;
+import com.java110.dto.service.ServiceDto;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.constant.ServiceCodeServiceConstant;
+import com.java110.utils.exception.ListenerExecuteException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * 保存小区侦听
+ * add by wuxw 2019-06-30
+ */
+@Java110Listener("saveFileListener")
+public class SaveFileListener extends AbstractServiceApiListener {
+
+    @Autowired
+    private IFileInnerServiceSMO fileInnerServiceSMOImpl;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+        //Assert.hasKeyAndValue(reqJson, "xxx", "xxx");
+
+        Assert.hasKeyAndValue(reqJson, "fileName", "必填,请填写文件名称");
+        Assert.hasKeyAndValue(reqJson, "communityId", "必填,请填写小区ID");
+        Assert.hasKeyAndValue(reqJson, "context", "必填,请填写文件内容");
+        Assert.hasKeyAndValue(reqJson, "suffix", "必填,请填写文件扩展");
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        FileDto fileDto = BeanConvertUtil.covertBean(reqJson, FileDto.class);
+
+        fileDto.setFileId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_file_id));
+
+        int count = fileInnerServiceSMOImpl.saveFile(fileDto);
+
+
+        if (count < 1) {
+            throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR, "保存数据失败");
+        }
+
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>("", HttpStatus.OK);
+
+        context.setResponseEntity(responseEntity);
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeServiceConstant.SAVE_FILE;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.POST;
+    }
+
+    @Override
+    public int getOrder() {
+        return DEFAULT_ORDER;
+    }
+
+    public IFileInnerServiceSMO getFileInnerServiceSMOImpl() {
+        return fileInnerServiceSMOImpl;
+    }
+
+    public void setFileInnerServiceSMOImpl(IFileInnerServiceSMO fileInnerServiceSMOImpl) {
+        this.fileInnerServiceSMOImpl = fileInnerServiceSMOImpl;
+    }
+}

+ 0 - 76
CommonService/src/main/java/com/java110/common/dao/IAppServiceDao.java

@@ -1,76 +0,0 @@
-package com.java110.common.dao;
-
-
-import com.java110.utils.exception.DAOException;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 应用组件内部之间使用,没有给外围系统提供服务能力
- * 应用服务接口类,要求全部以字符串传输,方便微服务化
- * 新建客户,修改客户,删除客户,查询客户等功能
- *
- * Created by wuxw on 2016/12/27.
- */
-public interface IAppServiceDao {
-
-    /**
-     * 保存 应用信息
-     * @param businessAppInfo 应用信息 封装
-     * @throws DAOException 操作数据库异常
-     */
-    int saveAppInfo(Map businessAppInfo) throws DAOException;
-
-
-
-    /**
-     * 查询应用信息(business过程)
-     * 根据bId 查询应用信息
-     * @param info bId 信息
-     * @return 应用信息
-     * @throws DAOException DAO异常
-     */
-    List<Map> getBusinessAppInfo(Map info) throws DAOException;
-
-
-
-
-    /**
-     * 保存 应用信息 Business数据到 Instance中
-     * @param info
-     * @throws DAOException DAO异常
-     */
-    void saveAppInfoInstance(Map info) throws DAOException;
-
-
-
-
-    /**
-     * 查询应用信息(instance过程)
-     * 根据bId 查询应用信息
-     * @param info bId 信息
-     * @return 应用信息
-     * @throws DAOException DAO异常
-     */
-    List<Map> getAppInfo(Map info) throws DAOException;
-
-
-
-    /**
-     * 修改应用信息
-     * @param info 修改信息
-     * @throws DAOException DAO异常
-     */
-    int updateAppInfo(Map info) throws DAOException;
-
-
-    /**
-     * 查询应用总数
-     *
-     * @param info 应用信息
-     * @return 应用数量
-     */
-    int queryAppsCount(Map info);
-
-}

+ 37 - 0
CommonService/src/main/java/com/java110/common/dao/IFileServiceDao.java

@@ -0,0 +1,37 @@
+package com.java110.common.dao;
+
+
+import com.java110.utils.exception.DAOException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 应用组件内部之间使用,没有给外围系统提供服务能力
+ * 应用服务接口类,要求全部以字符串传输,方便微服务化
+ * 文件保存 文件查询
+ *
+ * Created by wuxw on 2016/12/27.
+ */
+public interface IFileServiceDao {
+
+    /**
+     * 保存 文件数据
+     * @param fileInfo 应用信息 封装
+     * @throws DAOException 操作数据库异常
+     */
+    int saveFile(Map fileInfo) throws DAOException;
+
+
+
+    /**
+     * 查询文件信息
+     * @param info bId 信息
+     * @return 应用信息
+     * @throws DAOException DAO异常
+     */
+    List<Map> getFiles(Map info) throws DAOException;
+
+
+
+}

+ 0 - 125
CommonService/src/main/java/com/java110/common/dao/impl/AppServiceDaoImpl.java

@@ -1,125 +0,0 @@
-package com.java110.common.dao.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.utils.constant.ResponseConstant;
-import com.java110.utils.exception.DAOException;
-import com.java110.utils.util.DateUtil;
-import com.java110.core.base.dao.BaseServiceDao;
-import com.java110.common.dao.IAppServiceDao;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 应用服务 与数据库交互
- * Created by wuxw on 2017/4/5.
- */
-@Service("appServiceDaoImpl")
-//@Transactional
-public class AppServiceDaoImpl extends BaseServiceDao implements IAppServiceDao {
-
-    private static Logger logger = LoggerFactory.getLogger(AppServiceDaoImpl.class);
-
-    /**
-     * 应用信息封装
-     * @param businessAppInfo 应用信息 封装
-     * @throws DAOException DAO异常
-     */
-    @Override
-    public int saveAppInfo(Map businessAppInfo) throws DAOException {
-        businessAppInfo.put("month", DateUtil.getCurrentMonth());
-        // 查询business_user 数据是否已经存在
-        logger.debug("保存应用信息 入参 businessAppInfo : {}",businessAppInfo);
-        int saveFlag = sqlSessionTemplate.insert("appServiceDaoImpl.saveAppInfo",businessAppInfo);
-
-        return saveFlag;
-    }
-
-
-    /**
-     * 查询应用信息
-     * @param info bId 信息
-     * @return 应用信息
-     * @throws DAOException DAO异常
-     */
-    @Override
-    public List<Map> getBusinessAppInfo(Map info) throws DAOException {
-
-        logger.debug("查询应用信息 入参 info : {}",info);
-
-        List<Map> businessAppInfos = sqlSessionTemplate.selectList("appServiceDaoImpl.getBusinessAppInfo",info);
-
-        return businessAppInfos;
-    }
-
-
-
-    /**
-     * 保存应用信息 到 instance
-     * @param info   bId 信息
-     * @throws DAOException DAO异常
-     */
-    @Override
-    public void saveAppInfoInstance(Map info) throws DAOException {
-        logger.debug("保存应用信息Instance 入参 info : {}",info);
-
-        int saveFlag = sqlSessionTemplate.insert("appServiceDaoImpl.saveAppInfoInstance",info);
-
-        if(saveFlag < 1){
-            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存应用信息Instance数据失败:"+ JSONObject.toJSONString(info));
-        }
-    }
-
-
-    /**
-     * 查询应用信息(instance)
-     * @param info bId 信息
-     * @return List<Map>
-     * @throws DAOException DAO异常
-     */
-    @Override
-    public List<Map> getAppInfo(Map info) throws DAOException {
-        logger.debug("查询应用信息 入参 info : {}",info);
-
-        List<Map> businessAppInfos = sqlSessionTemplate.selectList("appServiceDaoImpl.getAppInfo",info);
-
-        return businessAppInfos;
-    }
-
-
-    /**
-     * 修改应用信息
-     * @param info 修改信息
-     * @throws DAOException DAO异常
-     */
-    @Override
-    public int updateAppInfo(Map info) throws DAOException {
-        logger.debug("修改应用信息Instance 入参 info : {}",info);
-
-        int saveFlag = sqlSessionTemplate.update("appServiceDaoImpl.updateAppInfo",info);
-
-        return saveFlag;
-    }
-
-     /**
-     * 查询应用数量
-     * @param info 应用信息
-     * @return 应用数量
-     */
-    @Override
-    public int queryAppsCount(Map info) {
-        logger.debug("查询应用数据 入参 info : {}",info);
-
-        List<Map> businessAppInfos = sqlSessionTemplate.selectList("appServiceDaoImpl.queryAppsCount", info);
-        if (businessAppInfos.size() < 1) {
-            return 0;
-        }
-
-        return Integer.parseInt(businessAppInfos.get(0).get("count").toString());
-    }
-
-
-}

+ 59 - 0
CommonService/src/main/java/com/java110/common/dao/impl/FileServiceDaoImpl.java

@@ -0,0 +1,59 @@
+package com.java110.common.dao.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.DAOException;
+import com.java110.utils.util.DateUtil;
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.common.dao.IFileServiceDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 应用服务 与数据库交互
+ * Created by wuxw on 2017/4/5.
+ */
+@Service("appServiceDaoImpl")
+//@Transactional
+public class FileServiceDaoImpl extends BaseServiceDao implements IFileServiceDao {
+
+    private static Logger logger = LoggerFactory.getLogger(FileServiceDaoImpl.class);
+
+    /**
+     * 应用信息封装
+     * @param fileInfo 应用信息 封装
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public int saveFile(Map fileInfo) throws DAOException {
+        // 查询business_user 数据是否已经存在
+        logger.debug("保存应用信息 入参 fileInfo : {}",fileInfo);
+        int saveFlag = sqlSessionTemplate.insert("fileServiceDaoImpl.saveFile",fileInfo);
+
+        return saveFlag;
+    }
+
+
+    /**
+     * 查询文件信息
+     * @param info bId 信息
+     * @return 应用信息
+     * @throws DAOException DAO异常
+     */
+    @Override
+    public List<Map> getFiles(Map info) throws DAOException {
+
+        logger.debug("查询应用信息 入参 info : {}",info);
+
+        List<Map> businessAppInfos = sqlSessionTemplate.selectList("fileServiceDaoImpl.getFiles",info);
+
+        return businessAppInfos;
+    }
+
+
+
+}

+ 39 - 0
CommonService/src/main/java/com/java110/common/smo/impl/FileInnerServiceSMOImpl.java

@@ -0,0 +1,39 @@
+package com.java110.common.smo.impl;
+
+import com.java110.common.dao.IFileServiceDao;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.core.smo.file.IFileInnerServiceSMO;
+import com.java110.dto.file.FileDto;
+import com.java110.utils.util.BeanConvertUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+public class FileInnerServiceSMOImpl extends BaseServiceSMO implements IFileInnerServiceSMO {
+
+    @Autowired
+    private IFileServiceDao fileServiceDaoImpl;
+
+    @Override
+    public int saveFile(FileDto fileDto) {
+
+        int saveFileFlag = fileServiceDaoImpl.saveFile(BeanConvertUtil.beanCovertMap(fileDto));
+
+        return saveFileFlag;
+    }
+
+    @Override
+    public List<FileDto> queryFiles(FileDto fileDto) {
+        return BeanConvertUtil.covertBeanList(fileServiceDaoImpl.getFiles(BeanConvertUtil.beanCovertMap(fileDto)), FileDto.class);
+    }
+
+    public IFileServiceDao getFileServiceDaoImpl() {
+        return fileServiceDaoImpl;
+    }
+
+    public void setFileServiceDaoImpl(IFileServiceDao fileServiceDaoImpl) {
+        this.fileServiceDaoImpl = fileServiceDaoImpl;
+    }
+}

+ 22 - 13
java110-bean/src/main/java/com/java110/dto/demo/DemoDto.java

@@ -16,10 +16,10 @@ import java.util.Date;
 public class DemoDto extends PageDto implements Serializable {
 
     private String demoRemark;
-private String demoName;
-private String demoValue;
-private String demoId;
-private String userId;
+    private String demoName;
+    private String demoValue;
+    private String demoId;
+    private String userId;
 
 
     private Date createTime;
@@ -30,31 +30,40 @@ private String userId;
     public String getDemoRemark() {
         return demoRemark;
     }
-public void setDemoRemark(String demoRemark) {
+
+    public void setDemoRemark(String demoRemark) {
         this.demoRemark = demoRemark;
     }
-public String getDemoName() {
+
+    public String getDemoName() {
         return demoName;
     }
-public void setDemoName(String demoName) {
+
+    public void setDemoName(String demoName) {
         this.demoName = demoName;
     }
-public String getDemoValue() {
+
+    public String getDemoValue() {
         return demoValue;
     }
-public void setDemoValue(String demoValue) {
+
+    public void setDemoValue(String demoValue) {
         this.demoValue = demoValue;
     }
-public String getDemoId() {
+
+    public String getDemoId() {
         return demoId;
     }
-public void setDemoId(String demoId) {
+
+    public void setDemoId(String demoId) {
         this.demoId = demoId;
     }
-public String getUserId() {
+
+    public String getUserId() {
         return userId;
     }
-public void setUserId(String userId) {
+
+    public void setUserId(String userId) {
         this.userId = userId;
     }
 

+ 65 - 0
java110-bean/src/main/java/com/java110/dto/file/FileDto.java

@@ -0,0 +1,65 @@
+package com.java110.dto.file;
+
+import java.io.Serializable;
+
+public class FileDto  implements Serializable {
+    private String fileId;
+
+    private String fileName;
+
+    private String communityId;
+
+    private String context;
+
+    private String statusCd;
+
+    private String suffix;
+
+    public String getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(String fileId) {
+        this.fileId = fileId;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+    public String getContext() {
+        return context;
+    }
+
+    public void setContext(String context) {
+        this.context = context;
+    }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+
+    public String getSuffix() {
+        return suffix;
+    }
+
+    public void setSuffix(String suffix) {
+        this.suffix = suffix;
+    }
+}

+ 65 - 0
java110-bean/src/main/java/com/java110/vo/api/file/ApiFileVo.java

@@ -0,0 +1,65 @@
+package com.java110.vo.api.file;
+
+import java.io.Serializable;
+
+public class ApiFileVo implements Serializable {
+    private String fileId;
+
+    private String fileName;
+
+    private String communityId;
+
+    private String context;
+
+    private String statusCd;
+
+    private String suffix;
+
+    public String getFileId() {
+        return fileId;
+    }
+
+    public void setFileId(String fileId) {
+        this.fileId = fileId;
+    }
+
+    public String getFileName() {
+        return fileName;
+    }
+
+    public void setFileName(String fileName) {
+        this.fileName = fileName;
+    }
+
+    public String getCommunityId() {
+        return communityId;
+    }
+
+    public void setCommunityId(String communityId) {
+        this.communityId = communityId;
+    }
+
+    public String getContext() {
+        return context;
+    }
+
+    public void setContext(String context) {
+        this.context = context;
+    }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+
+    public String getSuffix() {
+        return suffix;
+    }
+
+    public void setSuffix(String suffix) {
+        this.suffix = suffix;
+    }
+}

+ 3 - 0
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java

@@ -91,6 +91,9 @@ public class GenerateCodeFactory {
     public static final String MENU = "70";
     public static final String BASE_PRIVILEGE = "50";
     public static final String CODE_PREFIX_vId = "11";
+    public static final String CODE_PREFIX_file_id = "81";
+
+
 
     /**
      * 只有在不调用服务生成ID时有用

+ 33 - 0
java110-core/src/main/java/com/java110/core/smo/file/IFileInnerServiceSMO.java

@@ -0,0 +1,33 @@
+package com.java110.core.smo.file;
+
+import com.java110.core.feign.FeignConfiguration;
+import com.java110.dto.file.FileDto;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+/**
+ * 文件处理,将文件 存在数据库中(只有演示环境可以保存到数据库中,正式环境 应该对接到文件系统)
+ */
+@FeignClient(name = "common-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/fileApi")
+public interface IFileInnerServiceSMO {
+
+    /**
+     * 保存文件
+     * @param fileDto 文件数据封装
+     * @return true 成功 false 失败
+     */
+    @RequestMapping(value = "/saveFile", method = RequestMethod.POST)
+    int saveFile(FileDto fileDto);
+
+    /**
+     * 查询文件信息
+     * @param fileDto 文件数据封装
+     * @return 文件数据对象
+     */
+    @RequestMapping(value = "/queryFiles", method = RequestMethod.POST)
+    List<FileDto> queryFiles(FileDto fileDto);
+}

+ 29 - 0
java110-db/src/main/resources/mapper/file/FileServiceDaoImplMapper.xml

@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="fileServiceDaoImpl">
+
+    <!-- 保存费用信息 add by wuxw 2018-07-03 -->
+    <insert id="saveFile" parameterType="Map">
+        insert into hc_file(
+        file_id,community_id,file_name,context,suffix
+        ) values (
+        #{fileId},#{communityId},#{fileName},#{context},#{suffix}
+        )
+    </insert>
+
+
+
+    <!-- 查询费用信息 add by wuxw 2018-07-03 -->
+    <select id="getFiles" parameterType="Map" resultType="Map">
+        select t.file_id fileId,t.community_id communityId,t.file_name fileName,t.context,t.suffix
+        from hc_file t
+        where 1 =1
+            and t.file_id= #{fileId}
+        <if test="communityId !=null and communityId != ''">
+            and t.community_id= #{communityId}
+        </if>
+    </select>
+
+</mapper>

+ 10 - 0
java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeServiceConstant.java

@@ -34,5 +34,15 @@ public class ServiceCodeServiceConstant {
      */
     public static final String BINDING_SERVICE = "service.bindingService";
 
+    /**
+     * 查询文件
+     */
+    public static final String GET_FILE = "file.getFile";
+
+    /**
+     * 保存文件
+     */
+    public static final String SAVE_FILE = "file.saveFile";
+
 
 }