创建会员优惠计费模板

This commit is contained in:
2024-01-31 15:34:08 +08:00
parent cab92a2aed
commit 4c0956c76d
5 changed files with 162 additions and 77 deletions

View File

@@ -83,75 +83,80 @@ public class PileBillingTemplate extends BaseEntity {
*/
private String publicFlag;
/**
* 是否会员模板标识0-否1-是)
*/
private String memberFlag;
/**
* 发布时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date publishTime;
public String getPublicFlag() {
return publicFlag;
}
public void setPublicFlag(String publicFlag) {
this.publicFlag = publicFlag;
}
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setTemplateCode(String templateCode) {
this.templateCode = templateCode;
}
public String getTemplateCode() {
return templateCode;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setStationId(Long stationId) {
this.stationId = stationId;
}
public Long getStationId() {
return stationId;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getDelFlag() {
return delFlag;
}
public List<PileBillingDetail> getPileBillingDetailList() {
return pileBillingDetailList;
}
public void setPileBillingDetailList(List<PileBillingDetail> pileBillingDetailList) {
this.pileBillingDetailList = pileBillingDetailList;
}
// public String getPublicFlag() {
// return publicFlag;
// }
//
// public void setPublicFlag(String publicFlag) {
// this.publicFlag = publicFlag;
// }
//
// public void setId(Long id) {
// this.id = id;
// }
//
// public Long getId() {
// return id;
// }
//
// public void setTemplateCode(String templateCode) {
// this.templateCode = templateCode;
// }
//
// public String getTemplateCode() {
// return templateCode;
// }
//
// public void setName(String name) {
// this.name = name;
// }
//
// public String getName() {
// return name;
// }
//
// public void setType(String type) {
// this.type = type;
// }
//
// public String getType() {
// return type;
// }
//
// public void setStationId(Long stationId) {
// this.stationId = stationId;
// }
//
// public Long getStationId() {
// return stationId;
// }
//
// public void setDelFlag(String delFlag) {
// this.delFlag = delFlag;
// }
//
// public String getDelFlag() {
// return delFlag;
// }
//
// public List<PileBillingDetail> getPileBillingDetailList() {
// return pileBillingDetailList;
// }
//
// public void setPileBillingDetailList(List<PileBillingDetail> pileBillingDetailList) {
// this.pileBillingDetailList = pileBillingDetailList;
// }
@Override
public String toString() {

View File

@@ -173,4 +173,11 @@ public interface PileBillingTemplateService {
* @return
*/
int changeStationTemplate(String stationId, String templateId);
/**
* 创建优惠计费模板
* @param dto
* @return
*/
int createPreferentialBillingTemplate(CreateOrUpdateBillingTemplateDTO dto);
}

View File

