소스 검색

Merge branch '2.0' of http://192.168.1.220:10080/Amoy2/wlyy2.0 into 2.0

wangzhinan 1 년 전
부모
커밋
004baa38fe

+ 0 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageDO.java

@ -48,8 +48,6 @@ public class ServicePackageDO extends UuidIdentityEntityWithOperator implements
    private String  serverTime;//服务期限
    private String  serverTimeDescription;//服务时间说明
    private String createUserCode;//创建人
    @Column(name = "leased_code")

+ 2 - 2
common/common-entity/src/main/java/com/yihu/jw/entity/base/servicePackage/ServicePackageItemDO.java

@ -36,10 +36,10 @@ public class ServicePackageItemDO extends UuidIdentityEntity implements java.io.
    private String leasedCode;//租户code
    private String leasedName;//租户name
    private String subItemType;//是否包含子项目
    @Transient
    private String subItemId;//数据库不存在的字段
    private String subItemId;//数据库不存在的字段
    @Transient
    public String getSubItemId() {
        return subItemId;
    }

+ 103 - 0
common/common-rest-model/src/main/java/com/yihu/jw/restmodel/qvo/ParamQvo.java

@ -0,0 +1,103 @@
package com.yihu.jw.restmodel.qvo;
/**
 * @author suqinyi
 * @Date 2023/9/21
 */
public class ParamQvo {
    private String id;
    private String leasedCode;//租户
    private String orgCode;//机构code
    private String searchKey;//机构code
    private String status;//状态
    private String jsonStr;
    private String configureIf;//是否是配置
    private String pageIf;//是否分页
    private int page;//是否分页
    private int pageSize;//数量
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getJsonStr() {
        return jsonStr;
    }
    public void setJsonStr(String jsonStr) {
        this.jsonStr = jsonStr;
    }
    public String getLeasedCode() {
        return leasedCode;
    }
    public void setLeasedCode(String leasedCode) {
        this.leasedCode = leasedCode;
    }
    public String getOrgCode() {
        return orgCode;
    }
    public void setOrgCode(String orgCode) {
        this.orgCode = orgCode;
    }
    public String getSearchKey() {
        return searchKey;
    }
    public void setSearchKey(String searchKey) {
        this.searchKey = searchKey;
    }
    public String getStatus() {
        return status;
    }
    public void setStatus(String status) {
        this.status = status;
    }
    public String getConfigureIf() {
        return configureIf;
    }
    public void setConfigureIf(String configureIf) {
        this.configureIf = configureIf;
    }
    public String getPageIf() {
        return pageIf;
    }
    public void setPageIf(String pageIf) {
        this.pageIf = pageIf;
    }
    public int getPage() {
        return page;
    }
    public void setPage(int page) {
        this.page = page;
    }
    public int getPageSize() {
        return pageSize;
    }
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}

+ 25 - 1
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageEndpoint.java

@ -1,11 +1,12 @@
package com.yihu.jw.base.endpoint.servicePackage;
import com.alibaba.fastjson.JSON;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.service.servicePackage.ServicePackageService;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.restmodel.qvo.ParamQvo;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -69,6 +70,29 @@ public class ServicePackageEndpoint extends EnvelopRestEndpoint {
        return success("操作成功");
    }
    @PostMapping(value = "deleteById")
    @ApiOperation(value = "删除服务包")
    public Envelop deleteById(
            @ApiParam(name = "jsonStr", value = "Json数据", required = false) @RequestParam String jsonStr
    ) throws Exception {
        ParamQvo qvo = JSON.parseObject(jsonStr, ParamQvo.class);
        servicePackageService.deleteById(qvo);
        return success("删除成功");
    }
    @PostMapping(value = "changeState")
    @ApiOperation(value = "改变服务包状态")
    public Envelop changeState(
            @ApiParam(name = "jsonStr", value = "Json数据", required = false) @RequestParam String jsonStr
    ) throws Exception {
        ParamQvo qvo = JSON.parseObject(jsonStr, ParamQvo.class);
        servicePackageService.changeState(qvo);
        return success("删除成功");
    }
    //--------------------------------------------------------------------------------------
    //
    //--------------------------------------------------------------------------------------

+ 10 - 6
svr/svr-base/src/main/java/com/yihu/jw/base/endpoint/servicePackage/ServicePackageItemEndpoint.java

