Просмотр исходного кода

销售订单-完结订单修改
mongodb字段增加

lengfaqiang 2 лет назад
Родитель
Сommit
d80231af43

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -174,7 +174,7 @@ public class LogisticsConsignmentController {
      */
     @RequestMapping(value = "/sellLogisticsConsignment", method = RequestMethod.POST)
     public HttpResult sellLogisticsConsignment(@Valid @RequestBody LogisticsConsignmentParam logisticsConsignmentParam) {
-        log.info("销售订单传递参数信息:{}", JSONObject.toJSONString(logisticsConsignmentParam));
+        log.info("销售订单-物流托运生成托运订单 传递参数信息:{}", JSONObject.toJSONString(logisticsConsignmentParam));
         try {
             return logisticsConsignmentService.sellLogisticsConsignment(logisticsConsignmentParam);
         } catch (Exception e) {

+ 8 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -13,6 +13,7 @@ import com.sckw.transport.model.vo.SubcontractConsignmentVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
 
@@ -150,4 +151,11 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
      * @return
      */
     int selectMaxLevel(@Param("id") String id);
+
+    /**
+     * 根据贸易订单id统计委派量-实际装货量-实际卸货量
+     * @param tOrderId
+     * @return
+     */
+    Map<String, BigDecimal> countAmountByTradeOrderId(@Param("tOrderId") Long tOrderId);
 }

+ 40 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -27,6 +27,7 @@ import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
 import com.sckw.order.api.model.AddressInfoDetail;
+import com.sckw.order.api.model.CompleteLogisticsOrderParam;
 import com.sckw.order.api.model.CreateOrCancelLogisticsOrderParam;
 import com.sckw.order.api.model.OrderDetailRes;
 import com.sckw.product.api.dubbo.GoodsInfoService;
@@ -181,6 +182,18 @@ public class LogisticsConsignmentService {
         insertLogisticsOrderAddress(bo, orderId);
         insertLogisticsOrderTrack(bo, orderId, orderStatus);
         sendMongoDB(lOrderNo, orderId, bo, tradeOrder, orderStatus);
+
+        /**将生成的分配量->贸易订单*/
+        CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+        param.setTOrderId(Long.valueOf(bo.getTOrderId()));
+        param.setEntrustAmount(BigDecimal.valueOf(bo.getCarryingCapacity()));
+        param.setUpdateBy(LoginUserHolder.getUserId());
+        param.setUpdateByName(LoginUserHolder.getUserName());
+        HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+        if (httpResult.getCode() != HttpStatus.SUCCESS_CODE){
+            log.info("{}生成物流托运失败!,返回信息:{}",bo.getTOrderNo(),JSONObject.toJSONString(httpResult));
+            throw new BusinessException("{}生成物流托运失败!",bo.getTOrderNo());
+        }
     }
 
     /**
@@ -1048,9 +1061,35 @@ public class LogisticsConsignmentService {
                 BigDecimal subtract = kwtLogisticsOrder.getAmount().subtract(kwtLogisticsOrder.getTotalLoadAmount());
                 updateLogisticOrderAndTrack(kwtLogisticsOrder.getId(), orderFinishDTO, subtract);
                 //修改mongodb的数据
-                updateMongoDbByLogisticsOrder(kwtLogisticsOrder,orderFinishDTO);
+                updateMongoDbByLogisticsOrder(kwtLogisticsOrder, orderFinishDTO);
             });
         }
+        //数据推送至贸易订单
+        CompleteLogisticsOrderParam tradeOrder = new CompleteLogisticsOrderParam();
+        //获取实际装货量-实际卸货量
+        Map<String, BigDecimal> map = kwtLogisticsOrderMapper.countAmountByTradeOrderId(logisticsOrder.getTOrderId());
+        //获取是否订单已经全部处理完成
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        List<KwtLogisticsOrder> logisticsOrders = kwtLogisticsOrderMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getTOrderId, logisticsOrder.getTOrderId())
+                .in(KwtLogisticsOrder::getStatus, statusList));
+        if (org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
+            tradeOrder.setIsAllComplete(true);
+        }
+        tradeOrder.setTOrderId(logisticsOrder.getTOrderId());
+        tradeOrder.setActualLoadAmount(map.get("totalLoadAmount"));
+        tradeOrder.setActualUnloadAmount(map.get("totalUnloadAmount"));
+        tradeOrder.setUpdateBy(LoginUserHolder.getUserId());
+        tradeOrder.setUpdateByName(LoginUserHolder.getUserName());
+        HttpResult httpResult = tradeOrderInfoService.completeLogisticsOrder(tradeOrder);
+        if (httpResult.getCode() != HttpStatus.SUCCESS_CODE){
+            log.info("贸易订单手动完结订单异常,传递信息:{},返回信息:{}",JSONObject.toJSONString(tradeOrder),JSONObject.toJSONString(httpResult));
+            throw new BusinessException("单据完结出现错误!");
+        }
         //todo 直接订单完结-不递归操作
 //
 //        //存在子集

+ 20 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -518,4 +518,24 @@
         WHERE del_flag = 0
           AND FIND_IN_SET(#{id}, pids)
     </select>
+
+    <select id="countAmountByTradeOrderId" resultType="java.util.Map">
+        SELECT
+            SUM(
+                    IFNULL( unload_amount, 0 )) as unloadAmount,
+            SUM(
+                    IFNULL( load_amount, 0 )) as loadAmount,
+            SUM(
+                    IFNULL( total_load_amount, 0 )) AS totalLoadAmount,
+            SUM(
+                    IFNULL( total_unload_amount, 0 )) AS totalUnloadAmount
+        FROM
+            kwt_logistics_order
+        WHERE
+            del_flag = 0
+          AND t_order_id = #{tOrderId}
+          AND `status`  IN (
+            8
+            )
+    </select>
 </mapper>