Ver Fonte

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

lengfaqiang há 2 anos atrás
pai
commit
e499c81715

+ 5 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwTradeOrder.java

@@ -97,6 +97,11 @@ public class SckwTradeOrder {
      */
     private BigDecimal actualAmount;
 
+    /**
+     * 是否关联对账单:0未关联,1已关联
+     */
+    private Integer associateStatement;
+
     /**
      * 订单创建来源类型(1采购下单/2销售代客下单)
      */

+ 10 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -46,6 +46,7 @@ public interface TradeOrderInfoService {
      * @return: com.sckw.core.web.response.HttpResult
      */
     HttpResult createOrCancelLogisticsOrder(CreateOrCancelLogisticsOrderParam param);
+
     /**
      * @desc: 完结物流订单
      * @author: yzc
@@ -63,4 +64,13 @@ public interface TradeOrderInfoService {
      * @return: void
      */
     void contractSignCompleted(ContractSignCompletedParam param);
+
+    /**
+     * @desc: 更新订单是否关联对账单
+     * @author: yzc
+     * @date: 2023-08-09 14:24
+     * @Param param:
+     * @return: void
+     */
+    void updateAssociateStatement(UpdateAssociateStatementParam param);
 }

+ 5 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java

@@ -107,6 +107,11 @@ public class OrderDetailRes implements Serializable {
      */
     private BigDecimal actualAmount;
 
+    /**
+     * 是否关联对账单:0未关联,1已关联
+     */
+    private Integer associateStatement;
+
     /**
      * 订单创建来源类型(1采购下单/2销售代客下单)
      */

+ 42 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/UpdateAssociateStatementParam.java

@@ -0,0 +1,42 @@
+package com.sckw.order.api.model;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @desc: 更新订单是否关联对账单
+ * @author: yzc
+ * @date: 2023-08-09 14:34
+ */
+@Getter
+@Setter
+@ToString
+public class UpdateAssociateStatementParam implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6909518527687999256L;
+
+    /**
+     * 订单id
+     */
+    private Long tOrderId;
+
+    /**
+     * 是否关联对账单:0未关联,1已关联
+     */
+    private Integer associateStatement;
+
+    /**
+     * 更新用户id 需传,订单状态变化记录需要
+     */
+    private Long updateBy;
+
+    /**
+     * 更新者姓名 需传,订单状态变化记录需要
+     */
+    private String updateByName;
+}

+ 30 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -241,6 +241,36 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         }
     }
 
+    @Override
+    public void updateAssociateStatement(UpdateAssociateStatementParam param) {
+        log.info("更新订单是否关联对账单入参:{}", JSON.toJSONString(param));
+        Long tOrderId = param.getTOrderId();
+        Integer associateStatement = param.getAssociateStatement();
+        Long updateBy = param.getUpdateBy();
+        String updateByName = param.getUpdateByName();
+        if (Objects.isNull(updateBy) || StringUtils.isBlank(updateByName)) {
+            throw new BusinessException("操作人信息不能为空!");
+        }
+        if (Objects.isNull(tOrderId) || Objects.isNull(associateStatement)) {
+            throw new BusinessException("更新订单是否关联对账单参数缺失!");
+        }
+        KwoTradeOrder order = kwoTradeOrderService.getById(tOrderId);
+        if (Objects.isNull(order)) {
+            throw new BusinessException("订单不存在!");
+        }
+        if (!Objects.equals(String.valueOf(order.getStatus()), DictEnum.TORDER_STATUS_5.getValue())) {
+            throw new BusinessException("已完结的订单才可对账!");
+        }
+        order.setAssociateStatement(associateStatement).setUpdateBy(updateBy).setUpdateTime(new Date());
+        kwoTradeOrderService.updateById(order);
+        //更新mongodb
+        SckwTradeOrder updateParam = new SckwTradeOrder();
+        updateParam.setTOrderId(order.getId()).setAssociateStatement(associateStatement).setUpdateBy(updateBy)
+                .setUpdateByName(updateByName).setUpdateTime(new Date());
+        saveMongoDb(updateParam);
+
+    }
+
     /**
      * @desc: mq保存mongodb
      * @author: yzc

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/KwoTradeOrder.java

@@ -84,6 +84,11 @@ public class KwoTradeOrder extends BaseModel implements Serializable {
      */
     private BigDecimal actualAmount;
 
+    /**
+     * 是否关联对账单:0未关联,1已关联
+     */
+    private Integer associateStatement;
+
     /**
      * 订单创建来源类型(1采购下单/2销售代客下单)
      */

+ 5 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java

@@ -108,6 +108,11 @@ public class OrderDetailRes implements Serializable {
      */
     private BigDecimal actualAmount;
 
+    /**
+     * 是否关联对账单:0未关联,1已关联
+     */
+    private Integer associateStatement;
+
     /**
      * 订单创建来源类型(采购下单/销售代客下单)
      */

+ 1 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -114,7 +114,7 @@ public class KwoTradeOrderService {
         String tOrderNo = tradeOrder.getTOrderNo();
         SckwTradeOrder order = new SckwTradeOrder();
         order.setFirmName(LoginUserHolder.getEntName()).setTOrderId(id).setCreateByName(LoginUserHolder.getUserName())
-                .setUpdateByName(LoginUserHolder.getUserName());
+                .setUpdateByName(LoginUserHolder.getUserName()).setAssociateStatement(0);
         BeanUtils.copyProperties(tradeOrder, order);
         //商品信息
         kwoTradeOrderGoodsService.delByOrderId(id);

+ 3 - 3
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -120,9 +120,8 @@ public class KwOrderService {
         Long userId = LoginUserHolder.getUserId();
         Query query = new Query();
         Criteria criteria = new Criteria();
-        criteria.and("delFlag").is(0);
         String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
-        criteria.and(topEnt).is(entId);
+        criteria.and(topEnt).is(entId).and("delFlag").is(0);
         //日期范围
         if (Objects.nonNull(params.getStartCreateTime()) && Objects.nonNull(params.getEndCreateTime())) {
             criteria.and("createTime").gte(params.getStartCreateTime()).lte(DateUtil.offsetDay(params.getEndCreateTime(), 1));
@@ -289,7 +288,8 @@ public class KwOrderService {
         Long entId = LoginUserHolder.getEntId();
         Criteria criteria = new Criteria();
         String topEnt = Objects.equals(params.getOrderType(), 1) ? "procureTopEntId" : "supplyTopEntId";
-        criteria.and(topEnt).is(entId).and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue())).and("delFlag").is(0);
+        criteria.and(topEnt).is(entId).and("status").is(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()))
+                .and("associateStatement").ne(1).and("delFlag").is(0);
         //排除订单ids
         if (StringUtils.isNotBlank(params.getExcludeIds())) {
             List<Long> ids = StringUtils.splitStrToList(params.getExcludeIds(), ",", Long.class);

+ 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>