From e84e0b60a802671025e189164f16ccb512805166 Mon Sep 17 00:00:00 2001 From: xuhy <3313886187@qq.com> Date: 星期一, 02 九月 2024 16:38:20 +0800 Subject: [PATCH] 计费模版处理 --- ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java | 2 ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java | 109 +++++++++++++++++++++++++++++++++--- ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java | 9 ++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java | 4 + ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java | 7 -- ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml | 7 +- 6 files changed, 115 insertions(+), 23 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java index 37f71b0..c9c09f2 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TAccountingStrategy.java @@ -85,6 +85,8 @@ @TableField("two_audit_time") private LocalDateTime twoAuditTime; - + @ApiModelProperty(value = "父级id 上一次已审核通过的id 为空则代表是新增,或者本次数据状态审核中或已拒绝") + @TableField("parent_id") + private Integer parentId; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java index 9c48083..10018dc 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/model/TChargingOrder.java @@ -186,11 +186,4 @@ @TableField("pay_time") private LocalDateTime payTime; - @ApiModelProperty(value = "累计服务费") - @TableField("service_charge") - private BigDecimal serviceCharge; - - @ApiModelProperty(value = "累计电费") - @TableField("electrovalence") - private BigDecimal electrovalence; } diff --git a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java index 7bec166..b991d8e 100644 --- a/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java +++ b/ruoyi-api/ruoyi-api-order/src/main/java/com/ruoyi/order/api/vo/TOrderAppealVO.java @@ -35,5 +35,7 @@ private String gunName; @ApiModelProperty(value = "枪号") private String gunNumber; + @ApiModelProperty(value = "结束方式(0=异常终止,1=主动终止,2=满电终止,3=费用不足终止)") + private Integer endMode; } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java index 58e94fb..b0b15f2 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/controller/TAccountingStrategyController.java @@ -16,6 +16,7 @@ import com.ruoyi.chargingPile.service.TChargingPileService; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.dto.SteategyPassDto; +import com.ruoyi.common.core.enums.AuditStateEnum; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BaseDelete; import com.ruoyi.common.core.web.page.PageInfo; @@ -40,6 +41,7 @@ import java.time.LocalTime; import java.util.Arrays; import java.util.List; +import java.util.Objects; import static com.ruoyi.common.core.context.SecurityContextHolder.getUserId; @@ -115,7 +117,6 @@ // 添加明细 dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); - // TODO 硬件 同步策略到充电桩 return AjaxResult.ok(dto.getId()); } @@ -125,19 +126,52 @@ @Log(title = "修改计费策略", businessType = BusinessType.UPDATE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "修改计费策略") @PostMapping(value = "/update") - public AjaxResult<Boolean> update(@RequestBody TAccountingStrategyDTO dto) { + public AjaxResult<String> update(@RequestBody TAccountingStrategyDTO dto) { Boolean flag = accountingStrategyDetailService.isStrategy24Hour(dto.getAccountingStrategyDetails()); if(flag){ return AjaxResult.error("计费模板时间设置有误差"); } - // 删除计费策略明细信息 - accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) - .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId())); - accountingStrategyService.updateById(dto); - // 添加明细 - dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); - // TODO 硬件 同步策略到充电桩 - return AjaxResult.ok(accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails())); + // 判断修改的计费策略是否为已通过 + if(dto.getAuditStatus() == 3 || dto.getAuditStatus() == 4){ + // 查询是否有下级审核中的策略 + TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class) + .eq(TAccountingStrategy::getParentId, dto.getId()) + .ne(TAccountingStrategy::getAuditStatus, Arrays.asList(3,4))); + if(Objects.nonNull(children)){ + // 删除计费策略明细信息 + accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) + .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId())); + dto.setAuditStatus(1); + accountingStrategyService.updateById(dto); + // 添加明细 + dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); + accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); + }else { + Long userId = SecurityUtils.getLoginUser().getUserid(); + dto.setUserId(userId); + dto.setAuditStatus(1); + dto.setId(null); + dto.setParentId(dto.getId()); + accountingStrategyService.save(dto); + // 添加明细 + List<TAccountingStrategyDetail> accountingStrategyDetails = dto.getAccountingStrategyDetails(); + accountingStrategyDetails.forEach(detail -> { + detail.setAccountingStrategyId(dto.getId()); + detail.setId(null); + }); + accountingStrategyDetailService.saveBatch(accountingStrategyDetails); + } + }else { + // 删除计费策略明细信息 + accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) + .eq(TAccountingStrategyDetail::getAccountingStrategyId, dto.getId())); + dto.setAuditStatus(1); + accountingStrategyService.updateById(dto); + // 添加明细 + dto.getAccountingStrategyDetails().forEach(detail -> detail.setAccountingStrategyId(dto.getId())); + accountingStrategyDetailService.saveBatch(dto.getAccountingStrategyDetails()); + } + return AjaxResult.success(); } /** @@ -162,12 +196,61 @@ } /** + * 查看计费策略详情-修改后 + */ + @ApiOperation(tags = {"后台-计费策略", "管理后台-站点管理"},value = "查看计费策略详情修改后children的数据") + @GetMapping(value = "/getDetailChildrenById") + public AjaxResult<TAccountingStrategyVO> getDetailChildrenById(@RequestParam("id") Integer id) { + TAccountingStrategyVO accountingStrategyVO = new TAccountingStrategyVO(); + // 先查询children对象 + TAccountingStrategy children = accountingStrategyService.getOne(Wrappers.lambdaQuery(TAccountingStrategy.class) + .eq(TAccountingStrategy::getParentId, id) + .orderByDesc(TAccountingStrategy::getCreateTime) + .last("LIMIT 1")); + if(Objects.nonNull(children)){ + BeanUtils.copyProperties(children,accountingStrategyVO); + // 查询用户信息 + if(null != children.getFirstUserId()){ + String firstUserName = sysUserClient.getSysUser(children.getFirstUserId()).getData().getNickName(); + accountingStrategyVO.setFirstUserName(firstUserName); + } + if(null != children.getTwoUserId()){ + String twoUserName = sysUserClient.getSysUser(children.getTwoUserId()).getData().getNickName(); + accountingStrategyVO.setTwoUserName(twoUserName); + } + accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) + .eq(TAccountingStrategyDetail::getAccountingStrategyId, children.getId()))); + }else { + TAccountingStrategy accountingStrategy = accountingStrategyService.getById(id); + BeanUtils.copyProperties(accountingStrategy,accountingStrategyVO); + // 查询用户信息 + if(null != accountingStrategy.getFirstUserId()){ + String firstUserName = sysUserClient.getSysUser(accountingStrategy.getFirstUserId()).getData().getNickName(); + accountingStrategyVO.setFirstUserName(firstUserName); + } + if(null != accountingStrategy.getTwoUserId()){ + String twoUserName = sysUserClient.getSysUser(accountingStrategy.getTwoUserId()).getData().getNickName(); + accountingStrategyVO.setTwoUserName(twoUserName); + } + accountingStrategyVO.setAccountingStrategyDetailList(accountingStrategyDetailService.list(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) + .eq(TAccountingStrategyDetail::getAccountingStrategyId, id))); + } + return AjaxResult.ok(accountingStrategyVO); + } + + /** * 删除计费策略 */ @Log(title = "删除计费策略", businessType = BusinessType.DELETE,operatorType = OperatorType.MANAGE) @ApiOperation(tags = {"后台-计费策略"},value = "删除计费策略") @DeleteMapping(value = "/deleteById") public AjaxResult<Boolean> deleteById(@RequestParam("id") Integer id) { + // 判断策略是否在使用 + long count = siteService.count(Wrappers.lambdaQuery(Site.class) + .eq(Site::getAccountingStrategyId, id)); + if(count>0){ + return AjaxResult.error("该计费策略正在使用中,无法删除"); + } // 刪除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .eq(TAccountingStrategyDetail::getAccountingStrategyId, id)); @@ -182,6 +265,12 @@ @DeleteMapping(value = "/deleteByIds") public AjaxResult<Boolean> deleteByIds(@RequestParam String ids) { String[] split = ids.split(","); + // 判断策略是否在使用 + long count = siteService.count(Wrappers.lambdaQuery(Site.class) + .in(Site::getAccountingStrategyId, Arrays.asList(split))); + if(count>0){ + return AjaxResult.error("该计费策略正在使用中,无法删除"); + } // 刪除计费策略明细信息 accountingStrategyDetailService.remove(Wrappers.lambdaQuery(TAccountingStrategyDetail.class) .in(TAccountingStrategyDetail::getAccountingStrategyId, Arrays.asList(split))); diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml index 852f794..521ac63 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml +++ b/ruoyi-service/ruoyi-chargingPile/src/main/resources/mapper/chargingPile/TAccountingStrategyMapper.xml @@ -18,15 +18,16 @@ <result column="two_audit_time" property="twoAuditTime" /> <result column="create_time" property="createTime" /> <result column="del_flag" property="delFlag" /> + <result column="parent_id" property="parentId" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> - id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag + id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id </sql> <select id="pageList" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO"> SELECT - id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id + id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,user_id,parent_id FROM t_accounting_strategy <where> <if test="query.name != null and query.name != ''"> @@ -45,7 +46,7 @@ <select id="getPlatformAccountingStrategy" resultType="com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO"> SELECT - id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag + id, site_id, `name`, description, discount,first_user_id,two_user_id,first_remark,two_remark,audit_status,first_audit_time,two_audit_time, create_time, del_flag,parent_id FROM t_accounting_strategy where del_flag = 0 and site_id is not null order by create_time desc </select> </mapper> diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java index 6c8d89c..b48a88e 100644 --- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java +++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderAppealServiceImpl.java @@ -57,13 +57,14 @@ if (item.getOrderType() == 1) { TChargingOrder tChargingOrder = chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); if(Objects.nonNull(tChargingOrder)){ - item.setChargingOrder(chargingOrders.stream().filter(chargingOrder -> chargingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null)); + item.setChargingOrder(tChargingOrder); SiteNameVO siteNameVO = chargingGunClient.getAllInfoById(tChargingOrder.getChargingGunId()).getData(); item.setGunName(siteNameVO.getGunName()); item.setGunNumber(siteNameVO.getGunNumber()); item.setPileName(siteNameVO.getPileName()); item.setPileNumber(siteNameVO.getPileNumber()); item.setSiteName(siteNameVO.getSiteName()); + item.setEndMode(tChargingOrder.getEndMode()); } }else if (item.getOrderType() == 2) { TShoppingOrder tShoppingOrder = shoppingOrders.stream().filter(shoppingOrder -> shoppingOrder.getId().equals(item.getOrderId())).findFirst().orElse(null); @@ -82,7 +83,11 @@ BeanUtils.copyProperties(orderAppeal,orderAppealVO); // 查询申诉详情 if (orderAppeal.getOrderType() == 1) { - orderAppealVO.setChargingOrder(chargingOrderMapper.selectById(orderAppeal.getOrderId())); + TChargingOrder tChargingOrder = chargingOrderMapper.selectById(orderAppeal.getOrderId()); + orderAppealVO.setChargingOrder(tChargingOrder); + if(Objects.nonNull(tChargingOrder)){ + orderAppealVO.setEndMode(tChargingOrder.getEndMode()); + } }else if (orderAppeal.getOrderType() == 2) { TShoppingOrder tShoppingOrder = shoppingOrderMapper.selectById(orderAppeal.getOrderId()); setGoodsInfo(orderAppealVO,tShoppingOrder); -- Gitblit v1.7.1