Browse Source

1、4.2物流托运委托量调整;

zk 1 year ago
parent
commit
cfcc408d39

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderAddressMapper.java

@@ -23,4 +23,6 @@ public interface KwoTradeOrderAddressMapper extends BaseMapper<KwoTradeOrderAddr
      * @return: void
      */
     void insertBatch(@Param(value = "list") List<KwoTradeOrderAddress> list);
+
+    List<KwoTradeOrderAddress> findByAddress(@Param("tOrderId") Long tOrderId, @Param("type") Integer type);
 }

+ 10 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/TradeOrderListSelectDTO.java

@@ -63,11 +63,21 @@ public class TradeOrderListSelectDTO {
      */
     private String loadAddressCode;
 
+    /**
+     * 装货地址code
+     */
+    private String loadAddressLevel;
+
     /**
      * 卸货地址code
      */
     private String unloadAddressCode;
 
+    /**
+     * 卸货地址code
+     */
+    private String unloadAddressLevel;
+
     /**
      * 交易方式(预付款、货到付款)
      */

+ 19 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderListResVO.java

@@ -177,6 +177,25 @@ public class OrderListResVO {
      * 卸货地址信息
      */
     private List<UnloadAddressResVO> unloadAddresses;
+    /**
+     * 装货地点名称
+     */
+    private List<String> loadName;
+
+    /**
+     * 装货地点
+     */
+    private List<String> loadAddress;
+
+    /**
+     * 卸货地点点名称
+     */
+    private List<String> unloadName;
+
+    /**
+     * 卸货地点
+     */
+    private List<String> unloadAddress;
 
     /**
      * 计划开始时间

+ 12 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderAddressService.java

@@ -14,6 +14,7 @@ import com.sckw.system.api.RemoteSystemService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -200,4 +201,15 @@ public class KwoTradeOrderAddressService {
         return list.stream().collect(Collectors.toMap(KwoTradeOrderAddress::getAddressType, KwoTradeOrderAddress::getId, (k1, k2) -> k1));
     }
 
+    /**
+     * @param type 地址类型
+     * @param tOrderId 贸易订单ID
+     * @return List
+     * @desc 查询地址信息
+     * @author zk
+     * @date 2024/4/2
+     */
+    public List<KwoTradeOrderAddress> findByAddress(Long tOrderId, Integer type) {
+        return kwoTradeOrderAddressMapper.findByAddress(tOrderId, type);
+    }
 }

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

@@ -16,10 +16,7 @@ import com.sckw.core.exception.BusinessException;
 import com.sckw.core.exception.CustomPromptException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.constant.NumberConstant;
-import com.sckw.core.model.enums.ClientTypeEnum;
-import com.sckw.core.model.enums.CooperateTypeEnum;
-import com.sckw.core.model.enums.OrderRuleEnum;
-import com.sckw.core.model.enums.RedisOrderGenerateEnum;
+import com.sckw.core.model.enums.*;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.model.vo.TableBottom;
@@ -38,6 +35,7 @@ import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.enums.*;
+import com.sckw.order.enums.ContractStatusEnum;
 import com.sckw.order.model.*;
 import com.sckw.order.model.dto.*;
 import com.sckw.order.model.vo.req.*;
@@ -1602,6 +1600,8 @@ public class KwoTradeOrderService {
         TradeOrderListSelectDTO dto = buildSelectParam(params);
         PageHelper.startPage(params.getPage(), params.getPageSize());
         List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, dto.getGoodIds(), LoginUserHolder.getAuthUserIdList());
+
+
         return buildResult(list, params.getPageSize());
 
     }
