Browse Source

add:添加订单详情接口

luseweixiao 3 weeks ago
parent
commit
25b28e6d94

+ 48 - 0
src/main/java/com/sl/ms/web/enterprise/controller/OrderController.java

@@ -127,6 +127,54 @@ public class OrderController {
         return response;
     }
 
+    @PostMapping("/detail")
+    public ApiResponse<OrderResponse> getOrderDetail(
+            @RequestHeader(SZColdChainConstant.HEADER_SIGNATURE) String signature,
+            @RequestHeader(SZColdChainConstant.HEADER_NONCE) String nonce,
+            @Validated @RequestBody TransportInfoRequest transportInfoRequest) {
+
+        // todo:参数判断
+        if (ObjectUtil.isEmpty(transportInfoRequest.getEnterpriseId())) {
+            return ApiResponse.error(SZColdChainConstant.CODE_PARAM_FORMAT_ERROR, "enterpriseId不可为空");
+        }
+
+        if (ObjectUtils.allNull(transportInfoRequest.getTransportOrderId(), transportInfoRequest.getPartnerOrderCode())) {
+            return ApiResponse.error( SZColdChainConstant.CODE_PARAM_FORMAT_ERROR, "transportOrderId、partnerOrderCode不可同时为空");
+        }
+
+
+        Long enterpriseId = UserThreadLocal.getUserId();
+        EnterpriseWithSecretDTO enterprise = null;
+        try {
+            enterprise = enterpriseFeign.getByEnterpriseId(enterpriseId);
+            if (ObjectUtil.isEmpty(enterprise)) {
+                return ApiResponse.error(SZColdChainConstant.CODE_PARAM_FORMAT_ERROR,"无效的enterpriseId");
+            }
+        } catch (SLException e) {
+            throw e;
+        }
+
+        if (!transportInfoRequest.getEnterpriseId().equals(enterpriseId.toString())) {
+            return ApiResponse.error(SZColdChainConstant.CODE_PARAM_FORMAT_ERROR,"无效的enterpriseId");
+        }
+
+        ValidateVo validateVo = new ValidateVo();
+        validateVo.setNonce(nonce);
+        validateVo.setSignature(signature);
+        validateVo.setHttpMethod("POST");
+        validateVo.setHttpUrl("/enterprise/order/detail");
+        Map<String, Object> allNonNullFieldsSorted = ReflectUtil.getAllNonNullFieldsSorted(transportInfoRequest);
+        validateVo.setParams(allNonNullFieldsSorted);
+        validateVo.setSalt(enterprise.getSalt());
+        validateVo.setHmacSha256SecretKey(enterprise.getHmacSha256SecretKey());
+        if (!DEBUG) {
+            headersValidator.validate(validateVo);
+        }
+        // 业务处理
+        ApiResponse<OrderResponse> response = orderService.getOrderDetail(transportInfoRequest);
+        return response;
+    }
+
     @PostMapping("/transport-info")
     public ApiResponse<TransportInfoResponse> queryTransportInfo(
             @RequestHeader(SZColdChainConstant.HEADER_AUTHORIZATION) String authorization,

+ 1 - 0
src/main/java/com/sl/ms/web/enterprise/service/OrderService.java

@@ -16,6 +16,7 @@ import com.sl.ms.web.enterprise.vo.response.TransportInfoResponse;
  */
 public interface OrderService {
     ApiResponse<OrderResponse> createOrder(OrderRequest orderRequest);
+    ApiResponse<OrderResponse> getOrderDetail(TransportInfoRequest transportInfoRequest);
     ApiResponse<TransportInfoResponse> queryTransportInfo(TransportInfoRequest transportInfoRequest);
     ApiResponse<PrintResponse> getPrintInfo(PrintRequest printRequest, EnterpriseWithSecretDTO enterprise);
     ApiResponse<PrintResponse> getMultPrintInfo(MultPrintRequest printRequest, EnterpriseWithSecretDTO enterprise);

+ 111 - 4
src/main/java/com/sl/ms/web/enterprise/service/impl/OrderServiceImpl.java

@@ -8,16 +8,14 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.itheima.auth.sdk.dto.UserDTO;
 import com.sl.ms.base.api.common.AreaFeign;
+import com.sl.ms.base.api.common.AuthFeign;
 import com.sl.ms.base.domain.base.AreaDto;
 import com.sl.ms.base.domain.base.UserResponseDTO;
 import com.sl.ms.carriage.appi.MaterialFeign;
 import com.sl.ms.oms.api.CargoFeign;
 import com.sl.ms.oms.api.EnterpriseOrderFeign;
 import com.sl.ms.oms.api.OrderFeign;
-import com.sl.ms.oms.dto.CargoSaveDTO;
-import com.sl.ms.oms.dto.EnterpriseOrderDTO;
-import com.sl.ms.oms.dto.MailingSaveMultipleDTO;
-import com.sl.ms.oms.dto.OrderDTO;
+import com.sl.ms.oms.dto.*;
 import com.sl.ms.oms.enums.*;
 import com.sl.ms.trade.api.AgencyTradingFeign;
 import com.sl.ms.trade.enums.ReturnFeeTypeEnum;
@@ -34,6 +32,7 @@ import com.sl.ms.web.enterprise.utils.PrintApiUtils;
 import com.sl.ms.web.enterprise.utils.TransportOrderStatusUtils;
 import com.sl.ms.web.enterprise.vo.request.*;
 import com.sl.ms.web.enterprise.vo.response.*;
+import com.sl.ms.web.enterprise.vo.response.TransportInfoResponse;
 import com.sl.ms.work.api.PickupDispatchTaskFeign;
 import com.sl.ms.work.api.RetentionScanRecordFeign;
 import com.sl.ms.work.api.TransportOrderFeign;
@@ -119,6 +118,8 @@ public class OrderServiceImpl implements OrderService {
 
     @Resource
     MaterialFeign materialFeign;
+    @Autowired
+    private AuthFeign authFeign;
 
     @Override
     @GlobalTransactional
@@ -219,6 +220,20 @@ public class OrderServiceImpl implements OrderService {
 
         return ApiResponse.success(orderResponse);
     }
+
+    @Override
+    public ApiResponse<OrderResponse> getOrderDetail(TransportInfoRequest transportInfoRequest) {
+        EnterpriseOrderDTO enterpriseOrderDTO;
+        if (ObjectUtil.isNotEmpty(transportInfoRequest.getTransportOrderId())) {
+            enterpriseOrderDTO = enterpriseOrderFeign.getByTransportOrderId(transportInfoRequest.getTransportOrderId(), transportInfoRequest.getEnterpriseId());
+        } else {
+            enterpriseOrderDTO = enterpriseOrderFeign.getByPartnerOrderCode(transportInfoRequest.getPartnerOrderCode(), transportInfoRequest.getEnterpriseId());
+        }
+        OrderDTO orderDTO = orderFeign.findById(enterpriseOrderDTO.getOrderId());
+        OrderResponse response = orderDTO2OrderResponse2(orderDTO, enterpriseOrderDTO);
+        return ApiResponse.success(response);
+    }
+
     private AddressBookDTO saveSenderAddress(OrderRequest orderRequest, Long provinceId, Long cityId, Long countyId) {
         LocalDateTime now = LocalDateTime.now();
         AddressBookDTO addressBookDTO = AddressBookDTO.builder()
@@ -296,6 +311,10 @@ public class OrderServiceImpl implements OrderService {
         if (ObjectUtil.isNotEmpty(orderDTO.getReceiptType()) ) {
             orderResponse.setReceiptOrderId("HD" + orderDTO.getTransportOrderId());
         }
+        // 新加的字段
+        OrganDTO organDTO = organFeign.queryById(orderDTO.getSendAgencyId());
+        orderResponse.setSenderAgencyNumber(organDTO.getOrganNumber());
+        orderResponse.setCusomerCode(orderRequest.getCustomerCode());
 
         List<OrderResponse.SubTransportOrder> subTransportOrderList = new ArrayList<>();
         for (Integer i = 1; i <= orderRequest.getQuantity(); i++) {
@@ -309,6 +328,94 @@ public class OrderServiceImpl implements OrderService {
         return orderResponse;
     }
 
+    private OrderResponse orderDTO2OrderResponse2(OrderDTO orderDTO, EnterpriseOrderDTO enterpriseOrderDTO) {
+        OrderResponse orderResponse = BeanUtil.toBean(orderDTO, OrderResponse.class);
+        List<OrganDTO> organDTOS = organFeign.findAll("");
+        Map<Long, OrganDTO> organDTOMap = new HashMap<>(organDTOS.size());
+        for (OrganDTO organDTO : organDTOS) {
+            organDTOMap.put(organDTO.getId(), organDTO);
+        }
+
+        OrganDTO senderAgency = organDTOMap.get(orderDTO.getSendAgencyId());
+        OrganDTO receiverAgency = organDTOMap.get(orderDTO.getReceiveAgencyId());
+        OrganDTO senderParentAgency = organDTOMap.get(senderAgency.getParentId());
+        OrganDTO receiverParentAgency = organDTOMap.get(receiverAgency.getParentId());
+
+        orderResponse.setPayMethod(orderDTO.getPaymentMethod());
+        orderResponse.setPartnerOrderCode(enterpriseOrderDTO.getPartnerOrderCode());
+        orderResponse.setReceiverParentAgencyName(receiverParentAgency.getName());
+        orderResponse.setSenderParentAgencyName(senderParentAgency.getName());
+        orderResponse.setSenderAgencyName(senderAgency.getName());
+        orderResponse.setReceiverAgencyName(receiverAgency.getName());
+
+        List<OrderCargoDTO> cargoSaveDTOList = cargoFeign.findByOrderId(orderDTO.getId());
+        Integer quantity = 0;
+        for (OrderCargoDTO orderCargoDTO : cargoSaveDTOList) {
+            quantity += orderCargoDTO.getQuantity();
+        }
+        OrderCargoDTO cargoDTO = cargoSaveDTOList.get(0);
+
+        List<Long> areaIds = new ArrayList<>();
+        areaIds.add(orderDTO.getSenderProvinceId());
+        areaIds.add(orderDTO.getSenderCityId());
+        areaIds.add(orderDTO.getSenderCountyId());
+        areaIds.add(orderDTO.getReceiverProvinceId());
+        areaIds.add(orderDTO.getReceiverCityId());
+        areaIds.add(orderDTO.getReceiverCountyId());
+        Map<Long, AreaDto> areaDtoMap = new HashMap<>();
+        List<AreaDto> areaDtoList = areaFeign.findBatch(areaIds);
+        areaDtoList.forEach(areaDto -> {
+            areaDtoMap.put(areaDto.getId(), areaDto);
+        });
+        orderResponse.setTransportOrderId(enterpriseOrderDTO.getTransportOrderId());
+        orderResponse.setMark(ObjectUtil.isNull(orderDTO.getMark()) ? "" : orderDTO.getMark() );
+        orderResponse.setGoodsName(cargoDTO.getName());
+        orderResponse.setCargoBarcode(ObjectUtil.isNull(cargoDTO.getCargoBarcode()) ? "" : cargoDTO.getCargoBarcode() );
+        orderResponse.setQuantity(quantity);
+        orderResponse.setTemperatureRegion(orderDTO.getTemperatureRegion());
+        orderResponse.setTotalVolume(cargoDTO.getTotalVolume());
+        orderResponse.setTotalWeight(cargoDTO.getTotalWeight());
+        orderResponse.setComputedWeight(cargoDTO.getComputeWeight().doubleValue());
+        if (areaDtoMap.get(orderDTO.getSenderProvinceId()) != null) {
+            orderResponse.setSenderProvince(areaDtoMap.get(orderDTO.getSenderProvinceId()).getOriginalName());
+        }
+        if (areaDtoMap.get(orderDTO.getSenderCityId()) != null) {
+            orderResponse.setSenderCity(areaDtoMap.get(orderDTO.getSenderCityId()).getOriginalName());
+        }
+        if (areaDtoMap.get(orderDTO.getSenderCountyId()) != null) {
+            orderResponse.setSenderCounty(areaDtoMap.get(orderDTO.getSenderCountyId()).getOriginalName());
+        }
+        if (areaDtoMap.get(orderDTO.getReceiverProvinceId()) != null) {
+            orderResponse.setReceiverProvince(areaDtoMap.get(orderDTO.getReceiverProvinceId()).getOriginalName());
+        }
+        if (areaDtoMap.get(orderDTO.getReceiverCityId()) != null) {
+            orderResponse.setReceiverCity(areaDtoMap.get(orderDTO.getReceiverCityId()).getOriginalName());
+        }
+        if (areaDtoMap.get(orderDTO.getReceiverCountyId()) != null) {
+            orderResponse.setReceiverCounty(areaDtoMap.get(orderDTO.getReceiverCountyId()).getOriginalName());
+        }
+
+        OrganDTO organDTO = organFeign.queryById(orderDTO.getSendAgencyId());
+        orderResponse.setSenderAgencyNumber(organDTO.getOrganNumber());
+        orderResponse.setCusomerCode(enterpriseOrderDTO.getCustomerCode());
+
+        orderResponse.setSenderAgencyId(senderAgency.getId());
+        if (ObjectUtil.isNotEmpty(orderDTO.getReceiptType()) ) {
+            orderResponse.setReceiptOrderId("HD" + enterpriseOrderDTO.getTransportOrderId());
+        }
+
+        List<OrderResponse.SubTransportOrder> subTransportOrderList = new ArrayList<>();
+        for (Integer i = 1; i <= quantity; i++) {
+            String subTransportOrderId = generateSubOrderNumber(enterpriseOrderDTO.getTransportOrderId(), i, quantity);
+            OrderResponse.SubTransportOrder subTransportOrder = new OrderResponse.SubTransportOrder();
+            subTransportOrder.setSubIndex(i);
+            subTransportOrder.setSubTransportOrderId(subTransportOrderId);
+            subTransportOrderList.add(subTransportOrder);
+        }
+        orderResponse.setSubTransportOrderList(subTransportOrderList);
+        return orderResponse;
+    }
+
     private   String generateSubOrderNumber(String mainOrderNumber, int itemIndex, int totalItems) {
         // 检查输入是否合理
 //        if (mainOrderNumber == null || mainOrderNumber.isEmpty() || itemIndex < 1 || itemIndex > 999 || totalItems < 1 || totalItems > 999) {

+ 3 - 0
src/main/java/com/sl/ms/web/enterprise/vo/response/OrderResponse.java

@@ -53,6 +53,9 @@ public class OrderResponse {
     private String orderChannel;
     private List<SubTransportOrder> subTransportOrderList;
     private Long senderAgencyId;
+    private String senderAgencyNumber;
+    private String cusomerCode;
+
 
     @Data
     public static class SubTransportOrder {