diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java index 9eb231df5..06fa88ef6 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/OrderController.java @@ -15,6 +15,7 @@ import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.SettleOrderDTO; import com.jsowell.pile.dto.StopChargingDTO; import com.jsowell.pile.dto.UniAppQueryOrderDTO; +import com.jsowell.pile.vo.uniapp.OrderVO; import com.jsowell.pile.vo.uniapp.UniAppOrderVO; import com.jsowell.service.OrderService; import com.jsowell.service.PileRemoteService; @@ -27,6 +28,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; +import java.util.List; import java.util.Map; /** @@ -241,4 +243,26 @@ public class OrderController extends BaseController { logger.info("关闭支付未启动的订单 result:{}", response); return response; } + + /** + * 查询未开发票订单 + * 时间限制60天内 + */ + @PostMapping("/queryUninvoicedOrderList") + public RestApiResponse queryUninvoicedOrderList(HttpServletRequest request, @RequestBody QueryOrderDTO dto) { + logger.info("查询未开发票订单 param:{}", JSONObject.toJSONString(dto)); + RestApiResponse response; + try { + String memberId = getMemberIdByAuthorization(request); + if (StringUtils.isBlank(memberId)) { + throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR); + } + List list = orderService.queryUninvoicedOrderList(dto); + response = new RestApiResponse<>(ImmutableMap.of("list", list)); + } catch (Exception e){ + logger.error("查询未开发票订单 error", e); + response = new RestApiResponse<>("00300003", "查询未开发票订单异常"); + } + return response; + } } diff --git a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java index 4807c143f..056d9c5ac 100644 --- a/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java +++ b/jsowell-admin/src/main/java/com/jsowell/service/OrderService.java @@ -30,6 +30,7 @@ import com.jsowell.common.util.id.IdUtils; import com.jsowell.pile.domain.MemberTransactionRecord; import com.jsowell.pile.domain.OrderBasicInfo; import com.jsowell.pile.domain.OrderDetail; +import com.jsowell.pile.domain.OrderInvoiceRecord; import com.jsowell.pile.domain.OrderPayRecord; import com.jsowell.pile.domain.WxpayCallbackRecord; import com.jsowell.pile.dto.BasicPileDTO; @@ -40,6 +41,7 @@ import com.jsowell.pile.dto.PayOrderDTO; import com.jsowell.pile.dto.PayOrderSuccessCallbackDTO; import com.jsowell.pile.dto.PaymentScenarioDTO; import com.jsowell.pile.dto.QueryConnectorListDTO; +import com.jsowell.pile.dto.QueryInvoiceRecordDTO; import com.jsowell.pile.dto.QueryOrderDTO; import com.jsowell.pile.dto.SettleOrderDTO; import com.jsowell.pile.dto.StopChargingDTO; @@ -48,6 +50,7 @@ import com.jsowell.pile.dto.WeixinPayDTO; import com.jsowell.pile.service.IMemberBasicInfoService; import com.jsowell.pile.service.IMemberTransactionRecordService; import com.jsowell.pile.service.IOrderBasicInfoService; +import com.jsowell.pile.service.IOrderInvoiceRecordService; import com.jsowell.pile.service.IOrderPayRecordService; import com.jsowell.pile.service.IPileBillingTemplateService; import com.jsowell.pile.service.IPileStationInfoService; @@ -76,6 +79,7 @@ import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import java.math.BigDecimal; import java.text.ParseException; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; @@ -127,6 +131,9 @@ public class OrderService { @Autowired private IPileStationInfoService pileStationInfoService; + @Autowired + private IOrderInvoiceRecordService orderInvoiceRecordService; + @Autowired private RedisCache redisCache; @@ -975,4 +982,40 @@ public class OrderService { } return result; } + + public List queryUninvoicedOrderList(QueryOrderDTO dto) { + int i = 60; + + // 查询最近60天完成的订单 + LocalDateTime dateTime = LocalDateTime.now().plusDays(-i); + List orderList = orderBasicInfoService.getListByMemberIdAndOrderStatus(dto.getMemberId(), Lists.newArrayList("6"), dateTime); + + // 过滤掉订单金额为0的 + orderList = orderList.stream() + .filter(x -> x.getOrderAmount().compareTo(BigDecimal.ZERO) > 0) + .collect(Collectors.toList()); + + // 查询最近60天申请开票记录 + QueryInvoiceRecordDTO build = QueryInvoiceRecordDTO.builder() + .memberId(dto.getMemberId()) + .startTime(dateTime) + .build(); + List orderInvoiceRecords = orderInvoiceRecordService.selectInvoiceRecordList(build); + if (CollectionUtils.isEmpty(orderInvoiceRecords)) { + return orderList; + } + + // 排除掉已经申请过的订单 + List orderCodeList = Lists.newArrayList(); + for (OrderInvoiceRecord orderInvoiceRecord : orderInvoiceRecords) { + String orderCodes = orderInvoiceRecord.getOrderCodes(); + orderCodeList.addAll(Lists.newArrayList(StringUtils.split(orderCodes, ","))); + } + + orderList = orderList.stream() + .filter(x -> !orderCodeList.contains(x.getOrderCode())) + .collect(Collectors.toList()); + + return orderList; + } } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryInvoiceRecordDTO.java b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryInvoiceRecordDTO.java new file mode 100644 index 000000000..5d806a0a0 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/dto/QueryInvoiceRecordDTO.java @@ -0,0 +1,20 @@ +package com.jsowell.pile.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class QueryInvoiceRecordDTO { + private String memberId; + + private LocalDateTime startTime; + + private LocalDateTime endTime; +} diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java index bae3a1ecb..932e1e492 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderBasicInfoMapper.java @@ -135,9 +135,12 @@ public interface OrderBasicInfoMapper { * * @param memberId 会员id * @param orderStatusList 订单状态集合 + * @param dateTime * @return */ - List getListByMemberIdAndOrderStatus(@Param("memberId") String memberId, @Param("orderStatusList") List orderStatusList); + List getListByMemberIdAndOrderStatus(@Param("memberId") String memberId, + @Param("orderStatusList") List orderStatusList, + @Param("dateTime") LocalDateTime dateTime); /** * 将某订单修改为某状态 diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderInvoiceRecordMapper.java b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderInvoiceRecordMapper.java index dcb9310d2..c13c9d339 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderInvoiceRecordMapper.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/mapper/OrderInvoiceRecordMapper.java @@ -1,6 +1,7 @@ package com.jsowell.pile.mapper; import com.jsowell.pile.domain.OrderInvoiceRecord; +import com.jsowell.pile.dto.QueryInvoiceRecordDTO; import java.util.List; @@ -58,4 +59,6 @@ public interface OrderInvoiceRecordMapper { * @return 结果 */ public int deleteOrderInvoiceRecordByIds(Integer[] ids); + + List selectInvoiceRecordList(QueryInvoiceRecordDTO dto); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java index 0860f347a..d5f289876 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderBasicInfoService.java @@ -123,6 +123,8 @@ public interface IOrderBasicInfoService { */ List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList); + List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList, LocalDateTime dateTime); + /** * 结算订单退款和用户余额退款调这个方法 */ diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderInvoiceRecordService.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderInvoiceRecordService.java index e69fcb83b..cda371b78 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderInvoiceRecordService.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/IOrderInvoiceRecordService.java @@ -1,6 +1,7 @@ package com.jsowell.pile.service; import com.jsowell.pile.domain.OrderInvoiceRecord; +import com.jsowell.pile.dto.QueryInvoiceRecordDTO; import java.util.List; @@ -27,6 +28,8 @@ public interface IOrderInvoiceRecordService { */ public List selectOrderInvoiceRecordList(OrderInvoiceRecord orderInvoiceRecord); + List selectInvoiceRecordList(QueryInvoiceRecordDTO memberId); + /** * 新增申请开票 * diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 486f4fb9a..08ccb15a3 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -1159,7 +1159,12 @@ public class OrderBasicInfoServiceImpl implements IOrderBasicInfoService { */ @Override public List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList) { - return orderBasicInfoMapper.getListByMemberIdAndOrderStatus(memberId, orderStatusList); + return orderBasicInfoMapper.getListByMemberIdAndOrderStatus(memberId, orderStatusList, null); + } + + @Override + public List getListByMemberIdAndOrderStatus(String memberId, List orderStatusList, LocalDateTime dateTime) { + return orderBasicInfoMapper.getListByMemberIdAndOrderStatus(memberId, orderStatusList, dateTime); } /** diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java index 2c4da1d2f..169dc2a2e 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderInvoiceRecordServiceImpl.java @@ -2,6 +2,7 @@ package com.jsowell.pile.service.impl; import com.jsowell.common.util.DateUtils; import com.jsowell.pile.domain.OrderInvoiceRecord; +import com.jsowell.pile.dto.QueryInvoiceRecordDTO; import com.jsowell.pile.mapper.OrderInvoiceRecordMapper; import com.jsowell.pile.service.IOrderInvoiceRecordService; import org.springframework.beans.factory.annotation.Autowired; @@ -42,6 +43,11 @@ public class OrderInvoiceRecordServiceImpl implements IOrderInvoiceRecordService return orderInvoiceRecordMapper.selectOrderInvoiceRecordList(orderInvoiceRecord); } + @Override + public List selectInvoiceRecordList(QueryInvoiceRecordDTO dto) { + return orderInvoiceRecordMapper.selectInvoiceRecordList(dto); + } + /** * 新增申请开票 * diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml index 5adecd60d..727cf810f 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderBasicInfoMapper.xml @@ -747,6 +747,9 @@ #{orderStatus,jdbcType=VARCHAR} + + and t1.create_time = ]]> #{dateTime,jdbcType=VARCHAR} + order by t1.create_time desc diff --git a/jsowell-pile/src/main/resources/mapper/pile/OrderInvoiceRecordMapper.xml b/jsowell-pile/src/main/resources/mapper/pile/OrderInvoiceRecordMapper.xml index 0fa5c4ba8..0242138d2 100644 --- a/jsowell-pile/src/main/resources/mapper/pile/OrderInvoiceRecordMapper.xml +++ b/jsowell-pile/src/main/resources/mapper/pile/OrderInvoiceRecordMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -19,11 +19,18 @@ - - select id, member_id, order_codes, status, total_amount, total_service_amount, total_elec_amount, create_by, create_time, update_by, update_time, del_flag from order_invoice_record + + + id, member_id, order_codes, status, total_amount, total_service_amount, total_elec_amount, create_by, create_time, update_by, update_time, del_flag - and member_id = #{memberId} @@ -40,7 +47,7 @@ where id = #{id} - + insert into order_invoice_record member_id, @@ -70,7 +77,7 @@ - + update order_invoice_record member_id = #{memberId}, @@ -98,4 +105,20 @@ #{id} + + \ No newline at end of file