@@ -1655,58 +1655,53 @@ public class KwoTradeOrderService {
         }
 
         list.forEach(e -> {
-            OrderListResVO vo = BeanUtil.copyProperties(e, OrderListResVO.class);
-            List<LoadAddressDTO> loadAddresses = e.getLoadAddresses();
-            if (CollUtil.isNotEmpty(loadAddresses)) {
-                List<LoadAddressResVO> loadList = new ArrayList<>();
-                loadAddresses.forEach(l -> {
-                    LoadAddressResVO load = new LoadAddressResVO();
-                    load.setLoadAddressId(l.getLoadAddressId()).setLoadName(l.getLoadName())
-                            .setLoadDetailAddressInfo(l.getLoadCityName() + l.getLoadDetailAddress());
-                    loadList.add(load);
-                });
-                vo.setLoadAddresses(loadList);
-            }
-            List<UnloadAddressDTO> unloadAddresses = e.getUnloadAddresses();
-            if (CollUtil.isNotEmpty(unloadAddresses)) {
-                List<UnloadAddressResVO> unloadList = new ArrayList<>();
-                unloadAddresses.forEach(u -> {
-                    UnloadAddressResVO unload = new UnloadAddressResVO();
-                    unload.setUnloadAddressId(u.getUnloadAddressId()).setUnloadName(u.getUnloadName())
-                            .setUnloadDetailAddressInfo(u.getUnloadCityName() + u.getUnloadDetailAddress());
-                    unloadList.add(unload);
-                });
-                vo.setUnloadAddresses(unloadList);
-            }
+            //装货地址
+            List<KwoTradeOrderAddress> loadAddresses = kwoTradeOrderAddressService.findByAddress(e.getTOrderId(), AddressTypeEnum.SHIPMENT.getCode());
+            //卸货地址
+            List<KwoTradeOrderAddress> unloadAddresses = kwoTradeOrderAddressService.findByAddress(e.getTOrderId(), AddressTypeEnum.TAKE.getCode());
+            //装货地点名称
+            List<String> loadName = loadAddresses.stream().map(KwoTradeOrderAddress::getCityName).toList();
+            //装货地点
+            List<String> loadAddress = loadAddresses.stream().map(KwoTradeOrderAddress::getDetailAddress).toList();
+            //卸货地点点名称
+            List<String> unloadName = unloadAddresses.stream().map(KwoTradeOrderAddress::getCityName).toList();
+            //卸货地点
+            List<String> unloadAddress = unloadAddresses.stream().map(KwoTradeOrderAddress::getDetailAddress).toList();
             BigDecimal actualAmount = Objects.isNull(e.getActualAmount()) ? BigDecimal.ZERO : e.getActualAmount();
             BigDecimal unitPrice = Objects.isNull(e.getUnitPrice()) ? BigDecimal.ZERO : e.getUnitPrice();
             KwpGoods goods = goodsMap.get(e.getGoodsId());
             ContractCommonInfoResDto contract = contractMap.get(e.getContractId());
             UserCacheResDto userCache = userMap.get(e.getCreateBy());
+
+            OrderListResVO vo = BeanUtil.copyProperties(e, OrderListResVO.class);
             vo.setStatusLabel(statusMap.get(String.valueOf(e.getStatus())))
-                    .setTradingLabel(tradeMap.get(e.getTrading()))
-                    .setTrading(tradeMap.get(e.getTrading()))
-                    .setDeliveryTypeLabel(deliveryMap.get(e.getDeliveryType()))
-                    .setDeliveryType(deliveryMap.get(e.getDeliveryType()))
-                    .setPickupTypeLabel(pickupMap.get(e.getPickupType()))
-                    .setSourceLabel(sourceMap.get(e.getSource()))
-                    .setSource(sourceMap.get(e.getSource()))
-                    .setContractName(Objects.isNull(contract) ? null : contract.getContactName())
-                    .setContractSigningWay(Objects.isNull(contract) ? null : contract.getSigningWayName())
-                    .setGoodsName(Objects.isNull(goods) ? null : goods.getName())
-                    .setGoodsSpec(Objects.isNull(goods) ? null : goods.getSpec())
-                    .setGoodsTaxRate(Objects.isNull(goods) ? null : goods.getTaxRate())
-                    .setGoodsThumb(Objects.isNull(goods) ? null : goods.getThumb())
-                    .setWaitEntrustAmount(setScale(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount())))
-                    .setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP))
-                    .setUnitPrice(setScale(e.getUnitPrice()))
-                    .setPrice(setScale(e.getPrice()))
-                    .setUnit(e.getUnit())
-                    .setUnitLabel(unitType == null ? e.getUnit() : (unitType.get(e.getUnit()) == null ? e.getUnit() : unitType.get(e.getUnit()).getLabel()))
-                    .setAmount(setScale(vo.getAmount()))
-                    .setEntrustAmount(setScale(e.getEntrustAmount()))
-                    .setActualAmount(setScale(e.getActualAmount()))
-                    .setCreateByName(Objects.isNull(userCache) ? null : userCache.getName());
+            .setTradingLabel(tradeMap.get(e.getTrading()))
+            .setTrading(tradeMap.get(e.getTrading()))
+            .setDeliveryTypeLabel(deliveryMap.get(e.getDeliveryType()))
+            .setDeliveryType(deliveryMap.get(e.getDeliveryType()))
+            .setPickupTypeLabel(pickupMap.get(e.getPickupType()))
+            .setSourceLabel(sourceMap.get(e.getSource()))
+            .setSource(sourceMap.get(e.getSource()))
+            .setContractName(Objects.isNull(contract) ? null : contract.getContactName())
+            .setContractSigningWay(Objects.isNull(contract) ? null : contract.getSigningWayName())
+            .setGoodsName(Objects.isNull(goods) ? null : goods.getName())
+            .setGoodsSpec(Objects.isNull(goods) ? null : goods.getSpec())
+            .setGoodsTaxRate(Objects.isNull(goods) ? null : goods.getTaxRate())
+            .setGoodsThumb(Objects.isNull(goods) ? null : goods.getThumb())
+            .setWaitEntrustAmount(setScale(getWaitEntrustAmount(e.getAmount(), e.getEntrustAmount())))
+            .setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP))
+            .setUnitPrice(setScale(e.getUnitPrice()))
+            .setPrice(setScale(e.getPrice()))
+            .setUnit(e.getUnit())
+            .setUnitLabel(unitType == null ? e.getUnit() : (unitType.get(e.getUnit()) == null ? e.getUnit() : unitType.get(e.getUnit()).getLabel()))
+            .setAmount(setScale(vo.getAmount()))
+            .setEntrustAmount(setScale(e.getEntrustAmount()))
+            .setActualAmount(setScale(e.getActualAmount()))
+            .setCreateByName(Objects.isNull(userCache) ? null : userCache.getName())
+            .setLoadName(loadName)
+            .setLoadAddress(loadAddress)
+            .setUnloadName(unloadName)
+            .setUnloadAddress(unloadAddress);
             result.add(vo);
         });
         return PageHelperUtil.getPageResult(new PageInfo<>(result), list, pageSize);

