Commit dca6c5d4 authored by tangwei's avatar tangwei

发货管理功能开发

parent d67c2bba
...@@ -169,12 +169,12 @@ ...@@ -169,12 +169,12 @@
<artifactId>hutool-all</artifactId> <artifactId>hutool-all</artifactId>
<version>5.7.22</version> <version>5.7.22</version>
</dependency> </dependency>
<dependency> <!-- <dependency>-->
<groupId>com.yeejoin</groupId> <!-- <groupId>com.yeejoin</groupId>-->
<artifactId>amos-component-influxdb</artifactId> <!-- <artifactId>amos-component-influxdb</artifactId>-->
<version>1.8.5-SNAPSHOT</version> <!-- <version>1.8.5-SNAPSHOT</version>-->
<scope>compile</scope> <!-- <scope>compile</scope>-->
</dependency> <!-- </dependency>-->
<dependency> <dependency>
<groupId>com.taosdata.jdbc</groupId> <groupId>com.taosdata.jdbc</groupId>
<artifactId>taos-jdbcdriver</artifactId> <artifactId>taos-jdbcdriver</artifactId>
......
...@@ -9,7 +9,6 @@ import com.yeejoin.amos.api.householdapi.face.model.HouseholdPvApiDto; ...@@ -9,7 +9,6 @@ import com.yeejoin.amos.api.householdapi.face.model.HouseholdPvApiDto;
import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.houseapi.HouseholdPvProducerInfo; import com.yeejoin.amos.api.householdapi.face.orm.houseapi.entity.houseapi.HouseholdPvProducerInfo;
import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvApiServiceImpl; import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvApiServiceImpl;
import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvProducerInfoServiceImpl; import com.yeejoin.amos.api.householdapi.face.service.impl.HouseholdPvProducerInfoServiceImpl;
import com.yeejoin.amos.component.influxdb.InfluxDbConnection;
import com.yeejoin.amos.openapi.enums.PVProducerInfoEnum; import com.yeejoin.amos.openapi.enums.PVProducerInfoEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -23,8 +22,8 @@ import java.util.*; ...@@ -23,8 +22,8 @@ import java.util.*;
@Slf4j @Slf4j
public class HouseholdPvUtils { public class HouseholdPvUtils {
private final static String API_REDIS_PREFIX = "HOUSEHOLD_API_CACHE_"; private final static String API_REDIS_PREFIX = "HOUSEHOLD_API_CACHE_";
@Autowired // @Autowired
InfluxDbConnection influxDbConnection; // InfluxDbConnection influxDbConnection;
@Autowired @Autowired
private HouseholdPvProducerInfoServiceImpl householdPvProducerInfoServiceImpl; private HouseholdPvProducerInfoServiceImpl householdPvProducerInfoServiceImpl;
@Autowired @Autowired
......
...@@ -11,7 +11,7 @@ spring.db1.datasource.password=Yeejoin@2020 ...@@ -11,7 +11,7 @@ spring.db1.datasource.password=Yeejoin@2020
spring.db1.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.db1.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
## db2-sync_data ## db2-sync_data
spring.db2.datasource.type: com.alibaba.druid.pool.DruidDataSource spring.db2.datasource.type: com.alibaba.druid.pool.DruidDataSource
spring.db2.datasource.url=jdbc:mysql://172.16.10.220:3306/amos_project?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8 spring.db2.datasource.url=jdbc:mysql://47.92.234.253:3306/amos_project_2023?allowMultiQueries=true&serverTimezone=GMT%2B8&characterEncoding=utf8
spring.db2.datasource.username=root spring.db2.datasource.username=root
spring.db2.datasource.password=Yeejoin@2020 spring.db2.datasource.password=Yeejoin@2020
spring.db2.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.db2.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
...@@ -58,14 +58,14 @@ biz.lxyd.lift.url=http://39.106.181.149:8088/elevatorapi ...@@ -58,14 +58,14 @@ biz.lxyd.lift.url=http://39.106.181.149:8088/elevatorapi
# influxDB # influxDB
spring.influx.url=http://139.9.173.44:8086 #spring.influx.url=http://139.9.173.44:8086
spring.influx.password=Yeejoin@2020 #spring.influx.password=Yeejoin@2020
spring.influx.user=root #spring.influx.user=root
spring.influx.database=station_platform #spring.influx.database=station_platform
spring.influx.retention_policy=default #spring.influx.retention_policy=default
spring.influx.retention_policy_time=30d #spring.influx.retention_policy_time=30d
spring.influx.actions=10000 #spring.influx.actions=10000
spring.influx.bufferLimit=20000 #spring.influx.bufferLimit=20000
# ?????????? # ??????????
......
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum ArrivalStateeEnum {
待收货("待收货", "待收货"),
已收货("已收货", "已收货"),
已作废("已作废", "已作废");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
...@@ -21,6 +21,8 @@ public enum CodeEnum { ...@@ -21,6 +21,8 @@ public enum CodeEnum {
勘察("KC", "KC"), 勘察("KC", "KC"),
货单("HD", "HD"),
档案("DA", "DA"); 档案("DA", "DA");
/** /**
......
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum DeliveryStateeEnum {
待发货("待发货", "待发货"),
已发货("已发货", "已发货"),
已作废("已作废", "已作废");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
package com.yeejoin.amos.boot.module.hygf.api.Enum;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @description:
* @author: tw
* @createDate: 2023/12/13
*/
@Getter
@AllArgsConstructor
public enum PreparationEnum {
创建发货单("创建发货单", "创建发货单"),
确认发货("确认发货", "确认发货"),
确认收货("确认收货", "确认收货"),
作废发货单("作废发货单", "作废发货单");
/**
* 名称,描述
*/
private String name;
/**
* 编码
*/
private String code;
public static ContractStatusEnum getNodeByCode(String code) {
ContractStatusEnum dealerReviewEnum = null;
for(ContractStatusEnum type: ContractStatusEnum.values()) {
if (type.getCode().equals(code)) {
dealerReviewEnum = type;
break;
}
}
return dealerReviewEnum;
}
}
...@@ -28,101 +28,98 @@ public class PreparationMoneyDto extends BaseDto { ...@@ -28,101 +28,98 @@ public class PreparationMoneyDto extends BaseDto {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
@ApiModelProperty(value = " 单号") * 发货单号
*/
private String oddNumbers; private String oddNumbers;
@ApiModelProperty(value = " 收货地址")
private String deliveryAddress;
@ApiModelProperty(value = "详细地址")
private String detailAddress;
@ApiModelProperty(value = " 下单人") /**
* 下单人
*/
private String orderUser; private String orderUser;
@ApiModelProperty(value = "下单时间") /**
@JsonFormat (pattern="yyyy-MM-dd") * 下单时间
*/
private Date orderTime; private Date orderTime;
@ApiModelProperty(value = "经销商id")
private String dealerId;
@ApiModelProperty(value = "经销商名称")
private String dealerName;
@ApiModelProperty(value = " 发货地址")
@TableField (typeHandler = FastjsonTypeHandler.class)
private List<String> sendAddress;
@ApiModelProperty(value = " 业主类型")
private String ownerType;
@ApiModelProperty(value = "业务员")
private String salesman;
@ApiModelProperty(value = "预估重量") /**
* 经销商单位名称
*/
private String amosUnitName;
/**
* 经销商单位id
*/
private Long amosUnitId;
/**
* 经销商orgcode
*/
private String amosUnitOrgCode;
/**
* 所属区域公司id
*/
private Long regionalCompaniesSeq;
/**
* 所属区域公司名称
*/
private String regionalCompaniesName;
/**
* 所属区域公司code
*/
private String regionalCompaniesCode;
/**
* 发货人
*/
private String shipper;
/**
* 预估重量
*/
private Double estimatedWeight; private Double estimatedWeight;
@ApiModelProperty(value = "备注") /**
* 备注
*/
private String notes; private String notes;
@ApiModelProperty(value = "收货人") /**
private String consignee; * 发货状态0待发货1已发货成2已作废
*/
@ApiModelProperty(value = "收货人手机号") private String deliveryState;
private String consigneePhone;
/**
@ApiModelProperty(value = "收货人地址") * 到货货状态0待发货1已发货成2已作废
@TableField (typeHandler = FastjsonTypeHandler.class) */
private List<String> consigneeAddress; private String arrivalState;
/**
@ApiModelProperty(value = "收货人详细地址") * 发货时间
private String consigneeDetailAddress; */
private Date deliveryTime;
@ApiModelProperty(value = "发货单") /**
@TableField(typeHandler = FastjsonTypeHandler.class) * 到货时间
private List<Object> invoice; */
private Date arrivalTime;
@ApiModelProperty(value = "收货单")
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<Object> receipt;
@ApiModelProperty(value = "订单状态0未完成1已完成2作废")
private String documentState;
@ApiModelProperty(value = "发货状态 0 未发货1已发货")
private String shipmentStatus;
@ApiModelProperty(value = "到货状态0未到货1已到货")
private String receivingStatus;
@ApiModelProperty(value = "清单价格")
private Double inventoryPrice;
@ApiModelProperty(value = "折扣")
private Double discount;
@ApiModelProperty(value = "促销")
private Double promotion;
@ApiModelProperty(value = "合同价格") private String consignee; //收货人
private Double contractPrice;
@ApiModelProperty(value = "总价") private String phone; //收货人电话
private Double totalPrice;
@ApiModelProperty(value = "到货时间") private String consigneeRegion; //收货区域
@JsonFormat (pattern="yyyy-MM-dd")
private Date deliveryTime;
@ApiModelProperty(value = "发货电站列表") private List<Integer> consigneeRegionCode; //收货区域code
@NotEmpty(message = "请选择发货电站")
private List<PeasantHouseholdDto> powerStations;
@ApiModelProperty(value = "BOM清单") private String address; //收货详细地址
private List<DocumentBomDto> documentBoms; //发货单
private List<Object> deliveryFile; //发货单
@ApiModelProperty(value = "单据追踪") private List<Object> arrivalFile; //收货单
private List<PreparationMoneyLogDto> preparationMoneyLogs;
} }
package com.yeejoin.amos.boot.module.hygf.api.dto; package com.yeejoin.amos.boot.module.hygf.api.dto;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.yeejoin.amos.boot.biz.common.dto.BaseDto; import com.yeejoin.amos.boot.biz.common.dto.BaseDto;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
...@@ -21,9 +22,14 @@ public class PreparationMoneyLogDto extends BaseDto { ...@@ -21,9 +22,14 @@ public class PreparationMoneyLogDto extends BaseDto {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "货单id") private Long preparationMoneyId;//发货单id
private Long preparationMoneyId;
@ApiModelProperty(value = "货单id")
private String operationContent; private String operationContent;//执行节点
private String executor;//执行人
private String executionTime;//执行时间
private String executionRole;//执行角色
} }
...@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney; import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import lombok.Data; import lombok.Data;
import java.util.Date;
import java.util.List;
/** /**
* @description: * @description:
* @author: tw * @author: tw
...@@ -13,17 +16,16 @@ import lombok.Data; ...@@ -13,17 +16,16 @@ import lombok.Data;
public class PreparationPageDto extends Page<PreparationMoney> { public class PreparationPageDto extends Page<PreparationMoney> {
String orderBy; String orderBy;
Boolean isASC; Boolean isASC;
//时间开始
String startDate;
//时间结束
String endDate;
String consigneeAddress;//订单区域
String dealerId;//经销商 String consigneeRegion;//订单区域
String amosUnitId;//经销商
String amosUnitName;//经销商
String oddNumbers;//发货单号 String oddNumbers;//发货单号
String salesman;//业主类型 String regionalCompaniesCode;
String documentState;//订单状态未完成已完成作废
String shipmentStatus;//发货状态 未发货已发货 String arrivalState;//收货
String receivingStatus;//到货状态未到货已到货 String deliveryState;//发货状态 未发货已发货
Boolean isdocumentStatezf; List<String> deliveryTime;
} }
...@@ -26,22 +26,12 @@ public class PreparationMoney extends BaseEntity { ...@@ -26,22 +26,12 @@ public class PreparationMoney extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** /**
* 单号 * 发货单号
*/ */
@TableField("odd_numbers") @TableField("odd_numbers")
private String oddNumbers; private String oddNumbers;
/**
* 收货地址
*/
@TableField("delivery_address")
private String deliveryAddress;
/**
* 详细地址
*/
@TableField("detail_address")
private String detailAddress;
/** /**
* 下单人 * 下单人
...@@ -55,143 +45,108 @@ public class PreparationMoney extends BaseEntity { ...@@ -55,143 +45,108 @@ public class PreparationMoney extends BaseEntity {
@TableField("order_time") @TableField("order_time")
private Date orderTime; private Date orderTime;
/** /**
* 经销商id * 经销商单位名称
*/ */
@TableField("dealer_id") @TableField("amos_unit_name")
private String dealerId; private String amosUnitName;
/**
* 经销商单位id
*/
@TableField("amos_unit_id")
private Long amosUnitId;
/**
* 经销商orgcode
*/
@TableField("amos_unit_org_code")
private String amosUnitOrgCode;
/** /**
* 经销商名称 * 所属区域公司id
*/ */
@TableField("dealer_name") @TableField("regional_companies_seq")
private String dealerName; private Long regionalCompaniesSeq;
/** /**
* 发货地址 * 所属区域公司名称
*/ */
@TableField(value = "send_address",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED) @TableField("regional_companies_name")
private List<Object> sendAddress; private String regionalCompaniesName;
/** /**
* 业主类型 * 所属区域公司code
*/ */
@TableField("owner_type") @TableField("regional_companies_code")
private String ownerType; private String regionalCompaniesCode;
/** /**
* 业务员 * 发货人
*/ */
@TableField("salesman") @TableField("shipper")
private String salesman; private String shipper;
/** /**
* 预估重量 * 预估重量
*/ */
@TableField("estimated_weight") @TableField("estimated_weight")
private Double estimatedWeight; private Double estimatedWeight;
/** /**
* 备注 * 备注
*/ */
@TableField("notes") @TableField("notes")
private String notes; private String notes;
/** /**
* 收货人 * 发货状态0待发货1已发货成2已作废
*/ */
@TableField("consignee") @TableField("delivery_state")
private String consignee; private String deliveryState;
/** /**
* 收货人手机号 * 到货货状态 待收货1已收货成2已作废
*/ */
@TableField("consignee_phone") @TableField("arrival_state")
private String consigneePhone; private String arrivalState;
/** /**
* 收货人地址 * 发货时间
*/ */
@TableField(value = "consignee_address",typeHandler = FastjsonTypeHandler.class) @TableField("delivery_time")
private List<Object> consigneeAddress; private Date deliveryTime;
/**
* 收货人详细地址
*/
@TableField("consignee_detail_address")
private String consigneeDetailAddress;
/** /**
* 发货单 * 到货时间
*/ */
@TableField("arrival_time")
private Date arrivalTime;
@TableField(value = "invoice",typeHandler = FastjsonTypeHandler.class) @TableField("consignee")
private List<Object> invoice; private String consignee; //收货人
/** @TableField("phone")
* 收货单 private String phone; //收货人电话
*/
@TableField(value = "receipt",typeHandler = FastjsonTypeHandler.class,updateStrategy = FieldStrategy.IGNORED)
private List<Object> receipt;
/** @TableField("consignee_region")
* 订单状态0未完成1已完成2已作废 private String consigneeRegion; //收货区域
*/
@TableField("document_state")
private String documentState;
/** @TableField(value = "consignee_region_code",typeHandler = FastjsonTypeHandler.class)
* 发货状态 0 未发货1已发货 private List<Integer> consigneeRegionCode; //收货区域code
*/
@TableField("shipment_status")
private String shipmentStatus;
/** @TableField("address")
* 到货状态0未到货1已到货 private String address; //收货详细地址
*/
@TableField("receiving_status")
private String receivingStatus;
/** @TableField(value = "delivery_file", typeHandler = FastjsonTypeHandler.class)
* 清单价格 private List<Object> deliveryFile; //发货单
*/
@TableField("inventory_price")
private Double inventoryPrice;
/** @TableField(value = "arrival_file", typeHandler = FastjsonTypeHandler.class)
* 折扣 private List<Object> arrivalFile; //收货单
*/
@TableField("discount")
private Double discount;
/** @TableField(value = "peasant_household_id", typeHandler = FastjsonTypeHandler.class)
* 促销 private List<Long> peasantHouseholdId; //发货单
*/
@TableField("promotion")
private Double promotion;
/**
* 合同价格
*/
@TableField("contract_price")
private Double contractPrice;
/**
* 总价
*/
@TableField("total_price")
private Double totalPrice;
/**
*
* 验证 状态
* */
@TableField("validating")
private String validating;
/**
* 到货时间
*/
@TableField("delivery_time")
private Date deliveryTime;
} }
...@@ -7,6 +7,8 @@ import lombok.Data; ...@@ -7,6 +7,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors; import lombok.experimental.Accessors;
import java.util.Date;
/** /**
* 发货单日志记录 * 发货单日志记录
* *
...@@ -22,8 +24,20 @@ public class PreparationMoneyLog extends BaseEntity { ...@@ -22,8 +24,20 @@ public class PreparationMoneyLog extends BaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@TableField ("preparation_money_id") @TableField ("preparation_money_id")
private Long preparationMoneyId; private Long preparationMoneyId;//发货单id
@TableField ("operation_content") @TableField ("operation_content")
private String operationContent; private String operationContent;//执行节点
@TableField ("executor")
private String executor;//执行人
@TableField ("execution_time")
private Date executionTime;//执行时间
@TableField ("execution_role")
private String executionRole;//执行角色
} }
...@@ -72,8 +72,8 @@ public class RegionalCompanies extends BaseEntity { ...@@ -72,8 +72,8 @@ public class RegionalCompanies extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
private String companyCode; private String companyCode;
@TableField(exist = false)
private List<Object> children;
......
...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper; ...@@ -2,6 +2,9 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold; import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 农户信息 Mapper 接口 * 农户信息 Mapper 接口
...@@ -10,5 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; ...@@ -10,5 +13,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @date 2023-07-07 * @date 2023-07-07
*/ */
public interface PeasantHouseholdMapper extends BaseMapper<PeasantHousehold> { public interface PeasantHouseholdMapper extends BaseMapper<PeasantHousehold> {
List<PeasantHousehold> selectPeasantHouseholdList(@Param("developerId") Long developerId,
@Param("regionalCompaniesSeq")Long regionalCompaniesSeq
);
} }
...@@ -2,7 +2,11 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper; ...@@ -2,7 +2,11 @@ package com.yeejoin.amos.boot.module.hygf.api.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney; import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 发货单 Mapper 接口 * 发货单 Mapper 接口
...@@ -12,4 +16,7 @@ import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney; ...@@ -12,4 +16,7 @@ import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
*/ */
public interface PreparationMoneyMapper extends BaseMapper<PreparationMoney> { public interface PreparationMoneyMapper extends BaseMapper<PreparationMoney> {
List<PeasantHousehold> getPeasantHouseholdData(@Param("sequenceNbr") Long sequenceNbr,@Param("ownersName") String ownersName);
} }
...@@ -2,6 +2,8 @@ package com.yeejoin.amos.boot.module.hygf.api.service; ...@@ -2,6 +2,8 @@ package com.yeejoin.amos.boot.module.hygf.api.service;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationMoneyDto; import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationMoneyDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
/** /**
* 发货单接口类 * 发货单接口类
...@@ -20,7 +22,7 @@ public interface IPreparationMoneyService { ...@@ -20,7 +22,7 @@ public interface IPreparationMoneyService {
* @author Provence * @author Provence
* @throws * @throws
*/ */
PreparationMoneyDto saveOrUpdateObject(PreparationMoneyDto model); PreparationMoney saveOrUpdateObject(PreparationMoney model, AgencyUserModel agencyUserModel);
/** /**
* 更新发货单状态 * 更新发货单状态
......
...@@ -53,11 +53,11 @@ public class NumberUtil { ...@@ -53,11 +53,11 @@ public class NumberUtil {
code= code+ address.replace("省","") code= code+ getChineseStr(address.replace("省","")
.replace("市","") .replace("市","")
.replace("区","") .replace("区","")
.replace("县","") .replace("县","")
.replace(",",""); .replace(",",""));
code= type+code+dateFormat()+getnum(); code= type+code+dateFormat()+getnum();
return code; return code;
......
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.PeasantHouseholdMapper"> <mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.PeasantHouseholdMapper">
<select id="selectPeasantHouseholdList" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold">
SELECT * FROM hygf_peasant_household LEFT JOIN hygf_household_contract ON hygf_household_contract.peasant_household_id=hygf_peasant_household.sequence_nbr where
hygf_household_contract.`status`='双方已签署'
and hygf_peasant_household.developer_id=#{developerId}
and hygf_peasant_household.regional_companies_seq=#{regionalCompaniesSeq}
and hygf_peasant_household.review=2
</select>
</mapper> </mapper>
<?xml version="1.0" encoding="UTF-8"?> <?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"> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper"> <mapper namespace="com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper">
<select id="getPeasantHouseholdData" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.PeasantHousehold">
SELECT hygf_peasant_household.* FROM hygf_peasant_household
LEFT JOIN hygf_document_station on hygf_document_station.station_id=hygf_peasant_household.sequence_nbr
where hygf_document_station.preparation_money_id=#{sequenceNbr}
<if test="ownersName!=null and ownersName!=''">
and hygf_peasant_household.owners_name like concat(concat("%",#{ownersName}),"%")
</if>
</select>
</mapper> </mapper>
...@@ -67,6 +67,8 @@ ...@@ -67,6 +67,8 @@
<select id="selectRegionName" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.RegionalCompanies"> <select id="selectRegionName" resultType="com.yeejoin.amos.boot.module.hygf.api.entity.RegionalCompanies">
select select
privilege_company.COMPANY_CODE companyCode, privilege_company.COMPANY_CODE companyCode,
privilege_company.COMPANY_NAME regionalCompaniesName,
privilege_company.ORG_CODE regionalCompaniesCode,
(SELECT GROUP_CONCAT(REGION_NAME) from (SELECT GROUP_CONCAT(REGION_NAME) from
(SELECT T2.REGION_NAME (SELECT T2.REGION_NAME
FROM ( FROM (
......
package com.yeejoin.amos.boot.module.hygf.biz.controller; package com.yeejoin.amos.boot.module.hygf.biz.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.module.hygf.api.Enum.DeliveryStateeEnum;
import com.yeejoin.amos.boot.module.hygf.api.Enum.PreparationEnum;
import com.yeejoin.amos.boot.module.hygf.api.dto.JpStationDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto; import com.yeejoin.amos.boot.module.hygf.api.dto.PeasantHouseholdDto;
import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationPageDto; import com.yeejoin.amos.boot.module.hygf.api.dto.PreparationPageDto;
import com.yeejoin.amos.boot.module.hygf.api.entity.PreparationMoney; import com.yeejoin.amos.boot.module.hygf.api.entity.*;
import com.yeejoin.amos.boot.module.hygf.api.mapper.PreparationMoneyMapper;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.DesignInformationServiceImpl;
import com.yeejoin.amos.feign.privilege.model.AgencyUserModel;
import org.apache.ibatis.annotations.Param;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
...@@ -11,8 +22,7 @@ import io.swagger.annotations.Api; ...@@ -11,8 +22,7 @@ import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController; import com.yeejoin.amos.boot.biz.common.controller.BaseController;
import java.util.Date; import java.util.*;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.PreparationMoneyServiceImpl; import com.yeejoin.amos.boot.module.hygf.biz.service.impl.PreparationMoneyServiceImpl;
...@@ -40,7 +50,10 @@ public class PreparationMoneyController extends BaseController { ...@@ -40,7 +50,10 @@ public class PreparationMoneyController extends BaseController {
@Autowired @Autowired
PreparationMoneyServiceImpl preparationMoneyServiceImpl; PreparationMoneyServiceImpl preparationMoneyServiceImpl;
@Autowired
PreparationMoneyMapper preparationMoneyMapper;
@Autowired
DesignInformationServiceImpl designInformationService;
/** /**
* 新增发货单 * 新增发货单
* *
...@@ -49,8 +62,9 @@ public class PreparationMoneyController extends BaseController { ...@@ -49,8 +62,9 @@ public class PreparationMoneyController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@PostMapping(value = "/save") @PostMapping(value = "/save")
@ApiOperation(httpMethod = "POST", value = "新增发货单", notes = "新增发货单") @ApiOperation(httpMethod = "POST", value = "新增发货单", notes = "新增发货单")
public ResponseModel<PreparationMoneyDto> save(@Validated @RequestBody PreparationMoneyDto model) { public ResponseModel<PreparationMoney> save( @RequestBody PreparationMoney model) {
model = preparationMoneyServiceImpl.saveOrUpdateObject(model); AgencyUserModel agencyUserModel= getUserInfo();
model = preparationMoneyServiceImpl.saveOrUpdateObject(model,agencyUserModel);
return ResponseHelper.buildResponse(model); return ResponseHelper.buildResponse(model);
} }
...@@ -64,9 +78,10 @@ public class PreparationMoneyController extends BaseController { ...@@ -64,9 +78,10 @@ public class PreparationMoneyController extends BaseController {
@PutMapping(value = "/{sequenceNbr}") @PutMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新发货单", notes = "根据sequenceNbr更新发货单") @ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新发货单", notes = "根据sequenceNbr更新发货单")
public ResponseModel<PreparationMoneyDto> updateBySequenceNbrPreparationMoney(@RequestBody PreparationMoneyDto model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) { public ResponseModel<PreparationMoneyDto> updateBySequenceNbrPreparationMoney(@RequestBody PreparationMoneyDto model,@PathVariable(value = "sequenceNbr") Long sequenceNbr) {
model.setSequenceNbr(sequenceNbr); // model.setSequenceNbr(sequenceNbr);
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.saveOrUpdateObject(model)); // return ResponseHelper.buildResponse(preparationMoneyServiceImpl.saveOrUpdateObject(model));
} return null;
}
/** /**
* 根据sequenceNbr删除 * 根据sequenceNbr删除
...@@ -90,8 +105,11 @@ public class PreparationMoneyController extends BaseController { ...@@ -90,8 +105,11 @@ public class PreparationMoneyController extends BaseController {
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/{sequenceNbr}") @GetMapping(value = "/{sequenceNbr}")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个发货单", notes = "根据sequenceNbr查询单个发货单") @ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个发货单", notes = "根据sequenceNbr查询单个发货单")
public ResponseModel<PreparationMoneyDto> selectOne(@PathVariable Long sequenceNbr) { public ResponseModel<PreparationMoney> selectOne(@PathVariable Long sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.queryBySeq(sequenceNbr)); LambdaUpdateWrapper<PreparationMoney> qu=new LambdaUpdateWrapper<>();
qu.eq(PreparationMoney::getSequenceNbr,sequenceNbr);
PreparationMoney preparationMoney= preparationMoneyMapper.selectOne(qu);
return ResponseHelper.buildResponse(preparationMoney);
} }
/** /**
...@@ -102,18 +120,30 @@ public class PreparationMoneyController extends BaseController { ...@@ -102,18 +120,30 @@ public class PreparationMoneyController extends BaseController {
* @return * @return
*/ */
@TycloudOperation(ApiLevel = UserType.AGENCY) @TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/page") @PostMapping (value = "/page")
@ApiOperation(httpMethod = "GET",value = "发货单分页查询", notes = "发货单分页查询") @ApiOperation(httpMethod = "post",value = "发货单分页查询", notes = "发货单分页查询")
public ResponseModel<IPage<PreparationMoney>> queryForPage(PreparationPageDto preparationPageDto public ResponseModel<IPage<PreparationMoney>> queryForPage(@RequestBody PreparationPageDto preparationPageDto
) { ) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.queryForPreparationMoneyPage(preparationPageDto)); return ResponseHelper.buildResponse(preparationMoneyServiceImpl.queryForPreparationMoneyPage(preparationPageDto));
} }
/** /**
* 作废
* */
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/zfPreparationMoney")
@ApiOperation(httpMethod = "GET",value = "作废发货单", notes = "作废发货单")
public ResponseModel<Boolean> zfPreparationMoney(Long sequenceNbr
) {
AgencyUserModel agencyUserModel= getUserInfo();
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.zfPreparationMoney(sequenceNbr,agencyUserModel));
}
/**
* 列表全部数据查询 * 列表全部数据查询
* *
* @return * @return
...@@ -149,7 +179,8 @@ public class PreparationMoneyController extends BaseController { ...@@ -149,7 +179,8 @@ public class PreparationMoneyController extends BaseController {
@GetMapping(value = "/detail") @GetMapping(value = "/detail")
@ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个发货单详情", notes = "根据sequenceNbr查询单个发货单详情") @ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个发货单详情", notes = "根据sequenceNbr查询单个发货单详情")
public ResponseModel<PreparationMoneyDto> getObject(@RequestParam Long sequenceNbr) { public ResponseModel<PreparationMoneyDto> getObject(@RequestParam Long sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.getObjectBySequenceNbr(sequenceNbr)); //return ResponseHelper.buildResponse(preparationMoneyServiceImpl.getObjectBySequenceNbr(sequenceNbr));
return null;
} }
...@@ -166,5 +197,38 @@ public class PreparationMoneyController extends BaseController { ...@@ -166,5 +197,38 @@ public class PreparationMoneyController extends BaseController {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.updatePreparationMoneyStatus(sequenceNbr, operationType)); return ResponseHelper.buildResponse(preparationMoneyServiceImpl.updatePreparationMoneyStatus(sequenceNbr, operationType));
} }
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getPeasantHouseholdData")
public ResponseModel< Page<PeasantHousehold> > getPeasantHouseholdData(
@RequestParam(required=false) Long sequenceNbr,
@RequestParam(required=false) String ownersName
) {
List<PeasantHousehold> list=preparationMoneyMapper.getPeasantHouseholdData(sequenceNbr,ownersName);
Page<PeasantHousehold> pagenew = new Page<PeasantHousehold>();
pagenew.setRecords(list);
return ResponseHelper.buildResponse(pagenew);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "bom", notes = "bom")
@GetMapping(value = "/getDesignInformationData")
public ResponseModel< DesignInformation > getDesignInformationData(
@RequestParam(required=false) Long sequenceNbr
) {
QueryWrapper<DesignInformation> designInformationQueryWrapper = new QueryWrapper<>();
designInformationQueryWrapper.eq("peasant_household_id", sequenceNbr);
DesignInformation designInformation = designInformationService.getBaseMapper().selectOne(designInformationQueryWrapper);
return ResponseHelper.buildResponse(designInformation);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@GetMapping(value = "/selectOnePreparationMoney")
@ApiOperation(httpMethod = "GET",value = "根据sequenceNbr查询单个发货单", notes = "根据sequenceNbr查询单个发货单")
public ResponseModel<Map<String,Object>> selectOnePreparationMoney( String sequenceNbr) {
return ResponseHelper.buildResponse(preparationMoneyServiceImpl.selectOnePreparationMoney(sequenceNbr));
}
} }
...@@ -4,15 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField; ...@@ -4,15 +4,13 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo; import com.github.pagehelper.PageInfo;
import com.yeejoin.amos.boot.biz.common.utils.RedisUtils; import com.yeejoin.amos.boot.biz.common.utils.RedisUtils;
import com.yeejoin.amos.boot.module.hygf.api.dto.*; import com.yeejoin.amos.boot.module.hygf.api.dto.*;
import com.yeejoin.amos.boot.module.hygf.api.entity.*; import com.yeejoin.amos.boot.module.hygf.api.entity.*;
import com.yeejoin.amos.boot.module.hygf.api.hwsms.SendSmsCode; import com.yeejoin.amos.boot.module.hygf.api.hwsms.SendSmsCode;
import com.yeejoin.amos.boot.module.hygf.api.mapper.CommerceInfoMapper; import com.yeejoin.amos.boot.module.hygf.api.mapper.*;
import com.yeejoin.amos.boot.module.hygf.api.mapper.PersonnelBusinessMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.RegionalCompaniesMapper;
import com.yeejoin.amos.boot.module.hygf.api.mapper.UnitInfoMapper;
import com.yeejoin.amos.boot.module.hygf.api.util.CommonResponseNewUtil; import com.yeejoin.amos.boot.module.hygf.api.util.CommonResponseNewUtil;
import com.yeejoin.amos.boot.module.hygf.biz.service.impl.DealerReviewServiceImpl; import com.yeejoin.amos.boot.module.hygf.biz.service.impl.DealerReviewServiceImpl;
import com.yeejoin.amos.boot.module.standard.api.entity.PublicAgencyUser; import com.yeejoin.amos.boot.module.standard.api.entity.PublicAgencyUser;
...@@ -103,6 +101,8 @@ public class UnitInfoController extends BaseController { ...@@ -103,6 +101,8 @@ public class UnitInfoController extends BaseController {
PublicAgencyUserMapper publicAgencyUserMapper; PublicAgencyUserMapper publicAgencyUserMapper;
@Autowired @Autowired
PersonnelBusinessMapper personnelBusinessMapper; PersonnelBusinessMapper personnelBusinessMapper;
@Autowired
PeasantHouseholdMapper peasantHouseholdMapper;
/** /**
* 验证码过期时间 * 验证码过期时间
...@@ -282,12 +282,6 @@ public class UnitInfoController extends BaseController { ...@@ -282,12 +282,6 @@ public class UnitInfoController extends BaseController {
} }
//判断公司统一信息用代码重复 //判断公司统一信息用代码重复
// LambdaQueryWrapper<CommerceInfo> queryWrapper1 = new LambdaQueryWrapper<CommerceInfo>();
// queryWrapper1.eq(CommerceInfo::getCreditCode, model.getCommerceInfoDto().getCreditCode());
// queryWrapper1.eq(CommerceInfo::getIsDelete,0);
// List<CommerceInfo> commerceInfo= commerceInfoMapper.selectList(queryWrapper1);
List<CommerceInfo> commerceInfo= commerceInfoMapper.selectListby( model.getCommerceInfoDto().getCreditCode()); List<CommerceInfo> commerceInfo= commerceInfoMapper.selectListby( model.getCommerceInfoDto().getCreditCode());
if(commerceInfo!=null&&!commerceInfo.isEmpty()){ if(commerceInfo!=null&&!commerceInfo.isEmpty()){
...@@ -675,11 +669,94 @@ public class UnitInfoController extends BaseController { ...@@ -675,11 +669,94 @@ public class UnitInfoController extends BaseController {
} }
//根据登陆人角色获取电站列表
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "获取审核通过的经销商", notes = "获取审核通过的经销商")
@GetMapping(value = "/getlistUnitInfo")
public ResponseModel<List<UnitInfo>> getlistUnitInfo() {
LambdaQueryWrapper<UnitInfo> qu=new LambdaQueryWrapper();
qu.eq(UnitInfo::getIsDelete,false);
qu.eq(UnitInfo::getAuditStatus,2);
List<UnitInfo> list=unitInfoMapper.selectList(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanie")
public ResponseModel< List<RegionalCompanies> > getRegionalCompanie(
@RequestParam(required=false) Long sequenceNbr
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getUnitInfoId,sequenceNbr);
qu.eq(RegionalCompanies::getIsDelete,false);
List<RegionalCompanies> list=regionalCompaniesMapper.selectList(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanieById")
public ResponseModel< RegionalCompanies > getRegionalCompanieById(
@RequestParam(required=false) Long regionalCompaniesSeq,
@RequestParam(required=false) Long unitInfoId
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getRegionalCompaniesSeq,regionalCompaniesSeq);
qu.eq(RegionalCompanies::getUnitInfoId,unitInfoId);
qu.eq(RegionalCompanies::getIsDelete,false);
RegionalCompanies list=regionalCompaniesMapper.selectOne(qu);
return ResponseHelper.buildResponse(list);
}
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getRegionalCompanieUnitInfo")
public ResponseModel< List<RegionalCompanies> > getRegionalCompanieUnitInfo(
@RequestParam(required=false) Long unitInfoId,
@RequestParam(required=false) Long regionalCompaniesSeq
) {
LambdaQueryWrapper<RegionalCompanies> qu=new LambdaQueryWrapper();
qu.eq(RegionalCompanies::getRegionalCompaniesSeq,regionalCompaniesSeq);
qu.eq(RegionalCompanies::getUnitInfoId,unitInfoId);
RegionalCompanies list=regionalCompaniesMapper.selectOne(qu);
UnitInfo unitInfo=unitInfoMapper.selectById(unitInfoId);
List<RegionalCompanies> date=null;
if(list!=null&&unitInfo!=null){
list.setRegionalCompaniesName(unitInfo.getName()+"-"+list.getRegionalCompaniesName());
date=new ArrayList();
date.add(list);
}
return ResponseHelper.buildResponse(date);
}
//获取电站列表
@TycloudOperation(ApiLevel = UserType.AGENCY)
@ApiOperation(httpMethod = "GET",value = "列表全部数据查询", notes = "列表全部数据查询")
@GetMapping(value = "/getUnitInfoListData")
public ResponseModel< List<Map<String,Object>> > getUnitInfoListData(
@RequestParam(required=false) Long unitInfoId,
@RequestParam(required=false) Long regionalCompaniesSeq
) {
UnitInfo unitInfo=unitInfoMapper.selectById(unitInfoId);
List<PeasantHousehold> list=peasantHouseholdMapper.selectPeasantHouseholdList(unitInfo.getAmosCompanySeq(),regionalCompaniesSeq);
List<Map<String,Object>> date=new ArrayList<>();
if(list!=null){
for (PeasantHousehold peasantHousehold : list) {
Map<String,Object> map=new HashMap<>();
map.put("children",new ArrayList<>());
map.put("title",peasantHousehold.getPeasantHouseholdNo()+"-"+peasantHousehold.getOwnersName());
map.put("value",peasantHousehold.getSequenceNbr());
map.put("key",peasantHousehold.getSequenceNbr());
date.add(map);
}
}
return ResponseHelper.buildResponse(date);
}
} }
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