Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile
| | |
| | | } |
| | | |
| | | @Override |
| | | public R<List<TAppUser>> selectByPhoneLike(String phone) { |
| | | return R.fail("通过手机号模糊查询用户失败:"+throwable.getMessage()); |
| | | } |
| | | |
| | | @Override |
| | | public R refundPoints(String param) { |
| | | return R.fail("后台兑换订单退款回退用户积分失败:"+throwable.getMessage()); |
| | | } |
| | |
| | | @GetMapping("/t-app-user/user/selectByPhone") |
| | | R<TAppUser> selectByPhone(@RequestParam("phone") String phone); |
| | | /** |
| | | * 通过手机号模糊查询用户 |
| | | * @param phone |
| | | * @return |
| | | */ |
| | | @GetMapping("/t-app-user/user/selectByPhoneLike") |
| | | R<List<TAppUser>> selectByPhoneLike(@RequestParam("phone") String phone); |
| | | /** |
| | | * 远程调用 积分兑换订单 退款回退积分 |
| | | * @return |
| | | */ |
| | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | |
| | | private LocalDateTime createTime; |
| | | |
| | | @ApiModelProperty(value = "开票时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") |
| | | @TableField("billing_time") |
| | | private LocalDateTime billingTime; |
| | | |
| | |
| | | @ApiModelProperty(value = "增值服务费税率") |
| | | @TableField("added_service_tariff") |
| | | private BigDecimal addedServiceTariff; |
| | | |
| | | @ApiModelProperty(value = "'电费'") |
| | | @TableField("electrovalence") |
| | | private BigDecimal electrovalence; |
| | | @ApiModelProperty(value = "'服务费'") |
| | | @TableField("service_charge") |
| | | private BigDecimal serviceCharge; |
| | | @ApiModelProperty(value = "'增值服务费'") |
| | | @TableField("added_service") |
| | | private BigDecimal addedService; |
| | | |
| | | } |
New file |
| | |
| | | package com.ruoyi.order.api.query; |
| | | |
| | | import com.ruoyi.common.core.query.TimeRangePageQuery; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | @ApiModel(value = "发票管理Query") |
| | | public class TOrderInvoiceQuery extends TimeRangePageQuery { |
| | | |
| | | @ApiModelProperty(value = "开票公司") |
| | | private String invoicingCompany; |
| | | |
| | | @ApiModelProperty(value = "发票类型") |
| | | private String invoiceType; |
| | | |
| | | @ApiModelProperty(value = "抬头类型(1=个人,2=企业)") |
| | | private Integer invoicingObjectType; |
| | | |
| | | @ApiModelProperty(value = "发票种类(1=纸质发票,2=电子发票)") |
| | | private Integer invoiceMaterial; |
| | | |
| | | @ApiModelProperty(value = "开票方式(1=人工,2=自动)") |
| | | private Integer invoicingMethod; |
| | | |
| | | @ApiModelProperty(value = "申请人电话") |
| | | private String userPhone; |
| | | |
| | | @ApiModelProperty(value = "申请人姓名") |
| | | private String nickName; |
| | | |
| | | @ApiModelProperty(value = "公司名称") |
| | | private String name; |
| | | |
| | | @ApiModelProperty(value = "用户id 前端忽略") |
| | | private List<Long> userIds; |
| | | |
| | | } |
New file |
| | |
| | | package com.ruoyi.order.api.vo; |
| | | |
| | | import com.ruoyi.order.api.model.TOrderInvoice; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "发票管理VO") |
| | | public class TOrderInvoiceVO extends TOrderInvoice { |
| | | |
| | | @ApiModelProperty(value = "电费税率") |
| | | private BigDecimal electricityTariff; |
| | | |
| | | @ApiModelProperty(value = "服务费税率") |
| | | private BigDecimal serviceTariff; |
| | | |
| | | @ApiModelProperty(value = "增值服务费税率") |
| | | private BigDecimal addedServiceTariff; |
| | | @ApiModelProperty(value = "电费") |
| | | private BigDecimal electrovalence; |
| | | @ApiModelProperty(value = "服务费") |
| | | private BigDecimal serviceCharge; |
| | | @ApiModelProperty(value = "增值服务费") |
| | | private BigDecimal addedService; |
| | | @ApiModelProperty(value = "用户电话") |
| | | private String userPhone; |
| | | |
| | | } |
| | |
| | | return LocalTime.parse(time, formatter); |
| | | } |
| | | |
| | | /** |
| | | * localdatetime转为字符串 |
| | | * |
| | | * @param time localdatetime |
| | | * @return 字符串 |
| | | */ |
| | | public static String localDateTimeToString(LocalDateTime time) { |
| | | DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); |
| | | return df.format(time); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | .eq(TAppUser::getPhone,phone) |
| | | .last("LIMIT 1"))); |
| | | } |
| | | /** |
| | | * 通过手机号模糊查询用户 |
| | | * @param phone |
| | | * @return |
| | | */ |
| | | @GetMapping("/user/selectByPhoneLike") |
| | | public R<List<TAppUser>> selectByPhoneLike(@RequestParam("phone") String phone){ |
| | | return R.ok(appUserService.list(Wrappers.lambdaQuery(TAppUser.class) |
| | | .eq(TAppUser::getPhone,phone))); |
| | | } |
| | | |
| | | @ApiOperation(value = "签到", tags = {"小程序-个人中心-签到"}) |
| | | @GetMapping(value = "/user/sign") |
| | |
| | | public AjaxResult<List<TAccountingStrategyDetailVO>> queryAccountingStrategyDetailByStrategyId(@RequestParam("strategyId") Integer strategyId) { |
| | | List<TAccountingStrategyDetailVO> list = accountingStrategyDetailService.queryAccountingStrategyDetailByStrategyId(strategyId); |
| | | list.forEach(detail -> { |
| | | detail.setTotalPrice(detail.getElectrovalence().add(detail.getElectrovalence())); |
| | | detail.setTotalPrice(detail.getElectrovalence().add(detail.getServiceCharge())); |
| | | }); |
| | | return AjaxResult.ok(list); |
| | | } |
| | |
| | | |
| | | import com.ruoyi.integration.api.model.AcquisitionBillingMode; |
| | | import com.ruoyi.integration.api.model.BillingModeVerify; |
| | | import com.ruoyi.integration.api.model.BillingModeVerifyReply; |
| | | import com.ruoyi.integration.iotda.enums.ServiceIdMenu; |
| | | import com.ruoyi.integration.iotda.utils.produce.IotMessageProduce; |
| | | import com.ruoyi.integration.iotda.utils.tools.MessageUtil; |
| | | import com.ruoyi.integration.mongodb.service.BillingModeVerifyReplyService; |
| | | import com.ruoyi.integration.mongodb.service.BillingModeVerifyService; |
| | | import com.ruoyi.integration.rocket.model.BillingModeVerifyMessage; |
| | | import com.ruoyi.integration.rocket.util.EnhanceMessageHandler; |
| | |
| | | |
| | | @Autowired |
| | | private BillingModeVerifyService billingModeVerifyService; |
| | | @Autowired |
| | | private IotMessageProduce iotMessageProduce; |
| | | @Autowired |
| | | private MessageUtil messageUtil; |
| | | |
| | | @Override |
| | | protected void handleMessage(BillingModeVerifyMessage message) throws Exception { |
| | |
| | | BeanUtils.copyProperties(message,billingModeVerify); |
| | | billingModeVerifyService.create(billingModeVerify); |
| | | // 业务处理 |
| | | BillingModeVerifyReply billingModeVerifyReply = new BillingModeVerifyReply(); |
| | | if(message.getBilling_model_code().equals("0")){ |
| | | // 首次 |
| | | billingModeVerifyReply.setCharging_pile_code(billingModeVerify.getCharging_pile_code()); |
| | | billingModeVerifyReply.setBilling_model_code("0"); |
| | | billingModeVerifyReply.setBilling_model_result(1); |
| | | iotMessageProduce.sendMessage(billingModeVerifyReply.getCharging_pile_code(), ServiceIdMenu.BILLING_MODE_VERIFY_REPLY.getKey(),messageUtil.billingModeVerifyReply(billingModeVerifyReply)); |
| | | }else { |
| | | // 校验计费模版是否准确 |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | |
| | | <scope>test</scope> |
| | | </dependency> |
| | | |
| | | <dependency> |
| | | <groupId>cn.afterturn</groupId> |
| | | <artifactId>easypoi-spring-boot-starter</artifactId> |
| | | <version>4.0.0</version> |
| | | <exclusions> |
| | | <exclusion> |
| | | <artifactId>guava</artifactId> |
| | | <groupId>com.google.guava</groupId> |
| | | </exclusion> |
| | | </exclusions> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | | <build> |
| | |
| | | package com.ruoyi.order.controller; |
| | | |
| | | |
| | | import cn.afterturn.easypoi.excel.ExcelExportUtil; |
| | | import cn.afterturn.easypoi.excel.entity.ExportParams; |
| | | import com.ruoyi.common.core.utils.DateUtils; |
| | | import com.ruoyi.common.core.utils.WebUtils; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.order.api.model.TOrderInvoice; |
| | | import com.ruoyi.order.api.query.TOrderInvoiceQuery; |
| | | import com.ruoyi.order.api.vo.TOrderInvoiceVO; |
| | | import com.ruoyi.order.dto.AddOrderInvoice; |
| | | import com.ruoyi.order.dto.GetOrderInvoiceList; |
| | | import com.ruoyi.order.dto.MyOrderInvoiceInfo; |
| | | import com.ruoyi.order.dto.OrderInvoiceList; |
| | | import com.ruoyi.order.export.OrderInvoiceExport; |
| | | import com.ruoyi.order.service.TOrderInvoiceService; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.ServletOutputStream; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.net.URLEncoder; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | public AjaxResult addOrderInvoice(@RequestBody AddOrderInvoice addOrderInvoice){ |
| | | return orderInvoiceService.addOrderInvoice(addOrderInvoice); |
| | | } |
| | | |
| | | |
| | | |
| | | @PostMapping("/pageList") |
| | | @ApiOperation(value = "查询开票分页列表", tags = {"管理后台-发票管理"}) |
| | | public AjaxResult<PageInfo<TOrderInvoiceVO>> pageList(@RequestBody TOrderInvoiceQuery query){ |
| | | return AjaxResult.success(orderInvoiceService.pageList(query)); |
| | | } |
| | | |
| | | @GetMapping("/uploadPdf") |
| | | @ApiOperation(value = "上传发票", tags = {"管理后台-发票管理"}) |
| | | public AjaxResult<String> uploadPdf(@RequestParam("id") Long id, |
| | | @RequestParam("invoiceUrl") String invoiceUrl){ |
| | | TOrderInvoice orderInvoice = orderInvoiceService.getById(id); |
| | | orderInvoice.setInvoiceUrl(invoiceUrl); |
| | | orderInvoiceService.updateById(orderInvoice); |
| | | return AjaxResult.success(); |
| | | } |
| | | |
| | | @PostMapping("/statusCount") |
| | | @ApiOperation(value = "查询开票状态数量", tags = {"管理后台-发票管理"}) |
| | | public AjaxResult<Map<String,Integer>> statusCount(@RequestBody TOrderInvoiceQuery query){ |
| | | return AjaxResult.success(orderInvoiceService.statusCount(query)); |
| | | } |
| | | |
| | | /** |
| | | * 发票管理导出 |
| | | */ |
| | | @ApiOperation(value = "发票管理导出") |
| | | @Log(title = "发票管理导出", businessType = BusinessType.EXPORT) |
| | | @PostMapping("/export") |
| | | public void export(@RequestBody TOrderInvoiceQuery query) |
| | | { |
| | | List<TOrderInvoiceVO> list = orderInvoiceService.export(query); |
| | | List<OrderInvoiceExport> orderInvoiceExports = new ArrayList<>(); |
| | | for (TOrderInvoiceVO orderInvoiceVO : list) { |
| | | OrderInvoiceExport orderInvoiceExport = new OrderInvoiceExport(); |
| | | BeanUtils.copyProperties(orderInvoiceVO,orderInvoiceExport); |
| | | orderInvoiceExport.setBillingTime(DateUtils.localDateTimeToString(orderInvoiceVO.getBillingTime())); |
| | | orderInvoiceExports.add(orderInvoiceExport); |
| | | } |
| | | Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), OrderInvoiceExport.class, orderInvoiceExports); |
| | | HttpServletResponse response = WebUtils.response(); |
| | | response.setContentType("application/vnd.ms-excel"); |
| | | response.setCharacterEncoding("utf-8"); |
| | | ServletOutputStream outputStream = null; |
| | | try { |
| | | String fileName = URLEncoder.encode("发票导出.xls", "utf-8"); |
| | | response.setHeader("Content-Disposition", "attachment;filename=" + fileName); |
| | | response.setContentType("application/vnd.ms-excel;charset=UTF-8"); |
| | | response.setHeader("Pragma", "no-cache"); |
| | | response.setHeader("Cache-Control", "no-cache"); |
| | | outputStream = response.getOutputStream(); |
| | | workbook.write(outputStream); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | try { |
| | | outputStream.close(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @ResponseBody |
| | | @GetMapping("/getMyOrderInvoiceList") |
New file |
| | |
| | | package com.ruoyi.order.export; |
| | | |
| | | import cn.afterturn.easypoi.excel.annotation.Excel; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | import java.math.BigDecimal; |
| | | |
| | | @Data |
| | | @ApiModel(value = "导出发票") |
| | | public class OrderInvoiceExport implements Serializable { |
| | | |
| | | @Excel(name = "申请单编号",width = 30) |
| | | private String code; |
| | | |
| | | @Excel(name = "申请日期",width = 30) |
| | | private String billingTime; |
| | | |
| | | @Excel(name = "开票公司",width = 30) |
| | | private String invoicingCompany; |
| | | |
| | | @Excel(name = "发票类型",width = 30) |
| | | private String invoiceType; |
| | | |
| | | @Excel(name = "发票种类",replace = {"纸质发票_1","电子发票_2"},width = 30) |
| | | private Integer invoiceMaterial; |
| | | |
| | | @Excel(name = "开票方式",replace = {"人工_1","自动_2"},width = 30) |
| | | private Integer invoicingMethod; |
| | | |
| | | @Excel(name = "开票总金额",width = 30) |
| | | private BigDecimal totalAmount; |
| | | |
| | | @Excel(name = "服务费",width = 30) |
| | | private BigDecimal serviceCharge; |
| | | |
| | | @Excel(name = "服务费税率",width = 30) |
| | | private BigDecimal serviceTariff; |
| | | |
| | | @Excel(name = "增值服务费",width = 30) |
| | | private BigDecimal addedService; |
| | | |
| | | @Excel(name = "增值服务费税率",width = 30) |
| | | private BigDecimal addedServiceTariff; |
| | | |
| | | // @Excel(name = "开票订单类型",replace = {"充电订单_1","购物订单_2","兑换订单_3","会员订单_4"},width = 30) |
| | | // private Integer orderType; |
| | | |
| | | @Excel(name = "抬头类型",replace = {"个人_1","企业_2"},width = 30) |
| | | private Integer invoicingObjectType; |
| | | |
| | | @Excel(name = "发票抬头",width = 30) |
| | | private String name; |
| | | |
| | | @Excel(name = "开户银行",width = 30) |
| | | private String depositBank; |
| | | |
| | | @Excel(name = "银行账户",width = 30) |
| | | private String bankAccount; |
| | | |
| | | @Excel(name = "公司电话",width = 30) |
| | | private String companyPhone; |
| | | |
| | | @Excel(name = "纳税识别号",width = 30) |
| | | private String taxIdentificationNumber; |
| | | |
| | | @Excel(name = "公司地址",width = 30) |
| | | private String companyAddress; |
| | | |
| | | @Excel(name = "邮箱",width = 30) |
| | | private String mailbox; |
| | | |
| | | @Excel(name = "状态",replace = {"待开票_1","开票中_2","已开票_3"},width = 30) |
| | | private Integer status; |
| | | |
| | | @Excel(name = "用户电话",width = 30) |
| | | private String userPhone; |
| | | } |
| | |
| | | package com.ruoyi.order.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.order.api.model.TOrderInvoice; |
| | | import com.ruoyi.order.api.query.TOrderInvoiceQuery; |
| | | import com.ruoyi.order.api.vo.TOrderInvoiceVO; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | @Mapper |
| | | public interface TOrderInvoiceMapper extends BaseMapper<TOrderInvoice> { |
| | | |
| | | /** |
| | | * 发票分页查询 |
| | | * @param query |
| | | * @param pageInfo |
| | | * @return |
| | | */ |
| | | List<TOrderInvoiceVO> pageList(@Param("query") TOrderInvoiceQuery query, @Param("pageInfo")PageInfo<TOrderInvoiceVO> pageInfo); |
| | | |
| | | /** |
| | | * 查询开票状态数量 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | Map<String, Integer> statusCount(@Param("query")TOrderInvoiceQuery query); |
| | | |
| | | /** |
| | | * 导出 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | List<TOrderInvoiceVO> export(@Param("query")TOrderInvoiceQuery query); |
| | | |
| | | } |
| | |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.order.api.model.TOrderInvoice; |
| | | import com.ruoyi.order.api.query.TOrderInvoiceQuery; |
| | | import com.ruoyi.order.api.vo.TOrderInvoiceVO; |
| | | import com.ruoyi.order.dto.AddOrderInvoice; |
| | | import com.ruoyi.order.dto.GetOrderInvoiceList; |
| | | import com.ruoyi.order.dto.MyOrderInvoiceInfo; |
| | | import com.ruoyi.order.dto.OrderInvoiceList; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p> |
| | |
| | | * @return |
| | | */ |
| | | MyOrderInvoiceInfo getMyOrderInvoiceInfo(String id); |
| | | |
| | | /** |
| | | * 查询开票分页列表 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | PageInfo<TOrderInvoiceVO> pageList(TOrderInvoiceQuery query); |
| | | |
| | | /** |
| | | * 查询开票状态数量 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | Map<String,Integer> statusCount(TOrderInvoiceQuery query); |
| | | |
| | | /** |
| | | * 发票管理导出 |
| | | * @param query |
| | | * @return |
| | | */ |
| | | List<TOrderInvoiceVO> export(TOrderInvoiceQuery query); |
| | | |
| | | } |
| | |
| | | import com.alibaba.fastjson2.JSONArray; |
| | | import com.alibaba.fastjson2.JSONObject; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.ruoyi.account.api.feignClient.AppUserClient; |
| | | import com.ruoyi.account.api.model.TAppUser; |
| | | import com.ruoyi.account.api.model.TAppUserCar; |
| | | import com.ruoyi.chargingPile.api.feignClient.ChargingGunClient; |
| | | import com.ruoyi.chargingPile.api.feignClient.SiteClient; |
| | | import com.ruoyi.chargingPile.api.model.Site; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.order.api.model.TChargingOrder; |
| | | import com.ruoyi.order.api.model.TOrderInvoice; |
| | | import com.ruoyi.order.api.model.TOrderInvoiceDetail; |
| | | import com.ruoyi.order.api.model.TShoppingOrder; |
| | | import com.ruoyi.order.api.query.TOrderInvoiceQuery; |
| | | import com.ruoyi.order.api.vo.TOrderEvaluateVO; |
| | | import com.ruoyi.order.api.vo.TOrderInvoiceVO; |
| | | import com.ruoyi.order.dto.*; |
| | | import com.ruoyi.order.mapper.TOrderInvoiceMapper; |
| | | import com.ruoyi.order.service.TChargingOrderService; |
| | |
| | | import io.seata.spring.annotation.GlobalTransactional; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.math.BigDecimal; |
| | |
| | | |
| | | @Resource |
| | | private CouponClient couponClient; |
| | | |
| | | @Resource |
| | | private AppUserClient appUserClient; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | } |
| | | return myOrderInvoiceInfo; |
| | | } |
| | | |
| | | @Override |
| | | public PageInfo<TOrderInvoiceVO> pageList(TOrderInvoiceQuery query) { |
| | | // 查询申请用户 |
| | | List<TAppUser> userList = appUserClient.selectByPhoneLike(query.getUserPhone()).getData(); |
| | | if(CollectionUtils.isEmpty(userList)){ |
| | | return new PageInfo<>(); |
| | | } |
| | | query.setUserIds(userList.stream().map(TAppUser::getId).collect(Collectors.toList())); |
| | | PageInfo<TOrderInvoiceVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); |
| | | List<TOrderInvoiceVO> list = this.baseMapper.pageList(query,pageInfo); |
| | | |
| | | List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList()); |
| | | |
| | | List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>() |
| | | .in(TOrderInvoiceDetail::getOrderInvoiceId, ids)); |
| | | |
| | | list.forEach(e->{ |
| | | e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff()); |
| | | e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff()); |
| | | e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff()); |
| | | e.setAddedService(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get()); |
| | | e.setElectrovalence(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get()); |
| | | e.setServiceCharge(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get()); |
| | | e.setUserPhone(userList.stream().filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone()); |
| | | }); |
| | | |
| | | pageInfo.setRecords(list); |
| | | return pageInfo; |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Integer> statusCount(TOrderInvoiceQuery query) { |
| | | Map<String, Integer> map = new HashMap<>(); |
| | | List<TAppUser> userList = appUserClient.selectByPhoneLike(query.getUserPhone()).getData(); |
| | | if(CollectionUtils.isEmpty(userList)){ |
| | | map.put("notAccepted",0); |
| | | map.put("processing",0); |
| | | map.put("finished",0); |
| | | return map; |
| | | } |
| | | query.setUserIds(userList.stream().map(TAppUser::getId).collect(Collectors.toList())); |
| | | map = this.baseMapper.statusCount(query); |
| | | return map; |
| | | } |
| | | |
| | | @Override |
| | | public List<TOrderInvoiceVO> export(TOrderInvoiceQuery query) { |
| | | // 查询申请用户 |
| | | List<TAppUser> userList = appUserClient.selectByPhoneLike(query.getUserPhone()).getData(); |
| | | if(CollectionUtils.isEmpty(userList)){ |
| | | return new ArrayList<>(); |
| | | } |
| | | query.setUserIds(userList.stream().map(TAppUser::getId).collect(Collectors.toList())); |
| | | PageInfo<TOrderInvoiceVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize()); |
| | | List<TOrderInvoiceVO> list = this.baseMapper.export(query); |
| | | List<Long> ids = list.stream().map(TOrderInvoiceVO::getId).collect(Collectors.toList()); |
| | | List<TOrderInvoiceDetail> orderInvoiceDetailList = orderInvoiceDetailService.list(new LambdaQueryWrapper<TOrderInvoiceDetail>() |
| | | .in(TOrderInvoiceDetail::getOrderInvoiceId, ids)); |
| | | list.forEach(e->{ |
| | | e.setServiceTariff(orderInvoiceDetailList.get(0).getServiceTariff()); |
| | | e.setElectricityTariff(orderInvoiceDetailList.get(0).getElectricityTariff()); |
| | | e.setAddedServiceTariff(orderInvoiceDetailList.get(0).getAddedServiceTariff()); |
| | | e.setAddedService(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getAddedService).reduce(BigDecimal::add).get()); |
| | | e.setElectrovalence(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getElectrovalence).reduce(BigDecimal::add).get()); |
| | | e.setServiceCharge(orderInvoiceDetailList.stream().map(TOrderInvoiceDetail::getServiceCharge).reduce(BigDecimal::add).get()); |
| | | e.setUserPhone(userList.stream().filter(m->m.getId().equals(Long.parseLong(e.getBillingUserId().toString()))).findFirst().get().getPhone()); |
| | | }); |
| | | return list; |
| | | } |
| | | } |
| | |
| | | <result column="electricity_tariff" property="electricityTariff" /> |
| | | <result column="service_tariff" property="serviceTariff" /> |
| | | <result column="added_service_tariff" property="addedServiceTariff" /> |
| | | <result column="electrovalence" property="electrovalence" /> |
| | | <result column="service_charge" property="serviceCharge" /> |
| | | <result column="added_service" property="addedService" /> |
| | | </resultMap> |
| | | |
| | | <!-- 通用查询结果列 --> |
| | | <sql id="Base_Column_List"> |
| | | id, order_invoice_id, order_type, order_id, invoice_amount, electricity_tariff, service_tariff, added_service_tariff |
| | | id, order_invoice_id, order_type, order_id, invoice_amount, electricity_tariff, service_tariff, added_service_tariff,electrovalence,service_charge,added_service |
| | | </sql> |
| | | |
| | | </mapper> |
| | |
| | | <sql id="Base_Column_List"> |
| | | id, code, app_user_id, order_type, invoicing_company, invoice_type_id, invoice_type, invoice_material, invoicing_method, invoicing_object_type, name, tax_identification_number, company_address, company_phone, deposit_bank, bank_account, total_amount, invoice_url, mailbox, status, create_time, billing_time, billing_user_id |
| | | </sql> |
| | | <select id="pageList" resultType="com.ruoyi.order.api.vo.TOrderInvoiceVO"> |
| | | select toi.id, toi.code, toi.app_user_id, toi.order_type, toi.invoicing_company, toi.invoice_type_id, toi.invoice_type, toi.invoice_material, |
| | | toi.invoicing_method, toi.invoicing_object_type, toi.name, toi.tax_identification_number, toi.company_address, toi.company_phone, |
| | | toi.deposit_bank, toi.bank_account, toi.total_amount, toi.invoice_url, toi.mailbox, toi.status, toi.create_time, toi.billing_time, |
| | | toi.billing_user_id |
| | | from t_order_invoice toi |
| | | <where> |
| | | <if test="query.invoicingCompany != null and query.invoicingCompany != ''"> |
| | | AND toi.invoicing_company LIKE concat('%',#{query.invoicingCompany},'%') |
| | | </if> |
| | | <if test="query.invoiceType != null and query.invoiceType != ''"> |
| | | AND toi.invoice_type LIKE concat('%',#{query.invoiceType},'%') |
| | | </if> |
| | | <if test="query.invoicingObjectType != null"> |
| | | AND toi.invoicing_object_type = #{query.invoicingObjectType} |
| | | </if> |
| | | <if test="query.invoiceMaterial != null"> |
| | | AND toi.invoice_material = #{query.invoiceMaterial} |
| | | </if> |
| | | <if test="query.invoicingMethod != null"> |
| | | AND toi.invoicing_method = #{query.invoicingMethod} |
| | | </if> |
| | | <if test="query.name != null and query.name != ''"> |
| | | AND toi.name LIKE concat('%',#{query.name},'%') |
| | | </if> |
| | | <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> |
| | | AND toi.billing_time BETWEEN #{query.startTime} AND #{query.endTime} |
| | | </if> |
| | | <if test="query.userIds != null and query.userIds.size()>0"> |
| | | AND toi.billing_user_id IN |
| | | <foreach collection="query.userIds" close=")" open="(" item="userId" separator=","> |
| | | #{userId} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | ORDER BY toi.billing_time DESC |
| | | </select> |
| | | <select id="statusCount" resultType="java.util.Map"> |
| | | select |
| | | COUNT(CASE WHEN status = 1 THEN 1 END) AS `notAccepted`, |
| | | COUNT(CASE WHEN status = 2 THEN 1 END) AS `processing`, |
| | | COUNT(CASE WHEN status = 3 THEN 1 END) AS `finished` |
| | | from t_order_invoice toi |
| | | <where> |
| | | <if test="query.invoicingCompany != null and query.invoicingCompany != ''"> |
| | | AND toi.invoicing_company LIKE concat('%',#{query.invoicingCompany},'%') |
| | | </if> |
| | | <if test="query.invoiceType != null and query.invoiceType != ''"> |
| | | AND toi.invoice_type LIKE concat('%',#{query.invoiceType},'%') |
| | | </if> |
| | | <if test="query.invoicingObjectType != null"> |
| | | AND toi.invoicing_object_type = #{query.invoicingObjectType} |
| | | </if> |
| | | <if test="query.invoiceMaterial != null"> |
| | | AND toi.invoice_material = #{query.invoiceMaterial} |
| | | </if> |
| | | <if test="query.invoicingMethod != null"> |
| | | AND toi.invoicing_method = #{query.invoicingMethod} |
| | | </if> |
| | | <if test="query.name != null and query.name != ''"> |
| | | AND toi.name LIKE concat('%',#{query.name},'%') |
| | | </if> |
| | | <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> |
| | | AND toi.billing_time BETWEEN #{query.startTime} AND #{query.endTime} |
| | | </if> |
| | | <if test="query.userIds != null and query.userIds.size()>0"> |
| | | AND toi.billing_user_id IN |
| | | <foreach collection="query.userIds" close=")" open="(" item="userId" separator=","> |
| | | #{userId} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | </select> |
| | | <select id="export" resultType="com.ruoyi.order.api.vo.TOrderInvoiceVO"> |
| | | select toi.id, toi.code, toi.app_user_id, toi.order_type, toi.invoicing_company, toi.invoice_type_id, toi.invoice_type, toi.invoice_material, |
| | | toi.invoicing_method, toi.invoicing_object_type, toi.name, toi.tax_identification_number, toi.company_address, toi.company_phone, |
| | | toi.deposit_bank, toi.bank_account, toi.total_amount, toi.invoice_url, toi.mailbox, toi.status, toi.create_time, toi.billing_time, |
| | | toi.billing_user_id |
| | | from t_order_invoice toi |
| | | <where> |
| | | <if test="query.invoicingCompany != null and query.invoicingCompany != ''"> |
| | | AND toi.invoicing_company LIKE concat('%',#{query.invoicingCompany},'%') |
| | | </if> |
| | | <if test="query.invoiceType != null and query.invoiceType != ''"> |
| | | AND toi.invoice_type LIKE concat('%',#{query.invoiceType},'%') |
| | | </if> |
| | | <if test="query.invoicingObjectType != null"> |
| | | AND toi.invoicing_object_type = #{query.invoicingObjectType} |
| | | </if> |
| | | <if test="query.invoiceMaterial != null"> |
| | | AND toi.invoice_material = #{query.invoiceMaterial} |
| | | </if> |
| | | <if test="query.invoicingMethod != null"> |
| | | AND toi.invoicing_method = #{query.invoicingMethod} |
| | | </if> |
| | | <if test="query.name != null and query.name != ''"> |
| | | AND toi.name LIKE concat('%',#{query.name},'%') |
| | | </if> |
| | | <if test="query.startTime != null and query.startTime != '' and query.endTime != null and query.endTime != ''"> |
| | | AND toi.billing_time BETWEEN #{query.startTime} AND #{query.endTime} |
| | | </if> |
| | | <if test="query.userIds != null and query.userIds.size()>0"> |
| | | AND toi.billing_user_id IN |
| | | <foreach collection="query.userIds" close=")" open="(" item="userId" separator=","> |
| | | #{userId} |
| | | </foreach> |
| | | </if> |
| | | </where> |
| | | ORDER BY toi.billing_time DESC |
| | | </select> |
| | | |
| | | </mapper> |