Commit 10d6ec94 authored by huyuchen's avatar huyuchen

明细接口改造

parent adc8cdc8
......@@ -56,6 +56,12 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-ekp-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
<properties>
......
package com.yifu.cloud.plus.v1.yifu.common.dapr.util;
import com.alibaba.fastjson.JSON;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialPushInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.SecurityConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.dapr.config.DaprEkpProperties;
......@@ -31,7 +32,7 @@ public class EkpDaprUtils {
* @Param
* @return
**/
public R<Boolean> pushSocialInfoToEkp(List<EkpPushSocialParam> unPushList) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/ekpSocialPush/inner/pushSocialInfoToEkp", JSON.toJSONString(unPushList), Boolean.class, SecurityConstants.FROM_IN);
public R<EkpSocialPushInfoVo> pushSocialInfoToEkp(List<EkpPushSocialParam> unPushList) {
return HttpDaprUtil.invokeMethodPost(daprProperties.getAppUrl(),daprProperties.getAppId(),"/ekpSocialPush/inner/pushSocialInfoToEkp", JSON.toJSONString(unPushList), EkpSocialPushInfoVo.class, SecurityConstants.FROM_IN);
}
}
......@@ -261,5 +261,8 @@ public class EkpPushSocialParam implements Serializable {
* 社保创建人姓名
**/
private String fd_3b5cc58d1a70fe;
/**
* 社保ids
**/
private String socialIds;
}
\ No newline at end of file
......@@ -42,5 +42,17 @@
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-common-ekp</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.yifu.cloud.plus.v1</groupId>
<artifactId>yifu-social-api</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
package com.yifu.cloud.plus.v1.ekp.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
......@@ -19,157 +22,157 @@ import java.util.Date;
@Schema(description = "社保明细表")
public class EkpSocialInfo {
@Schema(description = "fdId")
private String fdId;
@TableId(type = IdType.ASSIGN_ID)
private String fd_id;
private String fd3add9dd7833db8;
private String fd_3add9dd7833db8;
private String fd3add9de0be85e4;
private String fd_3add9de0be85e4;
private String fd3add9e1a670144;
private String fd_3add9e1a670144;
private String fd3adfe8c70d3fd4;
private String fd_3adfe8c70d3fd4;
private String fd3adfe8c8468e54;
private String fd_3adfe8c8468e54;
private String fd3adfe95c169c48;
private String fd_3adfe95c169c48;
private String fd3adfe8c73cb5a4;
private String fd_3adfe8c73cb5a4;
private String fd3adfe8c81a0e42;
private String fd_3adfe8c81a0e42;
private String fd3adfe8c79989d4;
private String fd_3adfe8c79989d4;
private String fd3adfe8c7e4cf7a;
private String fd_3adfe8c7e4cf7a;
private Date fd3adfe8cb96c41e;
private String fd_3adfe8cb96c41e;
private Date fd3adfe8cf632700;
private String fd_3adfe8cf632700;
private Date fd3adfe8cff746bc;
private String fd_3adfe8cff746bc;
private Double fd3adfeb4e8064a8;
private Double fd_3adfeb4e8064a8;
private Double fd3adfeb52a4d2e2;
private Double fd_3adfeb52a4d2e2;
private Double fd3adfeb52fbe966;
private Double fd_3adfeb52fbe966;
private Double fd3adfeb5366dd82;
private Double fd_3adfeb5366dd82;
private Double fd3adfeb53c70f72;
private Double fd_3adfeb53c70f72;
private Double fd3adfeb5413fb44;
private Double fd_3adfeb5413fb44;
private Double fd3adfeb7b624f06;
private Double fd_3adfeb7b624f06;
private String fd3add9ea428879a;
private String fd_3add9ea428879a;
private String fd3add9eaeed2560;
private String fd_3add9eaeed2560;
private String fd3adfeb830523b6;
private String fd_3adfeb830523b6;
private String fd3adfeb8489e6c2;
private String fd_3adfeb8489e6c2;
private Double fd3adfeb7bd97464;
private Double fd_3adfeb7bd97464;
private String fd3add9edfbc6f7e;
private String fd_3add9edfbc6f7e;
private String fd3add9eed23894a;
private String fd_3add9eed23894a;
private String fd3adfeb83a704c8;
private String fd_3adfeb83a704c8;
private String fd3adfeb84175f28;
private String fd_3adfeb84175f28;
private String fd3aeafa25916e82;
private String fd_3aeafa25916e82;
private Double fd3af9f2fa79ee72;
private Double fd_3af9f2fa79ee72;
private Double fd3af9f2ec516c30;
private Double fd_3af9f2ec516c30;
private Double fd3af9f2fcde9158;
private Double fd_3af9f2fcde9158;
private Double fd3af9f285ee1e38;
private Double fd_3af9f285ee1e38;
private Double fd3af9f2dd5d8fb8;
private Double fd_3af9f2dd5d8fb8;
private Double fd3af9f2e03295dc;
private Double fd_3af9f2e03295dc;
private Double fd3af9f27a3974e6;
private Double fd_3af9f27a3974e6;
private Double fd3af9f25b851e94;
private Double fd_3af9f25b851e94;
private Double fd3af9f27efdd912;
private Double fd_3af9f3059e5b9c;
private Double fd3af9f3059e5b9c;
private Double fd_3af9f26a3cae94;
private Double fd3af9f26a3cae94;
private Double fd_3af9f263e094c6;
private Double fd3af9f263e094c6;
private Double fd_3af9f2617e530a;
private Double fd3af9f2617e530a;
private Double fd_3af9f281651734;
private Double fd3af9f281651734;
private Double fd_3af9f2e9208e4e;
private Double fd3af9f2e9208e4e;
private Double fd_3af9f2e6dfb3f4;
private Double fd3af9f2e6dfb3f4;
private Double fd_3af9f2f8290f24;
private Double fd3af9f2f8290f24;
private Double fd_3af9f2e237f794;
private Double fd3af9f2e237f794;
private Double fd_3af9f2e45a5d78;
private Double fd3af9f2e45a5d78;
private Double fd_3af9f283a6f288;
private Double fd3af9f283a6f288;
private Double fd_3af9f2db1e5e16;
private Double fd3af9f2db1e5e16;
private Double fd_3af9f27ce947ac;
private Double fd3af9f27ce947ac;
private Double fd_3af9f2ff2c9f42;
private Double fd3af9f2ff2c9f42;
private Double fd_3af9f25f5e9cc4;
private Double fd3af9f25f5e9cc4;
private Double fd_3af9f2883941b4;
private Double fd3af9f2883941b4;
private Double fd_3af9f267a03bd6;
private Double fd3af9f267a03bd6;
private Double fd_3af9f303037214;
private Double fd3af9f303037214;
private Double fd_3af9f2d8df88c0;
private Double fd3af9f2d8df88c0;
private Double fd_3af9f257b1b586;
private Double fd3af9f257b1b586;
private String fd_3b0194c7336de0;
private String fd3b0194c7336de0;
private String fd_3b0b716e771e06;
private String fd3b0b716e771e06;
private String fd_3b1354c3add8c2;
private String fd3b1354c3add8c2;
private String fd_3b16e2f436ff98_text;
private String fd3b16e2f436ff98Text;
private String fd_3b16e2f436ff98;
private String fd3b16e2f436ff98;
private String fd_3b178e3ba5e258;
private String fd3b178e3ba5e258;
private Double fd_3b35a57b6e9d0a;
private Double fd3b35a57b6e9d0a;
private Double fd_3b35a5b0b04d54;
private Double fd3b35a5b0b04d54;
private Double fd_3b35a57aee1428;
private Double fd3b35a57aee1428;
private Double fd_3b35a5b03100c4;
private Double fd3b35a5b03100c4;
private String fd_3b3cab5f343a90;
private String fd3b3cab5f343a90;
private String fd_3b3e41ac916e66;
private String fd3b3e41ac916e66;
private String fd_3b438e61af0a56;
private String fd3b438e61af0a56;
private String fd_3b5cc5e697079a;
private String fd3b5cc5e697079a;
private String fd3b6495a5ad6e10;
private String fd_3b6495a5ad6e10;
private Date createTime;
@TableField(exist = false)
private String socialIds;
}
package com.yifu.cloud.plus.v1.ekp.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author huyc
* @Date 2024/3/1
* @Description 获取项目明细信息
* @Version 1.0
*/
@Data
public class EkpDeptInfoVo implements Serializable {
/**
* fdId
**/
private String fdId;
/**
* 是否为BPO项目
**/
private String isBpo;
/**
* 社保费用
**/
private String socialType;
/**
* 结算方式
**/
private String settleType;
/**
* 项目名称
**/
private String deptName;
/**
* 项目编码
**/
private String deptNo;
}
package com.yifu.cloud.plus.v1.ekp.vo;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpPushSocialParam;
import com.yifu.cloud.plus.v1.yifu.social.entity.TPaymentSocialPush;
import lombok.Data;
import java.io.Serializable;
......@@ -18,6 +18,10 @@ public class EkpSocialPushInfoVo implements Serializable {
/**
* 社保明细
**/
private List<EkpPushSocialParam> unPushInfo;
private List<TPaymentSocialPush> unPushInfo;
/**
* 社保id集合
**/
private List<String> paymentIds;
}
package com.yifu.cloud.plus.v1.ekp.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Author huyc
* @Date 2024/3/1
* @Description 获取项目明细信息
* @Version 1.0
*/
@Data
public class EkpSocialSumInfoVo implements Serializable {
/**
* 预估合计
**/
private Double ygSum;
/**
* 预估个人合计
**/
private Double ygPersonSum;
/**
* 实缴合计
**/
private Double sjSum;
/**
* 预估单位合计
**/
private Double ygDwSum;
/**
* 实缴单位合计
**/
private Double sjDwSum;
/**
* 实缴个人合计
**/
private Double sjPersonSum;
/**
* 应收
**/
private Double ys;
/**
* 个人应收
**/
private Double personYs;
/**
* 单位应收
**/
private Double dwYs;
/**
* 应支出
**/
private Double yzc;
/**
* 个人应支
**/
private Double personYzc;
/**
* 单位应支
**/
private Double dwYzc;
}
package com.yifu.cloud.plus.v1.ekp.controller;
import com.yifu.cloud.plus.v1.ekp.service.EkpSocialInfoService;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialPushInfoVo;
import com.yifu.cloud.plus.v1.yifu.common.security.annotation.Inner;
import com.yifu.cloud.plus.v1.yifu.insurances.vo.EkpSocialViewVo;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpPushSocialParam;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -23,8 +25,10 @@ import java.util.List;
@Tag(name = "社保明细推送")
public class TEkpSocialInfoController {
private final EkpSocialInfoService socialInfoService;
/**
* @param viewVo
* @param unPushList
* @Description: 推送社保明细数据
* @Author: huyc
* @Date: 2024/2/29
......@@ -32,8 +36,7 @@ public class TEkpSocialInfoController {
**/
@Inner
@PostMapping("/inner/pushSocialInfoToEkp")
public Boolean pushSocialInfoToEkp(@RequestBody List<EkpSocialViewVo> viewVo) {
// return tPaymentInfoService.updateSocialSettleStatus(viewVo);
return null;
public EkpSocialPushInfoVo pushSocialInfoToEkp(@RequestBody List<EkpPushSocialParam> unPushList) {
return socialInfoService.pushSocialInfoToEkp(unPushList);
}
}
......@@ -2,7 +2,12 @@ package com.yifu.cloud.plus.v1.ekp.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpDeptInfoVo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialSumInfoVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 社保明细表
......@@ -13,4 +18,17 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface EkpSocialInfoMapper extends BaseMapper<EkpSocialInfo> {
/**
* 获取所有项目信息
* @param
* @return
*/
List<EkpDeptInfoVo> getAllEkpDeptInfo();
/**
* 根据身份证和生成月份获取费用合计
* @param
* @return
*/
EkpSocialSumInfoVo getCostSumInfo(@Param("card") String empIdCard, @Param("month") String createMonth);
}
......@@ -2,6 +2,10 @@ package com.yifu.cloud.plus.v1.ekp.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialPushInfoVo;
import com.yifu.cloud.plus.v1.yifu.ekp.vo.EkpPushSocialParam;
import java.util.List;
/**
* 社保明细表
......@@ -11,4 +15,5 @@ import com.yifu.cloud.plus.v1.ekp.entity.EkpSocialInfo;
*/
public interface EkpSocialInfoService extends IService<EkpSocialInfo> {
EkpSocialPushInfoVo pushSocialInfoToEkp(List<EkpPushSocialParam> unPushList);
}
/*
* Copyright (c) 2018-2025, lengleng All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the yifu4cloud.com developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
package com.yifu.cloud.plus.v1.yifu.social.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yifu.cloud.plus.v1.yifu.social.entity.TPaymentSocialPush;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TPaymentSocialPushMapper;
import com.yifu.cloud.plus.v1.yifu.social.service.TPaymentSocialPushService;
import lombok.extern.log4j.Log4j2;
import org.springframework.stereotype.Service;
/**
* 收入明细表
*
* @author hgw
* @date 2022-08-30 17:34:58
*/
@Log4j2
@Service
public class TPaymentSocialPushServiceImpl extends ServiceImpl<TPaymentSocialPushMapper, TPaymentSocialPush> implements TPaymentSocialPushService {
}
package com.yifu.cloud.plus.v1.yifu.social.util;
import com.yifu.cloud.plus.v1.ekp.vo.EkpSocialPushInfoVo;
import com.yifu.cloud.plus.v1.yifu.archives.entity.TSettleDomain;
import com.yifu.cloud.plus.v1.yifu.archives.vo.TSettleDomainSelectVo;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.CommonConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.util.Common;
import com.yifu.cloud.plus.v1.yifu.common.core.util.DateUtil;
import com.yifu.cloud.plus.v1.yifu.common.core.util.R;
import com.yifu.cloud.plus.v1.yifu.common.core.util.RedisUtil;
import com.yifu.cloud.plus.v1.yifu.common.dapr.util.EkpDaprUtils;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpFundUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpIncomeUtil;
import com.yifu.cloud.plus.v1.yifu.ekp.util.EkpSocialUtil;
......@@ -18,7 +21,7 @@ import com.yifu.cloud.plus.v1.yifu.social.entity.*;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TForecastLibraryMapper;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TIncomeMapper;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TPaymentInfoMapper;
import com.yifu.cloud.plus.v1.yifu.social.mapper.TPaymentSocialPushMapper;
import com.yifu.cloud.plus.v1.yifu.social.service.TPaymentSocialPushService;
import com.yifu.cloud.plus.v1.yifu.social.service.TSendEkpErrorService;
import com.yifu.cloud.plus.v1.yifu.social.vo.TPaymentInfoPushVo;
import lombok.extern.slf4j.Slf4j;
......@@ -60,11 +63,14 @@ public class DoJointSocialTask {
private TForecastLibraryMapper forecastLibraryMapper;
@Autowired
private TPaymentSocialPushMapper socialPushMapper;
private TPaymentSocialPushService socialPushService;
@Autowired
private RedisUtil redisUtil;
@Autowired
private EkpDaprUtils ekpDaprUtil;
/**
* @Description: 合同-批量更换负责人
* @Author: huyc
......@@ -431,11 +437,10 @@ public class DoJointSocialTask {
log.info("推送社保实缴费用到EKP-线程开始");
TSettleDomain settleDomain;
EkpPushSocialParam socialParam;
TPaymentSocialPush a;
List<EkpPushSocialParam> paramList = new ArrayList<>();
Map<String,String> idMap = new HashMap<>();
for (TPaymentInfoPushVo library : unPushInfo) {
List<EkpPushSocialParam> insertList = new ArrayList<>();
try {
for (TPaymentInfoPushVo library : unPushInfo) {
//获取项目信息
if (Common.isNotNull(mapSelectVo)) {
settleDomain = mapSelectVo.get(library.getSettleDomainCode());
......@@ -532,7 +537,7 @@ public class DoJointSocialTask {
//应收
socialParam.setFd_3adfeb7b624f06(CommonConstants.EMPTY_STRING);
//收款状态
socialParam.setFd_3add9eaeed2560(CommonConstants.EMPTY_STRING);
socialParam.setFd_3add9eaeed2560("未收");
//结算单号
socialParam.setFd_3adfeb830523b6(CommonConstants.EMPTY_STRING);
//收款单号
......@@ -542,7 +547,7 @@ public class DoJointSocialTask {
//支出结算状态
socialParam.setFd_3add9edfbc6f7e(CommonConstants.EMPTY_STRING);
//付款状态
socialParam.setFd_3add9eed23894a(CommonConstants.EMPTY_STRING);
socialParam.setFd_3add9eed23894a("未付");
//支出缴纳单号
socialParam.setFd_3adfeb83a704c8(CommonConstants.EMPTY_STRING);
//实缴单位生育
......@@ -661,79 +666,41 @@ public class DoJointSocialTask {
socialParam.setFd_3b0afbe1f94a08(library.getId());
// 薪酬申请编号
socialParam.setFd_3b3cab77923f44(CommonConstants.EMPTY_STRING);
String body = ekpSocialUtil.sendToEKP(socialParam);
if (Common.isEmpty(body) || body.length() != 32) {
paramList.add(socialParam);
idMap.put(library.getId(), library.getIds());
socialParam.setSocialIds(library.getIds());
insertList.add(socialParam);
}
if (Common.isNotNull(body) && body.length() == 32) {
paymentInfoMapper.updateBySocialPaymentList(library.getIds());
a = new TPaymentSocialPush();
a.setId(library.getId());
a.setPaymentIds(library.getIds());
socialPushMapper.insert(a);
} else {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.THREE_STRING);
error.setCreateUserName("社保实缴费用推送");
error.setLinkId(library.getId());
error.setTitle(body);
error.setNums(CommonConstants.ONE_INT);
tSendEkpErrorService.saveError(error);
R<EkpSocialPushInfoVo> info = ekpDaprUtil.pushSocialInfoToEkp(insertList);
if (Common.isNotNull(info) && Common.isNotNull(info.getData())) {
EkpSocialPushInfoVo vo = info.getData();
List<String> idList = vo.getPaymentIds();
for (String ids : idList) {
paymentInfoMapper.updateBySocialPaymentList(ids);
}
} catch (Exception e) {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.THREE_STRING);
error.setCreateUserName("社保实缴费用推送");
error.setLinkId(library.getId());
error.setTitle(e.getMessage());
error.setNums(CommonConstants.ONE_INT);
tSendEkpErrorService.saveError(error);
log.error("推送社保实缴费用到EKP错误", e);
}
}
//推送失败的数据重新推送
if (!paramList.isEmpty()) {
for (EkpPushSocialParam s:paramList) {
try {
String body = ekpSocialUtil.sendToEKP(s);
if (Common.isNotNull(body) && body.length() == 32) {
paymentInfoMapper.updateBySocialPaymentList(idMap.get(s.getFd_3b0afbe1f94a08()));
a = new TPaymentSocialPush();
a.setId(s.getFd_3b0afbe1f94a08());
a.setPaymentIds(idMap.get(s.getFd_3b0afbe1f94a08()));
socialPushMapper.insert(a);
List<TPaymentSocialPush> list = vo.getUnPushInfo();
socialPushService.saveBatch(list);
} else {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.THREE_STRING);
error.setCreateUserName("社保实缴费用推送");
error.setLinkId(s.getFd_3b0afbe1f94a08());
error.setTitle(body);
error.setLinkId(unPushInfo.get(0).getId());
error.setTitle("社保明细批量保存失败");
error.setNums(CommonConstants.ONE_INT);
tSendEkpErrorService.saveError(error);
}
}catch (Exception e) {
} catch (Exception e) {
TSendEkpError error = new TSendEkpError();
error.setCreateTime(new Date());
error.setCreateDay(DateUtil.getThisDay());
error.setType(CommonConstants.THREE_STRING);
error.setCreateUserName("社保实缴费用推送");
error.setLinkId(s.getFd_3b0afbe1f94a08());
error.setLinkId(unPushInfo.get(0).getId());
error.setTitle(e.getMessage());
error.setNums(CommonConstants.ONE_INT);
tSendEkpErrorService.saveError(error);
log.error("推送社保实缴费用到EKP错误", e);
}
}
}
idMap.clear();
log.info("推送社保实缴费用到EKP结束");
}
......
......@@ -2162,7 +2162,7 @@
<include refid="tPaymentInfo_export_push_where"/>
</where>
GROUP BY a.EMP_IDCARD,a.SOCIAL_PAY_MONTH,a.SOCIAL_CREATE_MONTH,a.SOCIAL_PAY_ADDR
limit 0,10000
limit 0,5000
</select>
<!--tPaymentInfo合并查询-->
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment