提交 a8c4e09c authored 作者: 刘海泉's avatar 刘海泉

Merge remote-tracking branch 'origin/v20.8_add_sub_weight_20240805' into dev

# Conflicts: # performance-api/src/main/java/com/clx/performance/feign/PerformanceFeign.java # performance-api/src/main/java/com/clx/performance/vo/pc/OrderGoodsVO.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderGoodsDaoImpl.java
......@@ -154,4 +154,10 @@ public interface PerformanceFeign {
@PostMapping(value = {"clx-performance/feign/orderGoods/cancelOrderGoods"})
Result<BigDecimal> cancelOrderGoods(@RequestBody @Validated CancelOrderGoodsParam param);
@GetMapping(value = {"clx-performance/feign/order/weight/getOrderResidueWeight"})
Result<BigDecimal> getOrderResidueWeight();
}
......@@ -197,4 +197,8 @@ public class OrderGoodsVO {
public String getSendWaitModeMsg() {
return OrderGoodsEnum.SendWaitModeEnum.getMsgByCode(sendWaitMode);
}
@ApiModelProperty("当前货单总吨数是否超过总拉运量 1:超过 ")
private Integer overOrderWeight;
}
\ No newline at end of file
package com.clx.performance.controller.feign;
import com.clx.performance.service.OrderWeightService;
import com.clx.performance.vo.feign.OrderExtractWeightVO;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
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 javax.validation.constraints.NotBlank;
import java.math.BigDecimal;
/**
* @ClassName OrderWeightController
* @Description
* @Author kavin
* @Date 2024/8/5 11:45
* @Version 1.0
*/
@Slf4j
@RestController
@RequestMapping(value="/feign/order/weight")
@Validated
@Api(tags = "订单量查询")
@AllArgsConstructor
public class OrderWeightFeignController {
private final OrderWeightService orderWeightService;
@ApiOperation(value = "查询订单可提取量",notes = "<br>By:刘海泉")
@GetMapping("/getOrderCanExtractWeight")
public Result<OrderExtractWeightVO> getOrderCanExtractWeight(@RequestParam("orderNo")
@NotBlank(message = "订单编号不能为空") String orderNo) {
return Result.ok(orderWeightService.getOrderCanExtractWeight(orderNo));
}
@ApiOperation(value = "查询订单剩余量",notes = "<br>By:刘海泉")
@GetMapping("/getOrderResidueWeight")
public Result<BigDecimal> getOrderResidueWeight(@RequestParam("orderNo")
@NotBlank(message = "订单编号不能为空") String orderNo) {
return Result.ok(orderWeightService.getOrderResidueWeight(orderNo));
}
}
......@@ -2,6 +2,7 @@ package com.clx.performance.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.mapper.OrderGoodsMapper;
import com.clx.performance.model.OrderGoods;
......@@ -115,4 +116,6 @@ public interface OrderGoodsDao extends BaseDao<OrderGoodsMapper, OrderGoods, Int
void batchUpdateOrderGoodsPaying(List<OrderGoods> updateOrderGoods);
void batchCancelOrderGoodsWeight(List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
}
......@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.mapper.OrderGoodsMapper;
......@@ -325,4 +326,9 @@ public class OrderGoodsDaoImpl extends BaseDaoImpl<OrderGoodsMapper, OrderGoods,
baseMapper.batchCancelOrderGoodsWeight(cancelOrderGoodsList);
}
@Override
public List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList) {
return baseMapper.calcOrderGoodsExtractWeightByOrderNoList(orderNoList);
}
}
package com.clx.performance.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.math.BigDecimal;
/**
* @ClassName OrderExtractWeightDTO
* @Description
* @Author kavin
* @Date 2024/8/8 11:47
* @Version 1.0
*/
@Getter
@Setter
public class OrderExtractWeightDTO {
@ApiModelProperty("订单编号")
private String orderNo;
@ApiModelProperty("已提取吨数")
private BigDecimal extractWeight;
}
......@@ -5,6 +5,7 @@ import com.msl.common.base.Optional;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
public interface OrderService {
......@@ -14,4 +15,8 @@ public interface OrderService {
Optional<List<String>> getMonthSameLineOrderList(String orderNo);
Optional<Map<String,FeignOrderInfoVO>> queryListOrderByOrderNoList(List<String> orderNoList);
}
......@@ -10,6 +10,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
......@@ -31,4 +32,11 @@ public class OrderServiceImpl implements OrderService {
.filter(Result::succeed)
.map(Result::getData);
}
@Override
public Optional<Map<String,FeignOrderInfoVO>> queryListOrderByOrderNoList(List<String> orderNoList) {
return Optional.ofNullable(orderFeign.queryListOrderByOrderNoList(orderNoList))
.filter(Result::succeed)
.map(Result::getData);
}
}
......@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dto.CancelOrderGoodsWeightDTO;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsCancelWeightDTO;
import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderGoodsFleetOpenTruck;
......@@ -115,4 +116,8 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@UpdateProvider(type = OrderGoodsSqlProvider.class, method = "batchCancelOrderGoodsWeight")
void batchCancelOrderGoodsWeight(@Param("cancelOrderGoodsList") List<OrderGoodsCancelWeightDTO> cancelOrderGoodsList);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "calcOrderGoodsExtractWeightByOrderNoList")
List<OrderExtractWeightDTO> calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList);
}
......@@ -6,11 +6,13 @@ import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.order.enums.InvoicingCompanyEnum;
import com.clx.order.enums.ResultEnum;
import com.clx.order.enums.UpdateEnum;
import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.OrderCancelReasonParam;
import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO;
import com.clx.performance.component.GoodsOrderTruckRecordComponent;
......@@ -18,6 +20,7 @@ import com.clx.performance.component.OrderCancelComponent;
import com.clx.performance.component.OrderGoodsStatusLazyComponent;
import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.*;
import com.clx.performance.dto.OrderExtractWeightDTO;
import com.clx.performance.dto.OrderGoodsBindTruckNumDTO;
import com.clx.performance.dto.OrderGoodsCancelDTO;
import com.clx.performance.enums.*;
......@@ -26,6 +29,7 @@ import com.clx.performance.enums.settle.SettlementOwnerEnum;
import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.model.*;
import com.clx.performance.param.app.AppGoodsOrderSearchParam;
import com.clx.performance.param.app.OrderGoodsListPageParam;
......@@ -133,6 +137,9 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
@Autowired
OrderWeightService orderWeightService;
@Autowired
OrderService orderService;
private static Map<Integer, Consumer<OrderGoodsCancelDTO>> orderGoodsCancelMap = new HashMap<>();
......@@ -200,9 +207,15 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
IPage<OrderGoodsVO> page = orderGoodsDao.pageOrderGoodsList(param);
if(CollectionUtils.isNotEmpty(page.getRecords())){
List<String> fleetNoList = page.getRecords().stream()
.filter(item->Objects.equals(item.getPendingOrderWay(),PendingOrderWayStatusEnum.Status.FLEET_DX.getCode()))
.map(OrderGoodsVO :: getOrderGoodsNo).collect(Collectors.toList());
List<String> fleetNoList = new ArrayList<>();
List<String> orderNoList = new ArrayList<>();
for (OrderGoodsVO record : page.getRecords()) {
if(Objects.equals(record.getPendingOrderWay(),PendingOrderWayStatusEnum.Status.FLEET_DX.getCode())){
fleetNoList.add(record.getOrderGoodsNo());
}
orderNoList.add(record.getOrderNo());
}
if(CollectionUtils.isNotEmpty(fleetNoList)){
List<OrderGoodsBindTruckNumDTO> bindTruckNumList = orderGoodsTruckBindDao.queryOrderGoodsTruckNum(fleetNoList);
......@@ -210,6 +223,27 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
Collectors.toMap(OrderGoodsBindTruckNumDTO::getOrderGoodsNo,OrderGoodsBindTruckNumDTO :: getTruckNum));
page.getRecords().forEach(item->item.setDispatchedOrders(map.get(item.getOrderGoodsNo())));
}
Optional<Map<String, FeignOrderInfoVO>> orderListOption = orderService.queryListOrderByOrderNoList(orderNoList);
if(!orderListOption.isPresent()){
log.warn("通过订单号批量查询订单信息失败,失败原因");
throw new ServiceSystemException(ResultEnum.DATA_ERROR,"查询货单对应的订单信息失败");
}
Map<String, FeignOrderInfoVO> orderInfoMap = orderListOption.get();
List<OrderExtractWeightDTO> list = orderGoodsDao.calcOrderGoodsExtractWeightByOrderNoList(orderNoList);
Map<String, BigDecimal> orderExtractWeightMap = list.stream().collect(
Collectors.toMap(OrderExtractWeightDTO::getOrderNo, OrderExtractWeightDTO::getExtractWeight));
page.getRecords().forEach(item->{
FeignOrderInfoVO orderInfo = orderInfoMap.get(item.getOrderNo());
BigDecimal orderExtractWeight = orderExtractWeightMap.get(item.getOrderNo());
if(Objects.nonNull(orderInfo) && Objects.nonNull(orderExtractWeight)){
if(orderExtractWeight.compareTo(orderInfo.getTransportWeight()) > 0 ){
item.setOverOrderWeight(1);
}
}
});
}
return page;
}
......
......@@ -407,4 +407,19 @@ public class OrderGoodsSqlProvider {
}
return sj.toString();
}
String calcOrderGoodsExtractWeightByOrderNoList(List<String> orderNoList){
String sql = new SQL() {{
SELECT("order_no,sum(extract_weight)");
FROM("order_goods");
StringJoiner sj = new StringJoiner(",","order_no in (",")");
orderNoList.forEach(item -> sj.add("'"+item+"'"));
WHERE(sj.toString());
GROUP_BY("order_no");
}}.toString();
return sql;
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论