创建会员优惠计费模板

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

@@ -82,7 +82,7 @@ public class MemberGroupController extends BaseController {
} }
/** /**
* * 会员组添加站点
*/ */
/** /**

View File

@@ -91,6 +91,16 @@ public class PileBillingTemplateController extends BaseController {
return toAjax(pileBillingTemplateService.updatePileBillingTemplate(pileBillingTemplate)); return toAjax(pileBillingTemplateService.updatePileBillingTemplate(pileBillingTemplate));
} }
/**
* 创建优惠计费模板接口
* http://localhost:8080/billing/template/createPreferentialBillingTemplate
*/
@PreAuthorize("@ss.hasPermi('billing:template:edit')")
@PostMapping("/createPreferentialBillingTemplate")
public AjaxResult createPreferentialBillingTemplate(@RequestBody CreateOrUpdateBillingTemplateDTO pileBillingTemplate) {
return toAjax(pileBillingTemplateService.createPreferentialBillingTemplate(pileBillingTemplate));
}
/** /**
* 删除计费模板 * 删除计费模板
*/ */

View File

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

View File

@@ -173,4 +173,11 @@ public interface PileBillingTemplateService {
* @return * @return
*/ */
int changeStationTemplate(String stationId, String templateId); 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.PileBillingDetail;
import com.jsowell.pile.domain.PileBillingRelation; import com.jsowell.pile.domain.PileBillingRelation;
import com.jsowell.pile.domain.PileBillingTemplate; import com.jsowell.pile.domain.PileBillingTemplate;
import com.jsowell.pile.domain.PileStationInfo;
import com.jsowell.pile.dto.BillingTimeDTO; import com.jsowell.pile.dto.BillingTimeDTO;
import com.jsowell.pile.dto.CreateOrUpdateBillingTemplateDTO; import com.jsowell.pile.dto.CreateOrUpdateBillingTemplateDTO;
import com.jsowell.pile.dto.ImportBillingTemplateDTO; import com.jsowell.pile.dto.ImportBillingTemplateDTO;
import com.jsowell.pile.mapper.PileBillingTemplateMapper; import com.jsowell.pile.mapper.PileBillingTemplateMapper;
import com.jsowell.pile.service.PileBasicInfoService;
import com.jsowell.pile.service.PileBillingTemplateService; import com.jsowell.pile.service.PileBillingTemplateService;
import com.jsowell.pile.service.PileStationInfoService;
import com.jsowell.pile.transaction.dto.BillingTemplateTransactionDTO; import com.jsowell.pile.transaction.dto.BillingTemplateTransactionDTO;
import com.jsowell.pile.transaction.service.TransactionService; import com.jsowell.pile.transaction.service.TransactionService;
import com.jsowell.pile.util.UserUtils; import com.jsowell.pile.util.UserUtils;
@@ -59,7 +60,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
private TransactionService transactionService; private TransactionService transactionService;
@Autowired @Autowired
private PileBasicInfoService pileBasicInfoService; private PileStationInfoService pileStationInfoService;
@Autowired @Autowired
private RedisCache redisCache; private RedisCache redisCache;
@@ -224,6 +225,8 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
log.info("根据计费模板id{}查询为null。无法修改直接返回", dto.getBillingTemplateId()); log.info("根据计费模板id{}查询为null。无法修改直接返回", dto.getBillingTemplateId());
return; return;
} }
// 查询站点信息
billingTemplate.setName(dto.getName()); billingTemplate.setName(dto.getName());
billingTemplate.setType(String.valueOf(dto.getType())); billingTemplate.setType(String.valueOf(dto.getType()));
billingTemplate.setRemark(dto.getRemark()); billingTemplate.setRemark(dto.getRemark());
@@ -232,6 +235,33 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
billingTemplate.setOccupyFee(dto.getOccupyFee()); billingTemplate.setOccupyFee(dto.getOccupyFee());
billingTemplate.setMaxOccupyFee(dto.getMaxOccupyFee()); 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为时间描述 // key为时间类型value为时间描述
Map<String, List<BillingTimeDTO>> map = dto.getTimeArray().stream() Map<String, List<BillingTimeDTO>> map = dto.getTimeArray().stream()
.collect(Collectors.groupingBy(BillingTimeDTO::getType)); .collect(Collectors.groupingBy(BillingTimeDTO::getType));
@@ -241,7 +271,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
PileBillingDetail detail = null; PileBillingDetail detail = null;
for (BillingTimeEnum billingTimeEnum : BillingTimeEnum.values()) { for (BillingTimeEnum billingTimeEnum : BillingTimeEnum.values()) {
detail = new PileBillingDetail(); detail = new PileBillingDetail();
detail.setTemplateCode(billingTemplate.getTemplateCode()); detail.setTemplateCode(templateCode);
String type = billingTimeEnum.getValue(); // 时段类型 String type = billingTimeEnum.getValue(); // 时段类型
detail.setTimeType(type); detail.setTimeType(type);
Map<String, BigDecimal> priceMap = getPriceMap(dto, type); Map<String, BigDecimal> priceMap = getPriceMap(dto, type);
@@ -258,15 +288,7 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
detail.setCreateBy(SecurityUtils.getUsername()); detail.setCreateBy(SecurityUtils.getUsername());
detailList.add(detail); detailList.add(detail);
} }
return detailList;
BillingTemplateTransactionDTO build = BillingTemplateTransactionDTO.builder()
.billingTemplate(billingTemplate)
.detailList(detailList)
.build();
// 入库
transactionService.doUpdateBillingTemplate(build);
cleanCache(dto.getStationId() , Long.valueOf(dto.getBillingTemplateId()));
} }
@Override @Override
@@ -408,6 +430,41 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
return 0; 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 @Override
public List<BillingTemplateVO> selectBillingTemplateByStationIdList(List<String> stationIdList) { public List<BillingTemplateVO> selectBillingTemplateByStationIdList(List<String> stationIdList) {
if (CollectionUtils.isEmpty(stationIdList)) { if (CollectionUtils.isEmpty(stationIdList)) {
@@ -623,11 +680,17 @@ public class PileBillingTemplateServiceImpl implements PileBillingTemplateServic
String templateCode = Seq.getId(); // 生成计费模板编号 String templateCode = Seq.getId(); // 生成计费模板编号
BeanUtils.copyProperties(pileBillingTemplate, stationBillingTemplate, "id", "createBy", "createTime", "updateBy", "updateTime"); 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.setPublicFlag(Constants.ZERO); // 站点私有计费模板
stationBillingTemplate.setTemplateCode(templateCode); stationBillingTemplate.setTemplateCode(templateCode);
stationBillingTemplate.setCreateBy(SecurityUtils.getUsername()); stationBillingTemplate.setCreateBy(SecurityUtils.getUsername());
stationBillingTemplate.setDelFlag(DelFlagEnum.NORMAL.getValue()); stationBillingTemplate.setDelFlag(DelFlagEnum.NORMAL.getValue());
// 查询站点信息
PileStationInfo stationInfo = pileStationInfoService.selectPileStationInfoById(stationId);
if (stationInfo != null) {
stationBillingTemplate.setName(stationInfo.getStationName() + "的计费模板");
}
// 复制计费模板详情 // 复制计费模板详情
List<PileBillingDetail> stationBillingDetailList = Lists.newArrayList(); List<PileBillingDetail> stationBillingDetailList = Lists.newArrayList();
PileBillingDetail pileBillingDetail; PileBillingDetail pileBillingDetail;