+ 13 - 0
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderAddressMapper.xml

@@ -56,4 +56,17 @@
             </trim>
         </foreach>
     </insert>
+
+
+
+    <select id="findByAddress" resultType="com.sckw.order.model.KwoTradeOrderAddress" >
+        select
+        id, t_order_id tOrderId, address_type addressType, `name`, `type`, contacts, phone, city_code cityCode, city_name cityName,
+        detail_address detailAddress, lat, lng, fence, remark, `status`, create_by createBy, create_time createTime,
+        update_by updateBy, update_time updateTime
+        from kwo_trade_order_address
+        where del_flag = 0
+        and t_order_id = #{tOrderId, jdbcType=BIGINT}
+        and address_type = #{type, jdbcType=INTEGER}
+    </select>
 </mapper>

+ 86 - 116
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderMapper.xml

@@ -68,49 +68,24 @@
         a.remark                                            AS remark,
         a.unit                                              AS unit,
         a.create_by                                         AS createBy,
-        a.create_time                                       AS createTime,
-        b.id                                                AS loadAddressId,
-        b.name                                              AS loadName,
-        b.city_name                                          AS loadCityName,
-        b.detail_address                                     AS loadDetailAddress,
-        c.id                                                AS unloadAddressId,
-        c.name                                              AS unloadName,
-        c.city_name                                          AS unloadCityName,
-        c.detail_address                                     AS unloadDetailAddress
+        a.create_time                                       AS createTime
     </sql>
 
-    <select id="tradeOrderSelect"
-            resultMap="mainEntityMap">
+    <select id="tradeOrderSelect" resultMap="mainEntityMap">
         SELECT
         <include refid="Query_Column_List_Accept_Carriage">
         </include>
         FROM kwo_trade_order a
-        LEFT JOIN kwo_trade_order_address b ON a.id = b.t_order_id
-        AND b.address_type = "1" AND b.del_flag = 0
-        LEFT JOIN kwo_trade_order_address c ON a.id = c.t_order_id
-        AND c.address_type = "2" AND c.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
-        AND d.unit_type = "1" AND d.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
-        AND e.unit_type = "2" AND e.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
         LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
         LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
         <where>
             a.del_flag = 0
 --          数据权限匹配
             <if test="query.isMain == 0">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>
-                <if test="authUserIds != null and authUserIds.size() > 0">
-                    and a.create_by in
-                    <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
-                        #{authUserId}
-                    </foreach>
-                </if>
-                )or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -119,6 +94,10 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or d.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
                 </if>
                 <if test="query.orderType == 2">
