diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/api/XhpcInvoiceApiController.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/api/XhpcInvoiceApiController.java index b2c1fa8b..d7c10935 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/api/XhpcInvoiceApiController.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/api/XhpcInvoiceApiController.java @@ -2,13 +2,12 @@ package com.xhpc.invoice.api; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.core.web.domain.AjaxResult; +import com.xhpc.invoice.domain.InvoiceOrdersResponse; import com.xhpc.invoice.domain.InvoiceTitleResponse; +import com.xhpc.invoice.domain.InvoicedOrdersRequest; import com.xhpc.invoice.domain.TitleResponse; import com.xhpc.invoice.service.XhpcInvoiceService; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -26,6 +25,29 @@ public class XhpcInvoiceApiController extends BaseController { @Resource XhpcInvoiceService xhpcInvoiceService; + @PostMapping(value = "/selectInvoiceHistoryRecords") + public AjaxResult selectInvoiceHistoryRecords(@RequestBody InvoicedOrdersRequest invoicedOrdersRequest) { + + return AjaxResult.success(null); + } + + /** + * 根据用户id,用户类型,要查询的当前时间的年月日,查询该用户3个月内可以开发票的订单 + * + * @author WH + * @date 2021/12/24 14:10 + * @since version-1.0 + */ + @PostMapping(value = "/selectInvoicedOrders") + public AjaxResult selectInvoicedOrders(@RequestBody InvoicedOrdersRequest invoicedOrdersRequest) { + + if (invoicedOrdersRequest.getCurrentPage() == null || invoicedOrdersRequest.getItems() == null) { + return AjaxResult.error("分页参数不能为空:当前页数参数或当页要显示的条数为空"); + } + InvoiceOrdersResponse invoiceOrdersResponse = xhpcInvoiceService.selectInvoicedOrders(invoicedOrdersRequest); + return AjaxResult.success(invoiceOrdersResponse); + } + /** * 查询发票抬头信息 * diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoiceOrdersResponse.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoiceOrdersResponse.java new file mode 100644 index 00000000..8cf4d597 --- /dev/null +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoiceOrdersResponse.java @@ -0,0 +1,59 @@ +package com.xhpc.invoice.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; +import java.util.List; + +/** + * /invoiceOrders接口的返回参数封装类 + * + * @author WH + * @date 2021/12/24 10:25 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class InvoiceOrdersResponse { + + /** + * 符合条件的总记录条数 + */ + @JsonProperty("totalItems") + private Long totalItems; + /** + * 存放当前页要的数据的集合 + */ + @JsonProperty("items") + private List items; + + @NoArgsConstructor + @Data + public static class ItemsDTO { + + /** + * 历史订单id + */ + @JsonProperty("orderId") + private Long orderId; + /** + * 历史订单号 + */ + @JsonProperty("orderNumber") + private String orderNumber; + /** + * 订单金额 + */ + @JsonProperty("orderMoney") + private BigDecimal orderMoney; + /** + * 历史订单时间 + */ + @JsonProperty("orderTime") + private String orderTime; + + } + +} diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoicedOrdersRequest.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoicedOrdersRequest.java new file mode 100644 index 00000000..61959a1d --- /dev/null +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/domain/InvoicedOrdersRequest.java @@ -0,0 +1,44 @@ +package com.xhpc.invoice.domain; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * /selectInvoicedOrders接口的请求参数封装类 + * + * @author WH + * @date 2021/12/24 10:19 + * @since version-1.0 + */ +@NoArgsConstructor +@Data +public class InvoicedOrdersRequest { + + /** + * 用户id + */ + @JsonProperty("userId") + private Long userId; + /** + * 用户类型(0 C端用户 1 流量方用户 2社区用户 3B端用户) + */ + @JsonProperty("userType") + private Integer userType; + /** + * 当前时间 + */ + @JsonProperty("currentTime") + private String currentTime; + /** + * 当前页数 + */ + @JsonProperty("currentPage") + private Integer currentPage; + /** + * 每页显示几条数据 + */ + @JsonProperty("items") + private Integer items; + +} diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcHistoryOrderMapper.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcHistoryOrderMapper.java new file mode 100644 index 00000000..ca16faf1 --- /dev/null +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcHistoryOrderMapper.java @@ -0,0 +1,42 @@ +package com.xhpc.invoice.mapper; + +import com.xhpc.invoice.domain.InvoicedOrdersRequest; +import com.xhpc.order.domain.XhpcHistoryOrder; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 专门用于发票服务的XhpcHistoryOrderMapper + * + * @author WH + * @date 2021/12/24 14:20 + * @since version-1.0 + */ +public interface XhpcHistoryOrderMapper { + + /** + * 根据用户id,用户类型,要查询的当前时间的年月日,查询该用户3个月内可以开发票的历史订单 + * + * @param invoicedOrdersRequest 查询条件 + * @param lockOrderNumberList 过滤条件 + * @return 历史订单记录集合 + * @author WH + * @date 2021/12/24 14:41 + * @since version-1.0 + */ + List findByCondition(@Param("invoicedOrdersRequest") InvoicedOrdersRequest invoicedOrdersRequest, @Param("lockOrderNumberList") List lockOrderNumberList); + + /** + * 查询用户指定时间,所有可以开发票的历史订单数量 + * + * @param invoicedOrdersRequest 查询条件 + * @param lockOrderNumberList 过滤条件 + * @return 历史订单数量 + * @author WH + * @date 2021/12/24 16:40 + * @since version-1.0 + */ + Long findAllOrdersByCondition(@Param("invoicedOrdersRequest") InvoicedOrdersRequest invoicedOrdersRequest, @Param("lockOrderNumberList") List lockOrderNumberList); + +} diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcInvoiceMapHistoryOrderMapper.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcInvoiceMapHistoryOrderMapper.java index 5fa916da..9603f691 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcInvoiceMapHistoryOrderMapper.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/mapper/XhpcInvoiceMapHistoryOrderMapper.java @@ -1,5 +1,7 @@ package com.xhpc.invoice.mapper; +import com.xhpc.invoice.domain.InvoiceToUserRequest; +import com.xhpc.invoice.domain.InvoicedOrdersRequest; import com.xhpc.invoice.pojo.XhpcInvoiceMapHistoryOrder; import java.util.List; @@ -39,4 +41,25 @@ public interface XhpcInvoiceMapHistoryOrderMapper { */ List getHistoryOrderScopeByInvoiceId(Long invoiceId); + /** + * 更新发票所关联的历史订单的状态 + * + * @param requestData 存储与历史订单相关联的发票id + * @author WH + * @date 2021/12/24 13:59 + * @since version-1.0 + */ + void updateStatus(InvoiceToUserRequest requestData); + + /** + * 查询被用户锁定了的订单的id + * + * @param invoicedOrdersRequest 用户id和用户类型 + * @return 被用户锁定的历史订单id集合 + * @author WH + * @date 2021/12/24 16:01 + * @since version-1.0 + */ + List findLockOrdersByUserIdAndUserType(InvoicedOrdersRequest invoicedOrdersRequest); + } \ No newline at end of file diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoice.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoice.java index eea35a73..0fe698c8 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoice.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoice.java @@ -144,6 +144,11 @@ public class XhpcInvoice implements Serializable { */ private Date updateTime; + /** + * 是否已经阅读 + */ + private Integer isRead; + /** * 逻辑删除字段 */ diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoiceMapHistoryOrder.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoiceMapHistoryOrder.java index 62428c30..7b955be7 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoiceMapHistoryOrder.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/pojo/XhpcInvoiceMapHistoryOrder.java @@ -30,7 +30,7 @@ public class XhpcInvoiceMapHistoryOrder implements Serializable { private Long historyUserId; /** - * 该发票所选中的历史订单的用户类型(0为C端用户 1流量用户) + * 该发票所选中的历史订单的用户类型(0 C端用户 1 流量方用户 2社区用户 3B端用户) */ private Long historyUserType; @@ -79,6 +79,11 @@ public class XhpcInvoiceMapHistoryOrder implements Serializable { */ private Long terminalId; + /** + * 该发票所选中的历史订单是否被锁定 + */ + private Integer delLock; + /** * 逻辑删除字段 */ diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/XhpcInvoiceService.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/XhpcInvoiceService.java index d9fdd22f..73c77b7b 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/XhpcInvoiceService.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/XhpcInvoiceService.java @@ -77,4 +77,15 @@ public interface XhpcInvoiceService { */ TitleResponse selectUserInputInvoiceInfo(Long creatorId, Integer creatorType); + /** + * 根据用户id,用户类型,要查询的当前时间的年月日,查询该用户3个月内可以开发票的订单 + * + * @param invoicedOrdersRequest 查询条件 + * @return 要返回的数据的封装类 + * @author WH + * @date 2021/12/24 10:42 + * @since version-1.0 + */ + InvoiceOrdersResponse selectInvoicedOrders(InvoicedOrdersRequest invoicedOrdersRequest); + } diff --git a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java index 7d44186b..48913d09 100644 --- a/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java +++ b/xhpc-modules/xhpc-invoice/src/main/java/com/xhpc/invoice/service/impl/XhpcInvoiceServiceImpl.java @@ -9,6 +9,7 @@ import com.xhpc.invoice.mapper.*; import com.xhpc.invoice.pojo.XhpcInvoice; import com.xhpc.invoice.pojo.XhpcInvoiceMapHistoryOrder; import com.xhpc.invoice.service.XhpcInvoiceService; +import com.xhpc.order.domain.XhpcHistoryOrder; import com.xhpc.system.api.domain.SysUser; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -40,6 +41,8 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { XhpcChargingStationMapper xhpcChargingStationMapper; @Resource SysUserMapper sysUserMapper; + @Resource + XhpcHistoryOrderMapper xhpcHistoryOrderMapper; /** * 通过requestData中的申请人、申请人类型、发票状态、发票起始时间、发票申请终止时间、开票起始时间、开票终点时间、当前所在页数、当前页所要显示几行,来查询发票列表信息 @@ -53,7 +56,7 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { @Override public AllInvoiceOrdersResponse selectAllInvoiceOrders(AllInvoiceOrdersRequest requestData) { //计算分页索引 - requestData.setCurrentPage(requestData.getCurrentPage() - 1); + requestData.setCurrentPage((requestData.getCurrentPage() - 1) * requestData.getItems()); //获取每个历史订单信息 List xhpcInvoiceList = xhpcInvoiceMapper.selectAllInvoiceOrdersByCondition(requestData); //对拷,放置到itemsDTO中,然后将itemsDTO存放到itemsDTOList中 @@ -165,6 +168,42 @@ public class XhpcInvoiceServiceImpl implements XhpcInvoiceService { TitleResponse titleResponse = new TitleResponse(); BeanUtils.copyProperties(xhpcInvoice, titleResponse); return titleResponse; + + } + + /** + * 根据用户id,用户类型,要查询的当前时间的年月日,查询该用户3个月内可以开发票的历史订单 + * + * @param invoicedOrdersRequest 查询条件 + * @return 要返回的数据的封装类 + * @author WH + * @date 2021/12/24 10:42 + * @since version-1.0 + */ + @Override + public InvoiceOrdersResponse selectInvoicedOrders(InvoicedOrdersRequest invoicedOrdersRequest) { + //计算分页索引,放置到currentPage属性中 + int startIndex = (invoicedOrdersRequest.getCurrentPage() - 1) * invoicedOrdersRequest.getItems(); + invoicedOrdersRequest.setCurrentPage(startIndex); + //先查询该用户被锁定了的订单,过滤掉它 + List lockOrderNumberList = xhpcInvoiceMapHistoryOrderMapper.findLockOrdersByUserIdAndUserType(invoicedOrdersRequest); + //查询该用户3个月内可以开发票的历史订单 + List xhpcHistoryOrderList = xhpcHistoryOrderMapper.findByCondition(invoicedOrdersRequest, lockOrderNumberList); + ArrayList itemsDTOList = new ArrayList<>(); + for (XhpcHistoryOrder xhpcHistoryOrder : xhpcHistoryOrderList) { + InvoiceOrdersResponse.ItemsDTO itemsDTO = new InvoiceOrdersResponse.ItemsDTO(); + itemsDTO.setOrderId(xhpcHistoryOrder.getHistoryOrderId()); + itemsDTO.setOrderNumber(xhpcHistoryOrder.getSerialNumber()); + itemsDTO.setOrderMoney(xhpcHistoryOrder.getActPrice()); + itemsDTO.setOrderTime(DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS, xhpcHistoryOrder.getCreateTime())); + itemsDTOList.add(itemsDTO); + } + InvoiceOrdersResponse invoiceOrdersResponse = new InvoiceOrdersResponse(); + invoiceOrdersResponse.setItems(itemsDTOList); + //查询该用户所有可以开发票的历史订单的数量 + Long allOrdersCount = xhpcHistoryOrderMapper.findAllOrdersByCondition(invoicedOrdersRequest, lockOrderNumberList); + invoiceOrdersResponse.setTotalItems(allOrdersCount); + return invoiceOrdersResponse; } /** diff --git a/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcHistoryOrderMapper.xml b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcHistoryOrderMapper.xml new file mode 100644 index 00000000..0e20c160 --- /dev/null +++ b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcHistoryOrderMapper.xml @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + history_order_id + , charging_station_id, charge_order_id, user_id, terminal_id, serial_number, + internet_serial_number, power_price_total, service_price_total, total_price, promotion_discount, + act_price, act_power_price, act_service_price, internet_commission, internet_svc_commission, + platform_commission, platform_svc_commisssion, operation_commission, operation_svc_commission, + start_soc, end_soc, reconciliation_status, sorting_status, `type`, `status`, del_flag, + create_time, create_by, update_time, update_by, remark, `state`, vin_normal, search_value, + operator_id_evcs, charge_model_evcs, connector_power_evcs, meter_value_end_evcs, + meter_value_start_evcs, operator_id3rdpty_evcs, start_time, stop_reason_evcs, total_power, + user_name_evcs, phone, rate_model_id + + + + + + diff --git a/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml index f1c4a559..abd34273 100644 --- a/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml +++ b/xhpc-modules/xhpc-invoice/src/main/resources/mapper/XhpcInvoiceMapHistoryOrderMapper.xml @@ -15,8 +15,10 @@ + + insert into xhpc_invoice_map_history_order (invoice_id, history_order_id, history_user_id, history_user_type, hisotry_serial_number, power_price_total, @@ -123,6 +125,17 @@ + + update xhpc_invoice_map_history_order + set lock_flag = 0 + where history_order_id in ( + (SELECT middle.history_order_id + from (select history_order_id + from xhpc_invoice_map_history_order + where invoice_id = #{invoiceId}) as middle + ) + ) + + \ No newline at end of file