diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java index 1dbbde53d..eb622dbc9 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/MemberGroupController.java @@ -82,7 +82,7 @@ public class MemberGroupController extends BaseController { } /** - * + * 会员组添加站点 */ /** diff --git a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBillingTemplateController.java b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBillingTemplateController.java index 1dac8d0ae..9577f21d1 100644 --- a/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBillingTemplateController.java +++ b/jsowell-admin/src/main/java/com/jsowell/web/controller/pile/PileBillingTemplateController.java @@ -91,6 +91,16 @@ public class PileBillingTemplateController extends BaseController { 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)); + } + /** * 删除计费模板 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileBillingTemplate.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileBillingTemplate.java index 195e7fdec..51d3560ed 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileBillingTemplate.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/PileBillingTemplate.java @@ -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 getPileBillingDetailList() { - return pileBillingDetailList; - } - - public void setPileBillingDetailList(List 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 getPileBillingDetailList() { + // return pileBillingDetailList; + // } + // + // public void setPileBillingDetailList(List pileBillingDetailList) { + // this.pileBillingDetailList = pileBillingDetailList; + // } @Override public String toString() { diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java index d00a19519..2b54e442c 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/PileBillingTemplateService.java @@ -173,4 +173,11 @@ public interface PileBillingTemplateService { * @return */ int changeStationTemplate(String stationId, String templateId); + + /** + * 创建优惠计费模板 + * @param dto + * @return + */ + int createPreferentialBillingTemplate(CreateOrUpdateBillingTemplateDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java index efbdde168..f1c1df7a1 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/PileBillingTemplateServiceImpl.java @@ -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 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 generateBillingDetailList(String templateCode, CreateOrUpdateBillingTemplateDTO dto) { // key为时间类型,value为时间描述 Map> 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 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 stationBillingDetailList = generateBillingDetailList(templateCode, dto); + + // 入库 + BillingTemplateTransactionDTO billingTemplateTransactionDTO = new BillingTemplateTransactionDTO(); + billingTemplateTransactionDTO.setBillingTemplate(stationBillingTemplate); + billingTemplateTransactionDTO.setDetailList(stationBillingDetailList); + transactionService.doCreateBillingTemplate(billingTemplateTransactionDTO); + return 1; + } + @Override public List selectBillingTemplateByStationIdList(List 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 stationBillingDetailList = Lists.newArrayList(); PileBillingDetail pileBillingDetail;