@@ -130,17 +109,17 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or e.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
-                </if>)
+                </if>
                 )
             </if>
             <if test="query.isMain == 1">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>)
-                or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -149,7 +128,7 @@
                     <if test="query.entId != null">
                         e.top_ent_id = #{query.entId}
                     </if>
-                </if>)
+                </if>
                 )
             </if>
 --          状态匹配
@@ -187,13 +166,18 @@
             <if test="query.endCreateTime != null ">
                 and a.create_time &lt;= #{query.endCreateTime}
             </if>
-            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
-                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
-                , '%')
-            </if>
-            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
-                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
-                , '%')
+            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
+                and a.id in (
+                SELECT t_order_id from kwo_trade_order_address where del_flag = 0
+                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
+                    address_type = 1
+                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
+                    address_type = 2
+                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                )
             </if>
             <if test="query.trading != null and query.trading != ''">
                 and a.trading =#{query.trading}
@@ -216,32 +200,16 @@
         <include refid="Query_Column_List_Accept_Carriage">
         </include>
         FROM kwo_trade_order a
-        LEFT JOIN kwo_trade_order_address b ON a.id = b.t_order_id
-        AND b.address_type = "1" AND b.del_flag = 0
-        LEFT JOIN kwo_trade_order_address c ON a.id = c.t_order_id
-        AND c.address_type = "2" AND c.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
-        AND d.unit_type = "1" AND d.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
-        AND e.unit_type = "2" AND e.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
         LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
         LEFT JOIN kwo_trade_order_contract f ON a.id = f.t_order_id AND f.del_flag = 0
         <where>
             a.del_flag = 0
 --             数据权限匹配
             <if test="query.isMain == 0">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>
-                <if test="authUserIds != null and authUserIds.size() > 0">
-                    and a.create_by in
-                    <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
-                        #{authUserId}
-                    </foreach>
-                </if>
-                )or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -250,6 +218,10 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or d.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
                 </if>
                 <if test="query.orderType == 2">
@@ -261,17 +233,17 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or e.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
-                </if>)
+                </if>
                 )
             </if>
             <if test="query.isMain == 1">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>)
-                or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -280,7 +252,7 @@
                     <if test="query.entId != null">
                         e.top_ent_id = #{query.entId}
                     </if>
-                </if>)
+                </if>
                 )
             </if>
 --             状态匹配
@@ -318,13 +290,18 @@
             <if test="query.endCreateTime != null ">
                 and a.create_time &lt;= #{query.endCreateTime}
             </if>
-            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
-                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
-                , '%')
-            </if>
-            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
-                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
-                , '%')
+            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
+                and a.id in (
+                SELECT t_order_id from kwo_trade_order_address where del_flag = 0
+                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
+                    address_type = 1
+                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
+                    address_type = 2
+                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                )
             </if>
             <if test="query.trading != null and query.trading != ''">
                 and a.trading =#{query.trading}
@@ -477,31 +454,15 @@
     <select id="tradeOrderStatistic" resultType="com.sckw.core.model.vo.TableTop">
         SELECT a.status AS `value`, COUNT(a.status) AS total
         FROM kwo_trade_order a
-        LEFT JOIN kwo_trade_order_address b ON a.id = b.t_order_id
-        AND b.address_type = "1" AND b.del_flag = 0
-        LEFT JOIN kwo_trade_order_address c ON a.id = c.t_order_id
-        AND c.address_type = "2" AND c.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id
-        AND d.unit_type = "1" AND d.del_flag = 0
-        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id
-        AND e.unit_type = "2" AND e.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit d ON a.id = d.t_order_id AND d.unit_type = "1" AND d.del_flag = 0
+        LEFT JOIN kwo_trade_order_unit e ON a.id = e.t_order_id AND e.unit_type = "2" AND e.del_flag = 0
         LEFT JOIN kwo_trade_order_goods g ON a.id = g.t_order_id AND g.del_flag = 0
         <where>
             a.del_flag = 0
 --             数据权限匹配
             <if test="query.isMain == 0">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>
-                <if test="authUserIds != null and authUserIds.size() > 0">
-                    and a.create_by in
-                    <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
-                        #{authUserId}
-                    </foreach>
-                </if>
-                )or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -510,6 +471,10 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or d.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
                 </if>
                 <if test="query.orderType == 2">
@@ -521,17 +486,17 @@
                         <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
                             #{authUserId}
                         </foreach>
+                        or e.create_by in
+                        <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                            #{authUserId}
+                        </foreach>
                     </if>