@ -1,11 +1,13 @@
package com.yihu.jw.base.endpoint.servicePackage;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.service.servicePackage.ServicePackageItemService;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.restmodel.qvo.ParamQvo;
import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
@ -46,11 +48,12 @@ public class ServicePackageItemEndpoint extends EnvelopRestEndpoint {
            @ApiParam(name = "orgCode", value = "机构code") @RequestParam(value = "orgCode", required = false) String orgCode,
            @ApiParam(name = "itemName", value = "服务项名称") @RequestParam(value = "itemName", required = false) String itemName,
            @ApiParam(name = "status", value = "状态") @RequestParam(value = "status", required = false) String status,
            @ApiParam(name = "configureIf", value = "是否配置项") @RequestParam(value = "configureIf", required = false) String configureIf,
            @ApiParam(name = "pageIf", value = "是否分页") @RequestParam(value = "pageIf", required = false) String pageIf,
            @ApiParam(name = "page", value = "页码") @RequestParam(value = "page", required = false) int page,
            @ApiParam(name = "pageSize", value = "数量") @RequestParam(value = "pageSize", required = false) int pageSize
    ) throws Exception {
        Map<String, Object> map = servicePackageItemService.getItemList(leasedCode, orgCode, itemName, status, pageIf, page, pageSize);
        Map<String, Object> map = servicePackageItemService.getItemList(leasedCode, orgCode, itemName, status, configureIf,pageIf, page, pageSize);
        List<Map<String, Object>> list = (List<Map<String, Object>>) map.get("list");
        Integer count = (Integer) map.get("count");
        return success(list, count, page, pageSize);
@ -75,14 +78,15 @@ public class ServicePackageItemEndpoint extends EnvelopRestEndpoint {
     * 失效 del改成0
     * lapse
     */
    @PostMapping(value = "lapseItem")
    @PostMapping(value = "changeState")
    @ApiOperation(value = "失效")
    public ObjEnvelop lapseItem(
            @ApiParam(name = "itemId", value = "itemId", required = true) @RequestParam String itemId) throws Exception {
        if (org.apache.commons.lang3.StringUtils.isBlank(itemId)) {
    public ObjEnvelop changeState(
            @ApiParam(name = "jsonStr", value = "jsonStr", required = true) @RequestParam String jsonStr) throws Exception {
        ParamQvo qvo = JSON.parseObject(jsonStr, ParamQvo.class);
        if (org.apache.commons.lang3.StringUtils.isBlank(qvo.getId())) {
            return failed("ID不能为空", ObjEnvelop.class);
        }
        ServicePackageItemDO entity = servicePackageItemService.lapseItem(itemId);
        ServicePackageItemDO entity = servicePackageItemService.changeState(qvo);
        return success(entity);
    }

+ 15 - 10
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageItemService.java

@ -7,6 +7,7 @@ import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemRelationalDO;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.restmodel.qvo.ParamQvo;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
@ -74,26 +75,30 @@ public class ServicePackageItemService extends BaseJpaService<ServicePackageItem
        return result;
    }
    public HashMap<String, Object> getItemList(String leasedCode, String orgCode, String itemName, String status, String pageIf, int page, int pageSize) {
    public HashMap<String, Object> getItemList(String leasedCode, String orgCode, String itemName, String status, String configureIf, String pageIf, int page, int pageSize) {
        String detailSql = "SELECT * ";
        String countSql = "SELECT count(1) ";
        String pageSql = "";
        String sql = "FROM base_service_package_item WHERE 1=1 \n";
        String sql = " FROM base_service_package_item WHERE 1=1 \n";
        if (StringUtils.isNotBlank(configureIf)) {
            //添加的项
            sql += " AND service_package_id ='system'  ";
        }
        if (StringUtils.isNotBlank(leasedCode)) {
            sql += "AND leased_code ='" + leasedCode + "'";
            sql += " AND leased_code ='" + leasedCode + "'";
        }
        if (StringUtils.isNotBlank(orgCode)) {
            sql += "AND org_code ='" + orgCode + "'";
            sql += " AND org_code ='" + orgCode + "'";
        }
        if (StringUtils.isNotBlank(status)) {
            sql += "AND del ='" + status + "'";
            sql += " AND del ='" + status + "'";
        }
        if (StringUtils.isNotBlank(itemName)) {
            sql += "AND `name` LIKE '%" + itemName + "%'";
            sql += " AND `name` LIKE '%" + itemName + "%'";
        }
        if (StringUtils.isNotBlank(pageIf)) {
            //需要分页
            pageSql = " limit " + page * pageSize + "," + pageSize;
            pageSql = " limit " + (page-1) * pageSize + "," + pageSize;
        }
        countSql += sql;
        detailSql += sql + pageSql;
@ -105,10 +110,10 @@ public class ServicePackageItemService extends BaseJpaService<ServicePackageItem
        return map;
    }
    public ServicePackageItemDO lapseItem(String itemId) {
        ServicePackageItemDO entity = servicePackageItemDao.findById(itemId).orElse(null);
    public ServicePackageItemDO changeState(ParamQvo qvo) {
        ServicePackageItemDO entity = servicePackageItemDao.findById(qvo.getId()).orElse(null);
        if (entity != null) {
            entity.setDel("0");
            entity.setDel(qvo.getStatus());
            ServicePackageItemDO newEntity = servicePackageItemDao.save(entity);
            return newEntity;
        }

+ 55 - 58
svr/svr-base/src/main/java/com/yihu/jw/base/service/servicePackage/ServicePackageService.java

@ -3,27 +3,22 @@ package com.yihu.jw.base.service.servicePackage;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.base.dao.servicePackage.ServicePackageDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageItemDao;
import com.yihu.jw.base.dao.servicePackage.ServicePackageSignRecordDao;
import com.yihu.jw.base.dao.system.SystemDictEntryDao;
import com.yihu.jw.base.dao.team.BaseTeamDao;
import com.yihu.jw.base.util.ConstantUtils;
import com.yihu.jw.entity.base.org.BaseOrgDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageDO;
import com.yihu.jw.entity.base.servicePackage.ServicePackageItemDO;
import com.yihu.jw.entity.base.system.SystemDictEntryDO;
import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.org.dao.BaseOrgDao;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.restmodel.qvo.ParamQvo;
import com.yihu.jw.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
 * @author yeshijie on 2018/8/17.
@ -38,73 +33,54 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
    private ServicePackageDao servicePackageDao;
    @Autowired
    private ServicePackageItemDao servicePackageItemDao;
    @Autowired
    private BaseOrgDao baseOrgDao;
    @Autowired
    private BaseTeamDao baseTeamDao;
    @Autowired
    private SystemDictEntryDao systemDictEntryDao;
    @Autowired
    private ServicePackageSignRecordDao servicePackageSignRecordDao;
    @Transactional(rollbackFor = Exception.class)
    public JSONObject create(ServicePackageDO servicePackageDO) {
    public JSONObject create(ServicePackageDO packageVo) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        JSONObject result = new JSONObject();
        //获取服务项
        List<ServicePackageItemDO> itemList = packageVo.getPackageItemDOList();
        List<ServicePackageItemDO> itemDOList = servicePackageDO.getPackageItemDOList();
        if (itemDOList == null) {
            servicePackageDO.setNum(0);
        //服务项的个数
        if (itemList == null) {
            packageVo.setNum(0);
        } else {
            servicePackageDO.setNum(itemDOList.size());
            packageVo.setNum(itemList.size());
        }
        if (StringUtil.isEmpty(servicePackageDO.getId())) {
        //数据逻辑
        if (StringUtil.isEmpty(packageVo.getId())) {
            //新增
            servicePackageDO.setCreateTime(new Date());
            servicePackageDO = servicePackageDao.save(servicePackageDO);
            packageVo.setCreateTime(new Date());
            packageVo = servicePackageDao.save(packageVo);
        } else {
            //修改
            ServicePackageDO oldDO = servicePackageDao.findById(servicePackageDO.getId()).orElse(null);
            oldDO.setName(servicePackageDO.getName());
            oldDO.setDel(servicePackageDO.getDel());
            oldDO.setType(servicePackageDO.getType());
            oldDO.setIntroduce(servicePackageDO.getIntroduce());
            oldDO.setOrgCode(servicePackageDO.getOrgCode());
            oldDO.setOrgName(servicePackageDO.getOrgName());
            servicePackageDO = servicePackageDao.save(oldDO);
            ServicePackageDO oldDO = servicePackageDao.findById(packageVo.getId()).orElse(null);
            oldDO.setName(packageVo.getName());
            oldDO.setDel(packageVo.getDel());
            oldDO.setType(packageVo.getType());
            oldDO.setIntroduce(packageVo.getIntroduce());
            oldDO.setOrgCode(packageVo.getOrgCode());
            oldDO.setOrgName(packageVo.getOrgName());
            oldDO.setLeasedCode(packageVo.getLeasedCode());
            oldDO.setLeasedName(packageVo.getLeasedName());
            //更新服务包
            packageVo = servicePackageDao.save(oldDO);
            //删除服务项-根据server_page_id
            servicePackageItemDao.deleteByServicePackageId(oldDO.getId());
        }
        List<ServicePackageItemDO> itemDOs = new ArrayList<>();
        for (ServicePackageItemDO itemDO : itemDOList) {
            BaseOrgDO baseOrgDO = baseOrgDao.findByCode(itemDO.getOrgCode());
            if (baseOrgDO != null) {
                itemDO.setOrgName(baseOrgDO.getName());
            }
            itemDO = servicePackageItemDao.findById(itemDO.getId()).orElse(null);
            ;
            ServicePackageItemDO itemDO1 = new ServicePackageItemDO();
            BeanUtils.copyProperties(itemDO, itemDO1);
            itemDO1.setId(null);
            itemDO1.setDictId(itemDO.getId());
            itemDO1.setServicePackageId(servicePackageDO.getId());
            itemDO1.setCreateTime(DateUtil.getStringDate());
            SystemDictEntryDO systemDictEntryDO = systemDictEntryDao.findByDictCodeAndCode("service_item", itemDO.getCode());
            if (systemDictEntryDO != null) {
                if (StringUtils.isNotBlank(systemDictEntryDO.getRemark())) {//服务项所属专题不为空
                    itemDO1.setTopicItem(systemDictEntryDO.getRemark());
                }
            }
            itemDOs.add(itemDO1);
        //保存服务项
        List<ServicePackageItemDO> saveItemList = new ArrayList<>();
        for (ServicePackageItemDO item : itemList) {
            item.setCreateTime(dateFormat.format(new Date()));
            saveItemList.add(item);
        }
        servicePackageItemDao.saveAll(itemDOs);
        servicePackageItemDao.saveAll(saveItemList);
        result.put("response", ConstantUtils.SUCCESS);
        result.put("msg", "操作成功");
        return result;
    }
    public HashMap<String, Object> findList(String leasedCode, String orgCode, String pageName, String status, int page, int size) {
        String detailSql = "SELECT\n" +
                "	(SELECT GROUP_CONCAT(b.`name`) FROM  base_service_package_item b WHERE b.service_package_id=a.id) 'pageItemName',\n" +
@ -135,4 +111,25 @@ public class ServicePackageService extends BaseJpaService<ServicePackageDO, Serv
        map.put("count", count);
        return map;
    }
    public void deleteById(ParamQvo qvo) {
        //查出服务包的服务项
        String itemSql = "SELECT id 'itemId' FROM base_service_package_item WHERE service_package_id ='" + qvo.getId() + "'";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(itemSql);
        String collect = list.stream().map(map -> String.valueOf("'" + map.get("itemId") + "'")).collect(Collectors.joining(",", "(", ") "));
        //删除服务部
        String sql01 = " DELETE FROM base_service_package WHERE id='" + qvo.getId() + "'";
        //删除服务项
        String sql02 = " DELETE FROM base_service_package_item WHERE service_package_id='" + qvo.getId() + "'";
        //删除关联关系
        String sql03 = " DELETE FROM base_service_package_item_relational WHERE item_id IN " + collect;
        jdbcTemplate.execute(sql03);
        jdbcTemplate.execute(sql02);
        jdbcTemplate.execute(sql01);
    }
    public void changeState(ParamQvo qvo) {
        String sql = " UPDATE  base_service_package SET del='" + qvo.getStatus() + "'' WHERE id='" + qvo.getId() + "'";
        jdbcTemplate.execute(sql);
    }
}

+ 1 - 1
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/ResourceConfigurationController.java

@ -42,7 +42,7 @@ public class ResourceConfigurationController extends EnvelopRestEndpoint {
        params.put("filters", "");
        String filters ="valid=1";
        if (!StringUtils.isEmpty(searchNm)){
            filters += ";name?" + searchNm + " g1;id?" + searchNm + " g1";
            filters += ";name?" + searchNm + " g1;ehrId?" + searchNm + " g1";
        }
        params.put("filters",filters);
        params.put("page", page);

+ 3 - 0
svr/svr-basic/src/main/java/com/yihu/jw/basic/agadmin/controller/resource/RsResourceCategoryController.java

@ -8,6 +8,7 @@ import com.yihu.jw.restmodel.web.Envelop;
import com.yihu.jw.restmodel.web.ListEnvelop;
import com.yihu.jw.restmodel.web.ObjEnvelop;
import com.yihu.jw.restmodel.web.endpoint.EnvelopRestEndpoint;
import com.yihu.jw.util.entity.ServiceException;
import io.swagger.annotations.Api;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -165,6 +166,8 @@ public class RsResourceCategoryController extends EnvelopRestEndpoint {
            String url = "/resources/category/" + id;
            rsCategoryService.deleteRsCategory(id);
            return success("删除成功");
        }catch (ServiceException se){
            return failed(se.getMessage());
        }catch (Exception ex){
            ex.printStackTrace();
            return failed(ERR_SYSTEM_DES);

+ 6 - 28
svr/svr-basic/src/main/java/com/yihu/jw/basic/resource/service/ResourceBrowseService.java

@ -70,42 +70,20 @@ public class ResourceBrowseService extends BaseJpaService {
            return null;
        }
        Map<String, String> correspondMap = new HashMap<>();
        boolean isOtherVersion = false;
        String version = "";
        String code = "";
        if (resourcesCode.split("\\$").length > 1) {
            isOtherVersion = true;
            version = resourcesCode.split("\\$")[1];
            code = resourcesCode.split("\\$")[0];
        }
        List<DtoResourceMetadata> metadataList = resourceBrowseDao.getAccessMetadata(rsResource, roleId, correspondMap);
        //资源结构
        List<MRsColumnsModel> mRsColumnsModels = new ArrayList<>();
        if (metadataList != null) {
            for (DtoResourceMetadata r : metadataList) {
                MRsColumnsModel mRsColumnsModel = new MRsColumnsModel();
                if (!isOtherVersion) {
                    mRsColumnsModel.setValue(r.getName());
                    if (!StringUtils.isEmpty(r.getDictCode())) {
                        mRsColumnsModel.setCode(r.getEhrId());
                    } else {
                        mRsColumnsModel.setCode(r.getEhrId());
                    }
                    mRsColumnsModel.setType(r.getColumnType());
                    mRsColumnsModel.setDict(r.getDictCode());
                mRsColumnsModel.setValue(r.getName());
                if (!StringUtils.isEmpty(r.getDictCode())) {
                    mRsColumnsModel.setCode(r.getStdCode());
                } else {
//                    String name = stdTransformClient.stdMetadataName(version, code, correspondMap.get(r.getId()));
//                    if (!StringUtils.isEmpty(name)) {
//                        mRsColumnsModel.setValue(name);
//                        if (!StringUtils.isEmpty(r.getDictCode())) {
//                            mRsColumnsModel.setCode(r.getId() + "_VALUE");
//                        } else {
//                            mRsColumnsModel.setCode(r.getId());
//                        }
//                        mRsColumnsModel.setType(r.getColumnType());
//                        mRsColumnsModel.setDict(r.getDictCode());
//                    }
                    mRsColumnsModel.setCode(r.getStdCode());
                }
                mRsColumnsModel.setType(r.getColumnType());
                mRsColumnsModel.setDict(r.getDictCode());
                mRsColumnsModels.add(mRsColumnsModel);
            }
        }

+ 4 - 3
svr/svr-basic/src/main/java/com/yihu/jw/basic/resource/service/RsResourceCategoryService.java

@ -5,6 +5,7 @@ import com.yihu.jw.mysql.query.BaseJpaService;
import com.yihu.jw.basic.resource.dao.RsResourceCategoryDao;
import com.yihu.jw.basic.resource.dao.RsResourceDao;
import com.yihu.jw.entity.ehr.resource.RsResourceCategory;
import com.yihu.jw.util.entity.ServiceException;
import org.hibernate.query.Query;
import org.hibernate.Session;
import org.springframework.beans.factory.annotation.Autowired;
@ -35,12 +36,12 @@ public class RsResourceCategoryService extends BaseJpaService<RsResourceCategory
     *
     * @param id 资源类别id
     */
    public void deleteRsCategory(String id) throws Exception {
    public void deleteRsCategory(String id) throws ServiceException {
        if(rsResourcesCategoryDao.countByPid(id) > 0) {
            throw new Exception("此类别包含子类别!");
            throw new ServiceException("此类别包含子类别!");
        }
        if(resourcesDao.countByCategoryId(id) > 0) {
            throw new Exception("此类别包含资源!");
            throw new ServiceException("此类别包含资源!");
        }
        rsResourcesCategoryDao.deleteById(id);
    }