@@ -15,12 +15,13 @@ import com.jsowell.common.util.id.Seq;
import com.jsowell.pile.domain.PileBillingDetail;
import com.jsowell.pile.domain.PileBillingRelation;
import com.jsowell.pile.domain.PileBillingTemplate;
import com.jsowell.pile.domain.PileStationInfo;
import com.jsowell.pile.dto.BillingTimeDTO;
import com.jsowell.pile.dto.CreateOrUpdateBillingTemplateDTO;
import com.jsowell.pile.dto.ImportBillingTemplateDTO;
import com.jsowell.pile.mapper.PileBillingTemplateMapper;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileBillingTemplateService;
import com.jsowell.pile.service.PileStationInfoService;
import com.jsowell.pile.transaction.dto.BillingTemplateTransactionDTO;
import com.jsowell.pile.transaction.service.TransactionService;
import com.jsowell.pile.util.UserUtils;
@@ -59,7 +60,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
private TransactionService transactionService;
@Autowired
private PileBasicInfoService pileBasicInfoService;
private PileStationInfoService pileStationInfoService;
@Autowired
private RedisCache redisCache;
@@ -224,6 +225,8 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
log.info("根据计费模板id{}查询为null。无法修改直接返回", dto.getBillingTemplateId());
return;
}
// 查询站点信息
billingTemplate.setName(dto.getName());
billingTemplate.setType(String.valueOf(dto.getType()));
billingTemplate.setRemark(dto.getRemark());
@@ -232,6 +235,33 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
billingTemplate.setOccupyFee(dto.getOccupyFee());
billingTemplate.setMaxOccupyFee(dto.getMaxOccupyFee());
// 修改私有模板的名称 如果类型是私有,并且名称是公用,就更新为: 站点名称 + ”的计费模板“
if (StringUtils.equals(billingTemplate.getPublicFlag(), Constants.ZERO)
&& StringUtils.equals(billingTemplate.getName(), "公用")) {
// 查询站点信息
PileStationInfo stationInfo = pileStationInfoService.selectPileStationInfoById(billingTemplate.getStationId());
if (stationInfo != null) {
billingTemplate.setName(stationInfo.getStationName() + "的会员计费模板");
}
}
// 生成计费详情list
List<PileBillingDetail> pileBillingDetails = generateBillingDetailList(billingTemplate.getTemplateCode(), dto);
BillingTemplateTransactionDTO build = BillingTemplateTransactionDTO.builder()
.billingTemplate(billingTemplate)
.detailList(pileBillingDetails)
.build();
// 入库
transactionService.doUpdateBillingTemplate(build);
cleanCache(dto.getStationId() , Long.valueOf(dto.getBillingTemplateId()));
}
/**
* 通过前端入参返回计费详情list
*/
private List<PileBillingDetail> generateBillingDetailList(String templateCode, CreateOrUpdateBillingTemplateDTO dto) {
// key为时间类型value为时间描述
Map<String, List<BillingTimeDTO>> map = dto.getTimeArray().stream()
.collect(Collectors.groupingBy(BillingTimeDTO::getType));
@@ -241,7 +271,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
PileBillingDetail detail = null;
for (BillingTimeEnum billingTimeEnum : BillingTimeEnum.values()) {
detail = new PileBillingDetail();
detail.setTemplateCode(billingTemplate.getTemplateCode());
detail.setTemplateCode(templateCode);
String type = billingTimeEnum.getValue(); // 时段类型
detail.setTimeType(type);
Map<String, BigDecimal> priceMap = getPriceMap(dto, type);
@@ -258,15 +288,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
detail.setCreateBy(SecurityUtils.getUsername());
detailList.add(detail);
}
BillingTemplateTransactionDTO build = BillingTemplateTransactionDTO.builder()
.billingTemplate(billingTemplate)
.detailList(detailList)
.build();
// 入库
transactionService.doUpdateBillingTemplate(build);
cleanCache(dto.getStationId() , Long.valueOf(dto.getBillingTemplateId()));
return detailList;
}
@Override
@@ -408,6 +430,41 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
return 0;
}
@Override
public int createPreferentialBillingTemplate(CreateOrUpdateBillingTemplateDTO dto) {
if (dto == null) {
return 0;
}
Long stationId = Long.parseLong(dto.getStationId());
PileBillingTemplate stationBillingTemplate = new PileBillingTemplate();
stationBillingTemplate.setStationId(stationId);
// 生成计费模板编号
String templateCode = Seq.getId();
stationBillingTemplate.setTemplateCode(templateCode);
stationBillingTemplate.setStatus(Constants.ONE); // 默认启用
stationBillingTemplate.setType(Constants.ONE); // 默认电动汽车
stationBillingTemplate.setPublicFlag(Constants.ZERO); // 默认私有
stationBillingTemplate.setMemberFlag(Constants.ONE); // 会员优惠计费模板
stationBillingTemplate.setStationId(stationId); // 站点id
stationBillingTemplate.setCreateBy(SecurityUtils.getUsername());
stationBillingTemplate.setCreateTime(DateUtils.getNowDate());
stationBillingTemplate.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 查询站点信息
PileStationInfo stationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
if (stationInfo != null) {
stationBillingTemplate.setName(stationInfo.getStationName() + "的会员计费模板");
}
// 计费模板收费详情
List<PileBillingDetail> stationBillingDetailList = generateBillingDetailList(templateCode, dto);
// 入库
BillingTemplateTransactionDTO billingTemplateTransactionDTO = new BillingTemplateTransactionDTO();
billingTemplateTransactionDTO.setBillingTemplate(stationBillingTemplate);
billingTemplateTransactionDTO.setDetailList(stationBillingDetailList);
transactionService.doCreateBillingTemplate(billingTemplateTransactionDTO);
return 1;
}
@Override
public List<BillingTemplateVO> selectBillingTemplateByStationIdList(List<String> stationIdList) {
if (CollectionUtils.isEmpty(stationIdList)) {
@@ -623,11 +680,17 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
String templateCode = Seq.getId(); // 生成计费模板编号
BeanUtils.copyProperties(pileBillingTemplate, stationBillingTemplate, "id", "createBy", "createTime", "updateBy", "updateTime");
stationBillingTemplate.setStationId(Long.valueOf(dto.getStationId())); // 站点id
Long stationId = Long.valueOf(dto.getStationId());
stationBillingTemplate.setStationId(stationId); // 站点id
stationBillingTemplate.setPublicFlag(Constants.ZERO); // 站点私有计费模板
stationBillingTemplate.setTemplateCode(templateCode);
stationBillingTemplate.setCreateBy(SecurityUtils.getUsername());
stationBillingTemplate.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 查询站点信息
PileStationInfo stationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
if (stationInfo != null) {
stationBillingTemplate.setName(stationInfo.getStationName() + "的计费模板");
}
// 复制计费模板详情
List<PileBillingDetail> stationBillingDetailList = Lists.newArrayList();
PileBillingDetail pileBillingDetail;