-                </if>)
+                </if>
                 )
             </if>
             <if test="query.isMain == 1">
-                and ((
-                <if test="query.entId != null">
-                    a.ent_id = #{query.entId}
-                </if>)
-                or
-                (<if test="query.orderType == 1">
+                and (
+                <if test="query.orderType == 1">
                     <if test="query.entId != null">
                         d.top_ent_id = #{query.entId}
                     </if>
@@ -540,7 +505,7 @@
                     <if test="query.entId != null">
                         e.top_ent_id = #{query.entId}
                     </if>
-                </if>)
+                </if>
                 )
             </if>
 --             状态匹配
@@ -578,13 +543,18 @@
             <if test="query.endCreateTime != null ">
                 and a.create_time &lt;= #{query.endCreateTime}
             </if>
-            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
-                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
-                , '%')
-            </if>
-            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
-                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
-                , '%')
+            <if test="(query.loadAddressCode != null and query.loadAddressCode != '') or (query.unloadAddressCode != null and query.unloadAddressCode != '')">
+                and a.id in (
+                SELECT t_order_id from kwo_trade_order_address where del_flag = 0
+                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
+                    address_type = 1
+                    and left(city_code, #{query.loadAddressLevel, jdbcType=INTEGER}) = left( #{query.loadAddressCode, jdbcType=INTEGER}, #{query.loadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
+                    address_type = 2
+                    and left(city_code, #{query.unloadAddressLevel, jdbcType=INTEGER}) = left( #{query.unloadAddressCode, jdbcType=INTEGER}, #{query.unloadAddressLevel, jdbcType=INTEGER} )
+                </if>
+                )
             </if>
             <if test="query.trading != null and query.trading != ''">
                 and a.trading =#{query.trading}

+ 80 - 78
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -2576,86 +2576,86 @@
         <include refid="New_Query_Column_List_v42">
         </include>
         FROM (
-        SELECT
-        <include refid="Query_Column_List_Cogsign">
-        </include>
-        FROM kwt_logistics_order a
-                 LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
-            AND b.address_type = 1 AND b.del_flag = 0
-                 LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
-            AND c.address_type = 2 AND c.del_flag = 0
-                 LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
-            AND d.unit_type = 1 AND d.del_flag = 0
-                 LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
-            AND e.unit_type = 2
-                 LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
-                 LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
-        <where>
-            a.del_flag = 0
-            <if test="query.keywords != null and query.keywords != ''">
-                and (
-                            a.t_order_no like concat('%', #{query.keywords}, '%')
-                        or a.l_order_no like concat('%', #{query.keywords}, '%')
-                        or d.firm_name like concat('%', #{query.keywords}, '%')
-                        or e.firm_name like concat('%', #{query.keywords}, '%')
-                        or g.goods_name like concat('%', #{query.keywords}, '%'))
-            </if>
-            <if test="orderList != null and orderList.size() > 0">
-                and a.status in
-                <foreach collection="orderList" item="status" open="(" close=")" separator=",">
-                    #{status}
-                </foreach>
-            </if>
-            <if test="idsList != null and idsList.size() > 0">
-                and a.id in
-                <foreach collection="idsList" close=")" open="(" separator="," item="item">
-                    #{item}
-                </foreach>
-            </if>
-            <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
-                and DATE ( a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
-            </if>
-            <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
-                and DATE ( a.end_time ) <![CDATA[ <= ]]> #{query.endOverDateTime}
-            </if>
-            <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
-                and DATE ( a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
-            </if>
-            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
-                and DATE ( a.start_time ) <![CDATA[ <= ]]> #{query.startOverDateTime}
-            </if>
-            <if test="query.createStartTime != null and query.createStartTime != ''">
-                and a.create_time &gt;=#{query.createStartTime}
-            </if>
-            <if test="query.createEndTime != null and query.createEndTime != ''">
-                and a.create_time &lt;=#{query.createEndTime}
-            </if>
-            <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
-                <!--                and b.city_code = #{query.loadAddressCode}-->
-                and b.city_code LIKE CONCAT(#{query.loadAddressCode}
-                                           , '%')
-            </if>
-            <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
-                and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
-                                           , '%')
-            </if>
-            <if test="query.billingMode != null and query.billingMode != ''">
-                and a.billing_mode =#{query.billingMode}
-            </if>
-        </where>
-        ORDER BY a.create_time DESC
+            SELECT
+            <include refid="Query_Column_List_Cogsign">
+            </include>
+            FROM kwt_logistics_order a
+                     LEFT JOIN kwt_logistics_order_address b ON a.id = b.l_order_id
+                AND b.address_type = 1 AND b.del_flag = 0
+                     LEFT JOIN kwt_logistics_order_address c ON a.id = c.l_order_id
+                AND c.address_type = 2 AND c.del_flag = 0
+                     LEFT JOIN kwt_logistics_order_unit d ON a.id = d.l_order_id
+                AND d.unit_type = 1 AND d.del_flag = 0
+                     LEFT JOIN kwt_logistics_order_unit e ON a.id = e.l_order_id
+                AND e.unit_type = 2
+                     LEFT JOIN kwt_logistics_order_goods g ON a.id = g.l_order_id AND g.del_flag = 0
+                     LEFT JOIN kwt_logistics_order_contract f ON a.id = f.l_order_id AND f.del_flag = 0
+            <where>
+                a.del_flag = 0
+                <if test="query.keywords != null and query.keywords != ''">
+                    and (
+                                a.t_order_no like concat('%', #{query.keywords}, '%')
+                            or a.l_order_no like concat('%', #{query.keywords}, '%')
+                            or d.firm_name like concat('%', #{query.keywords}, '%')
+                            or e.firm_name like concat('%', #{query.keywords}, '%')
+                            or g.goods_name like concat('%', #{query.keywords}, '%'))
+                </if>
+                <if test="orderList != null and orderList.size() > 0">
+                    and a.status in
+                    <foreach collection="orderList" item="status" open="(" close=")" separator=",">
+                        #{status}
+                    </foreach>
+                </if>
+                <if test="idsList != null and idsList.size() > 0">
+                    and a.id in
+                    <foreach collection="idsList" close=")" open="(" separator="," item="item">
+                        #{item}
+                    </foreach>
+                </if>
+                <if test="query.endBeginDateTime != null and query.endBeginDateTime != ''">
+                    and DATE ( a.end_time) <![CDATA[ >= ]]> #{query.endBeginDateTime}
+                </if>
+                <if test="query.endOverDateTime != null and query.endOverDateTime != ''">
+                    and DATE ( a.end_time ) <![CDATA[ <= ]]> #{query.endOverDateTime}
+                </if>
+                <if test="query.startBeginDateTime != null and query.startBeginDateTime != ''">
+                    and DATE ( a.start_time) <![CDATA[ >= ]]> #{query.startBeginDateTime}
+                </if>
+                <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
+                    and DATE ( a.start_time ) <![CDATA[ <= ]]> #{query.startOverDateTime}
+                </if>
+                <if test="query.createStartTime != null and query.createStartTime != ''">
+                    and a.create_time &gt;=#{query.createStartTime}
+                </if>
+                <if test="query.createEndTime != null and query.createEndTime != ''">
+                    and a.create_time &lt;=#{query.createEndTime}
+                </if>
+                <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
+                    <!--                and b.city_code = #{query.loadAddressCode}-->
+                    and b.city_code LIKE CONCAT(#{query.loadAddressCode}
+                                               , '%')
+                </if>
+                <if test="query.unloadAddressCode != null and query.unloadAddressCode != ''">
+                    and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
+                                               , '%')
+                </if>
+                <if test="query.billingMode != null and query.billingMode != ''">
+                    and a.billing_mode =#{query.billingMode}
+                </if>
+            </where>
+                ORDER BY a.create_time DESC
             ) tab
         <where>
             tab.delFlag = 0
-            AND ((
-                tab.createType = 1
-            and tab.entId = #{entId}
-            <if test="userIds != null and userIds.size() > 0">
-                AND tab.createBy IN
-                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
-                    #{item}
-                </foreach>
-            </if>
+            AND (
+            (
+                tab.createType = 1 and tab.entId = #{entId}
+                <if test="userIds != null and userIds.size() > 0">
+                    AND tab.createBy IN
+                    <foreach collection="userIds" open="(" close=")" item="item" separator=",">
+                        #{item}
+                    </foreach>
+                </if>
             )
             OR (
                 tab.consignTopEntId = #{entId}
@@ -2665,10 +2665,12 @@
                     #{item}
                 </foreach>
             </if>
-            ))
+            )
+            )
         </where>
         ORDER BY tab.createTime DESC
     </select>
+
     <select id="countLogisticsOrderListByConsignStatus" resultType="com.sckw.mongo.model.TableTops">
         select status AS value ,
         COUNT(status) AS total FROM (