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

+ 3 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/common/enums/enums/DictEnum.java

@@ -15,6 +15,9 @@ import java.util.List;
 @Getter
 @AllArgsConstructor
 public enum DictEnum {
+    /**
+     *
+     */
     SMS_REGISTER("send_sms_type", "register", "短信注册"),
     SMS_LOGIN("send_sms_type", "login", "短信登录"),
     SMS_UPDATE_PASSWORD("send_sms_type", "updatePassword", "短信修改密码"),

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

@@ -51,6 +51,11 @@ public class SckwLogisticsOrder {
      */
     private String lOrderPids;
 
+    /**
+     * 对账是否绑定 0未绑定 1已绑定
+     */
+    private String bindStatus;
+
 
     /**
      * 交易订单id(kwo_trade_order)

+ 9 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -1,6 +1,7 @@
 package com.sckw.transport.api.dubbo;
 
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
@@ -73,4 +74,12 @@ public interface TransportDubboService {
      * @return
      */
     Map<Long, List<AddressResDTO>> getLogisticsOrderAddressListByEntId(List<Long> entIds);
+
+    /**
+     * 运费对账是否进行对账绑定数据
+     *
+     * @param accountCheckingBindDTO 物流订单id集合    是否绑定 0:未绑定 1:已绑定
+     * @return
+     */
+    HttpResult logisticsOrderAccountCheckingBind(AccountCheckingBindDTO accountCheckingBindDTO);
 }

+ 36 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/AccountCheckingBindDTO.java

@@ -0,0 +1,36 @@
+package com.sckw.transport.api.model.dto;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author lfdc
+ * @description 对账绑定
+ * @date 2023-08-11 17:08:47
+ */
+@Data
+public class AccountCheckingBindDTO {
+
+    /**
+     * 物流订单id
+     */
+    private List<Long> lOrderList;
+
+    /**
+     * 修改的状态值 0未绑定 1已绑定
+     */
+    private String status;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+
+    /**
+     * 修改人姓名
+     */
+    private String updateName;
+
+}

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java

@@ -226,6 +226,11 @@ public class KwtLogisticsOrder implements Serializable {
     @TableLogic(value = "0")
     private Integer delFlag;
 
+    /**
+     * 对账绑定标识 0未绑定(解绑) 1已绑定
+     */
+    private String bindStatus;
+
     private static final long serialVersionUID = 1L;
 
 }

+ 51 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java

@@ -2,10 +2,12 @@ package com.sckw.transport.service.dubbo;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
@@ -15,6 +17,7 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.transport.api.dubbo.TransportDubboService;
+import com.sckw.transport.api.model.dto.AccountCheckingBindDTO;
 import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.api.model.param.LogisticsOrderParam;
@@ -25,6 +28,7 @@ import com.sckw.transport.dao.KwtLogisticsOrderUnitMapper;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtLogisticsOrderAddress;
 import com.sckw.transport.model.KwtLogisticsOrderUnit;
+import io.seata.spring.annotation.GlobalLock;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -33,6 +37,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -142,7 +147,7 @@ public class TransportDubboServiceImpl implements TransportDubboService {
         return list;
     }
 
-    public Map<String, String> getDictData (String type) {
+    public Map<String, String> getDictData(String type) {
         Map<String, String> maps = new HashMap<>(NumberConstant.SIXTEEN);
         List<SysDictResDto> list = remoteSystemService.queryDictByType(type);
         if (CollectionUtils.isNotEmpty(list)) {
@@ -257,7 +262,7 @@ public class TransportDubboServiceImpl implements TransportDubboService {
         order.setUpdateByName(LoginUserHolder.getUserName());
         SckwBusSum busSum = new SckwBusSum();
         busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
-        busSum.setMethod(NumberConstant.ONE);
+        busSum.setMethod(NumberConstant.TWO);
         busSum.setObject(order);
         streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
         return HttpResult.ok();
@@ -280,4 +285,48 @@ public class TransportDubboServiceImpl implements TransportDubboService {
         }
         return map;
     }
+
+    /**
+     * 运费对账是否进行对账绑定数据
+     * accountCheckingBindDTO
+     *
+     * @return
+     */
+    @Override
+//    @GlobalLock
+    @Transactional
+    public HttpResult logisticsOrderAccountCheckingBind(AccountCheckingBindDTO accountCheckingBindDTO) {
+        log.info("物流订单对账,推送是否绑定,请求数据:{}", JSONObject.toJSONString(accountCheckingBindDTO));
+        if (org.springframework.util.CollectionUtils.isEmpty(accountCheckingBindDTO.getLOrderList())) {
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, "物流订单不能为空!");
+        }
+        if (StringUtils.isBlank(accountCheckingBindDTO.getStatus())) {
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, "绑定状态不能为空");
+        }
+        if (!String.valueOf(NumberConstant.ZERO).equals(accountCheckingBindDTO.getStatus()) &&
+                String.valueOf(NumberConstant.ONE).equals(accountCheckingBindDTO.getStatus())) {
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, "绑定状态类型错误!");
+        }
+        accountCheckingBindDTO.getLOrderList().forEach(id -> {
+            logisticsOrderMapper.update(null,
+                    new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                            .eq(KwtLogisticsOrder::getId, id)
+                            .set(KwtLogisticsOrder::getBindStatus, accountCheckingBindDTO.getStatus())
+                            .set(KwtLogisticsOrder::getUpdateBy, accountCheckingBindDTO.getUpdateBy())
+                            .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+            //修改mongodb数据
+            SckwLogisticsOrder order = new SckwLogisticsOrder();
+            order.set_id(id);
+            order.setLOrderId(id);
+            order.setBindStatus(accountCheckingBindDTO.getStatus());
+            order.setUpdateTime(new Date());
+            order.setUpdateByName(accountCheckingBindDTO.getUpdateName());
+            SckwBusSum busSum = new SckwBusSum();
+            busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+            busSum.setMethod(NumberConstant.TWO);
+            busSum.setObject(order);
+            streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
+        });
+        return HttpResult.ok();
+    }
 }

+ 5 - 4
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -11,6 +11,7 @@
         <result column="pid" jdbcType="BIGINT" property="pid"/>
         <result column="pids" jdbcType="VARCHAR" property="pids"/>
         <result column="level" jdbcType="VARCHAR" property="level"/>
+        <result column="bind_status" jdbcType="VARCHAR" property="bindStatus"/>
         <result column="total_load_amount" jdbcType="VARCHAR" property="totalLoadAmount"/>
         <result column="total_unload_amount" jdbcType="VARCHAR" property="totalUnloadAmount"/>
         <result column="settlement_cycle" jdbcType="BIGINT" property="settlementCycle"/>
@@ -44,7 +45,7 @@
     </resultMap>
     <sql id="Base_Column_List">
         id
-        , ent_id, t_order_id,type,level,total_load_amount,total_unload_amount, t_order_no, l_order_no, pid,pids, settlement_cycle, price, price_type,billing_mode,
+        , ent_id, t_order_id,type,level,bind_status,total_load_amount,total_unload_amount, t_order_no, l_order_no, pid,pids, settlement_cycle, price, price_type,billing_mode,
     amount, unit, loss, loss_unit, goods_price, goods_price_unit, start_time, end_time,
     subcontract_amount, entrust_amount, unload_amount, load_amount, ignore_amount, deficit_amount,
     deficit_price, payment, tax_rate, remark, `status`, create_by, create_time, update_by,
@@ -144,7 +145,7 @@
 <!--        LEFT JOIN ( SELECT l_order_id FROM kwt_logistics_order_unit WHERE unit_type = 1 AND ent_id = #{entId} ) g ON a.id = g.l_order_id-->
         LEFT JOIN ( SELECT ent_id FROM kwt_logistics_order_unit WHERE unit_type = 1 AND ent_id = #{entId} ) g ON a.id = g.l_order_id
         <where>
-            a.del_flag = 0 and d.unit_type = 1
+            a.del_flag = 0 and a.bind_status = '0' and d.unit_type = 1
             <if test="dictValue != null and dictValue != ''">
                 AND a.payment = #{dictValue}
             </if>
@@ -443,8 +444,8 @@
         a.update_time AS updateTime
         FROM
         kwt_logistics_order a
-        LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id
-<!--        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id-->
+        LEFT JOIN kwt_logistics_order_goods b ON a.id = b.l_order_id and a.bind_status = '0'
+        <!--        LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id-->
         LEFT JOIN kwt_logistics_order_contract c ON a.id = c.l_order_id
         <where>
             <if test="ids != null and ids.size() > 0">