| package com.mzl.flower.web.supplier; | 
|   | 
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
| import com.mzl.flower.base.BaseController; | 
| import com.mzl.flower.base.R; | 
| import com.mzl.flower.base.ReturnDataDTO; | 
| import com.mzl.flower.constant.Constants; | 
| import com.mzl.flower.dto.request.payment.DeliveryOrderArriveDTO; | 
| import com.mzl.flower.dto.request.payment.DeliveryOrderQueryDTO; | 
| import com.mzl.flower.dto.request.payment.PostQueryDTO; | 
| import com.mzl.flower.dto.response.payment.*; | 
| import com.mzl.flower.dto.response.supplier.SupplierOrderDTO; | 
| import com.mzl.flower.service.payment.DeliveryOrderService; | 
| import io.swagger.annotations.Api; | 
| import io.swagger.annotations.ApiImplicitParam; | 
| import io.swagger.annotations.ApiImplicitParams; | 
| import io.swagger.annotations.ApiOperation; | 
| import lombok.extern.slf4j.Slf4j; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.http.ResponseEntity; | 
| import org.springframework.validation.annotation.Validated; | 
| import org.springframework.web.bind.annotation.*; | 
|   | 
| import java.time.LocalDate; | 
| import java.time.LocalDateTime; | 
| import java.util.List; | 
|   | 
| @RestController | 
| @RequestMapping("/api/supplier/delivery") | 
| @Api(value = "配送管理-花农(供应商)", tags = "配送管理-花农(供应商)") | 
| @Validated | 
| @Slf4j | 
| public class DeliverySupplierController extends BaseController { | 
|   | 
|     @Autowired | 
|     private DeliveryOrderService deliveryOrderService; | 
|   | 
|     @GetMapping("/list") | 
|     @ApiOperation(value = "获取配送单列表") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderListDTO>>> selectOrderList(Page page | 
|             , DeliveryOrderQueryDTO dto){ | 
|         LocalDate localDate = deliveryOrderService.parseLocalDate(dto.getDate()); | 
|         if(localDate != null){ | 
|             LocalDateTime endDate = localDate.atTime(17, 0, 0); | 
|             LocalDateTime startDate = endDate.plusDays(-1); | 
|             dto.setStartDate(startDate); | 
|             dto.setEndDate(endDate); | 
|         } | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDeliveryOrderList(page, dto)); | 
|     } | 
|   | 
|     @GetMapping("/list/month") | 
|     @ApiOperation(value = "获取当月配送单列表") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderListDTO>>> selectOrderListMonth(Page page | 
|             , DeliveryOrderQueryDTO dto){ | 
|         LocalDateTime ffPm = LocalDate.now().withDayOfMonth(1).atTime(17, 0, 0).plusDays(-1); | 
|         dto.setStartDate(ffPm); | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDeliveryOrderList(page, dto)); | 
|     } | 
|   | 
|     @GetMapping("/list/today") | 
|     @ApiOperation(value = "获取今日配送单列表") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderListDTO>>> selectOrderTodayList(Page page | 
|             , DeliveryOrderQueryDTO dto){ | 
|         LocalDateTime now = LocalDateTime.now(); | 
|         LocalDateTime towAm = LocalDate.now().atTime(2, 0, 0); | 
|         LocalDateTime fivePm = LocalDate.now().atTime(17, 0, 0); | 
|         if(now.isAfter(towAm)){ | 
|             dto.setStartDate(fivePm.plusDays(-1)); | 
|             dto.setEndDate(fivePm); | 
|         } else { | 
|             dto.setStartDate(fivePm.plusDays(-2)); | 
|             dto.setEndDate(fivePm.plusDays(-1)); | 
|         } | 
|   | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDeliveryOrderList(page, dto)); | 
|     } | 
|   | 
|     @GetMapping("/list/yesterday") | 
|     @ApiOperation(value = "获取昨日配送单列表") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderListDTO>>> selectOrderYesterdayList(Page page | 
|             , DeliveryOrderQueryDTO dto){ | 
|         LocalDateTime now = LocalDateTime.now(); | 
|         LocalDateTime towAm = LocalDate.now().atTime(2, 0, 0); | 
|         LocalDateTime fivePm = LocalDate.now().atTime(17, 0, 0); | 
|         if(now.isAfter(towAm)){ | 
|             dto.setStartDate(fivePm.plusDays(-2)); | 
|             dto.setEndDate(fivePm.plusDays(-1)); | 
|         } else { | 
|             dto.setStartDate(fivePm.plusDays(-3)); | 
|             dto.setEndDate(fivePm.plusDays(-2)); | 
|         } | 
|   | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDeliveryOrderList(page, dto)); | 
|     } | 
|   | 
|     @GetMapping("/list/items") | 
|     @ApiOperation(value = "获取配送单明细") | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "id", value = "配送单id", required = true, dataType = "String", paramType = "query") | 
|     }) | 
|     public ResponseEntity<ReturnDataDTO<List<DeliveryOrderItemListDTO>>> getDeliveryOrderItems(String id){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getDeliveryOrderItems(id)); | 
|     } | 
|   | 
|     @GetMapping("/list/items/view") | 
|     @ApiOperation(value = "获取商品详情") | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "id", value = "配送物品id", required = true, dataType = "String", paramType = "query") | 
|     }) | 
|     public ResponseEntity<ReturnDataDTO<DeliveryOrderItemDTO>> getDeliveryOrderItem(String id){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getSupplierDeliveryOrderItem(id)); | 
|     } | 
|   | 
|     @PostMapping("/list/items/views") | 
|     @ApiOperation(value = "获取商品详情列表") | 
|     public ResponseEntity<ReturnDataDTO<List<DeliveryOrderItemDTO>>> getSupplierDeliveryOrderItems(@RequestBody PostQueryDTO dto){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getSupplierDeliveryOrderItems(dto)); | 
|     } | 
|   | 
|     @PostMapping("/list/arrive") | 
|     @ApiOperation(value = "确认入位") | 
|     public ResponseEntity<ReturnDataDTO> arrived(@RequestBody DeliveryOrderArriveDTO dto) { | 
|         deliveryOrderService.arrived(dto); | 
|         return returnData(R.SUCCESS.getCode(), null); | 
|     } | 
|   | 
|     @GetMapping("/statistics") | 
|     @ApiOperation(value = "统计数据") | 
|     public ResponseEntity<ReturnDataDTO<SupplierOrderDTO>> getCurrentSupplierOrderStatistics(){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getCurrentSupplierOrderStatistics()); | 
|     } | 
|   | 
|     @GetMapping("/mine/list") | 
|     @ApiOperation(value = "我的配送单总计") | 
|     public ResponseEntity<ReturnDataDTO<List<DeliveryOrderStatisticsDTO>>> selectSupplierDoStatistics(Page page){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectSupplierDoStatistics(page)); | 
|     } | 
|   | 
|     @GetMapping("/mine/list/flower") | 
|     @ApiOperation(value = "我的配送单配送商品统计列表") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderItemStatisticsDTO>>> selectDoItemListByTime(Page page | 
|             , String day){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectDoItemListByTime(page, day)); | 
|     } | 
|   | 
|     @GetMapping("/mine/list/settlement") | 
|     @ApiOperation(value = "我的配送单结算明细") | 
|     public ResponseEntity<ReturnDataDTO<Page<DeliveryOrderItemSettlementDTO>>> selectSettlementListByTime(Page page | 
|             , String day){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.selectSettlementListByTime(page, day)); | 
|     } | 
|   | 
|     @GetMapping("/mine/list/check/info/reduce") | 
|     @ApiOperation(value = "降级操作详情") | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "orderItemId", value = "订单商品id", required = true, dataType = "String", paramType = "query") | 
|     }) | 
|     public ResponseEntity<ReturnDataDTO<OrderItemCheckReduceDTO>> getReduceCheck(String orderItemId){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getReduceCheck(orderItemId)); | 
|     } | 
|   | 
|     @GetMapping("/mine/list/check/info/replace") | 
|     @ApiOperation(value = "补货操作详情") | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "orderItemId", value = "订单商品id", required = true, dataType = "String", paramType = "query") | 
|     }) | 
|     public ResponseEntity<ReturnDataDTO<OrderItemCheckNumDTO>> getReplaceCheck(String orderItemId){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getOtherCheck(orderItemId | 
|                 , Constants.CHECK_TYPE.replace.name(), true)); | 
|     } | 
|   | 
|     @GetMapping("/mine/list/check/info/lack") | 
|     @ApiOperation(value = "缺货操作详情") | 
|     @ApiImplicitParams({ | 
|             @ApiImplicitParam(name = "orderItemId", value = "订单商品id", required = true, dataType = "String", paramType = "query") | 
|     }) | 
|     public ResponseEntity<ReturnDataDTO<OrderItemCheckNumDTO>> getLackCheck(String orderItemId){ | 
|         return returnData(R.SUCCESS.getCode(), deliveryOrderService.getOtherCheck(orderItemId | 
|                 , Constants.CHECK_TYPE.lack.name(), true)); | 
|     } | 
| } |