瀏覽代碼

订单列表查询mysql开发

yzc 1 年之前
父節點
當前提交
37bef1ec74

+ 7 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/dao/KwoTradeOrderMapper.java

@@ -3,10 +3,10 @@ package com.sckw.order.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
 import com.sckw.order.model.KwoTradeOrder;
+import com.sckw.order.model.dto.OrderListResDTO;
 import com.sckw.order.model.dto.TradeOrderListSelectDTO;
 import com.sckw.order.model.dto.WbTOrderExcelStsReqDTO;
 import com.sckw.order.model.dto.WbTOrderExcelStsResDTO;
-import com.sckw.order.model.vo.res.OrderListResVO;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -50,10 +50,14 @@ public interface KwoTradeOrderMapper extends BaseMapper<KwoTradeOrder> {
 
     /**
      * @param query
-     * @return java.util.List<com.sckw.order.model.vo.res.OrderListResVO>
+     * @param goodIds
+     * @param authUserIds
+     * @return java.util.List<com.sckw.order.model.dto.OrderListResDTO>
      * @desc 贸易订单列表查询
      * @author yzc
      * @date 2024/3/6 15:50
      */
-    List<OrderListResVO> tradeOrderSelect(@Param("query") TradeOrderListSelectDTO query);
+    List<OrderListResDTO> tradeOrderSelect(@Param("query") TradeOrderListSelectDTO query,
+                                           @Param("goodIds") List<Long> goodIds,
+                                           @Param("authUserIds")List<Long> authUserIds);
 }

+ 23 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/LoadAddressDTO.java

@@ -0,0 +1,23 @@
+package com.sckw.order.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: yzc
+ * @date: 2024-03-14  09:32
+ * @desc: 装货地址信息dto
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class LoadAddressDTO {
+
+    private Long loadAddressId;
+    private String loadName;
+    private String loadCityName;
+    private String loadDetailAddress;
+}

+ 155 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/OrderListResDTO.java

@@ -0,0 +1,155 @@
+package com.sckw.order.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @desc: 订单列表响应参数
+ * @author: yzc
+ * @date: 2023-07-12 17:45
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class OrderListResDTO {
+
+    /**
+     * 订单id
+     */
+    @JsonProperty("tOrderId")
+    private Long tOrderId;
+    /**
+     * 订单状态
+     */
+    private Integer status;
+    /**
+     * 订单编号
+     */
+    @JsonProperty("tOrderNo")
+    private String tOrderNo;
+    /**
+     * 采购企业主键ID
+     */
+    private Long procureEntId;
+
+    /**
+     * 采购单位
+     */
+    private String procureFirmName;
+
+    /**
+     * 销售单位主键ID
+     */
+    private Long supplyEntId;
+    /**
+     * 销售单位
+     */
+    private String supplyFirmName;
+    /**
+     * 交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+
+    /**
+     * 提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+
+    /**
+     * 下单方式(自主下单/代客下单)
+     */
+    private String source;
+
+    /**
+     * 合同主键
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 商品id
+     */
+    private Long goodsId;
+
+    /**
+     * 订单成交单价
+     */
+    private BigDecimal unitPrice;
+    /**
+     * 订单金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 订单总量
+     */
+    private BigDecimal amount;
+    /**
+     * 已委托量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 实际交付量
+     */
+    private BigDecimal actualAmount;
+
+    /**
+     * 计划开始时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate startTime;
+    /**
+     * 计划结束时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate endTime;
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 单位
+     */
+    private String unit;
+
+    /**
+     * 创建人id
+     */
+    private Long createBy;
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 装货地址信息
+     */
+    private List<LoadAddressDTO> loadAddresses;
+
+    /**
+     * 卸货地址信息
+     */
+    private List<UnloadAddressDTO> unloadAddresses;
+}

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

@@ -6,7 +6,6 @@ import lombok.ToString;
 import lombok.experimental.Accessors;
 
 import java.util.Date;
-import java.util.List;
 
 /**
  * @author: yzc
@@ -34,11 +33,6 @@ public class TradeOrderListSelectDTO {
      */
     private Integer isMain;
 
-    /**
-     * 用户权限
-     */
-    private List<Long> authUserIdList;
-
     /**
      * 订单类型(1采购订单、2销售订单)
      */
@@ -48,11 +42,6 @@ public class TradeOrderListSelectDTO {
      */
     private String keywords;
 
-    /**
-     * 商品id集合(模糊匹配查出来的商品)
-     */
-    private List<Long> goodsIds;
-
     /**
      * 创建时间开始(yyyy-MM-dd HH:mm:ss)
      */

+ 24 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/dto/UnloadAddressDTO.java

@@ -0,0 +1,24 @@
+package com.sckw.order.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: yzc
+ * @date: 2024-03-14  09:32
+ * @desc: 卸货地址信息dto
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class UnloadAddressDTO {
+
+    private Long unloadAddressId;
+    private String unloadName;
+    private String unloadCityName;
+    private String unloadDetailAddress;
+
+}

+ 33 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/LoadAddressResVO.java

@@ -0,0 +1,33 @@
+package com.sckw.order.model.vo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: yzc
+ * @date: 2024-03-14  09:32
+ * @desc: 装货地址信息VO
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class LoadAddressResVO {
+
+    /**
+     * 装货地址id
+     */
+    private Long loadAddressId;
+
+    /**
+     * 装货地点
+     */
+    private String loadName;
+
+    /**
+     * 装货详细地址=loadCityName+loadDetailAddress
+     */
+    private String loadDetailAddressInfo;
+}

+ 5 - 12
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderListResVO.java

@@ -10,6 +10,7 @@ import lombok.experimental.Accessors;
 import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @desc: 订单列表响应参数
@@ -167,24 +168,16 @@ public class OrderListResVO {
      * 归属项目
      */
     private String projectName;
-    /**
-     * 装货地点
-     */
-    private String loadName;
 
     /**
-     * 装货详细地址=loadCityName+loadDetailAddress
+     * 装货地址信息
      */
-    private String loadDetailAddressInfo;
+    private List<LoadAddressResVO> loadAddresses;
     /**
-     * 卸货地
+     * 卸货地址信息
      */
-    private String unloadName;
+    private List<UnloadAddressResVO> unloadAddresses;
 
-    /**
-     * 卸货详细地址=unloadCityName+unloadDetailAddress
-     */
-    private String unloadDetailAddressInfo;
     /**
      * 计划开始时间
      */

+ 34 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/UnloadAddressResVO.java

@@ -0,0 +1,34 @@
+package com.sckw.order.model.vo.res;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+
+/**
+ * @author: yzc
+ * @date: 2024-03-14  09:32
+ * @desc: 卸货地址信息VO
+ */
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class UnloadAddressResVO {
+
+    /**
+     * 卸货地址id
+     */
+    private Long unloadAddressId;
+
+    /**
+     * 卸货地点
+     */
+    private String unloadName;
+
+    /**
+     * 卸货详细地址=unloadCityName+unloadDetailAddress
+     */
+    private String unloadDetailAddressInfo;
+
+}

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

@@ -8,6 +8,7 @@ import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
@@ -19,7 +20,7 @@ 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.page.PageResult;
+import com.sckw.core.model.page.PageRes;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.DateUtils;
 import com.sckw.core.utils.OrderGenerateSeqNoUtils;
@@ -34,10 +35,7 @@ import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.enums.*;
 import com.sckw.order.model.*;
-import com.sckw.order.model.dto.OrderCheckDTO;
-import com.sckw.order.model.dto.TradeOrderListSelectDTO;
-import com.sckw.order.model.dto.WbTOrderExcelStsReqDTO;
-import com.sckw.order.model.dto.WbTOrderExcelStsResDTO;
+import com.sckw.order.model.dto.*;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.model.vo.res.*;
 import com.sckw.payment.api.dubbo.PayCenterDubboService;
@@ -67,6 +65,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
@@ -1569,12 +1568,11 @@ public class KwoTradeOrderService {
         return res;
     }
 
-    public PageResult tradeOrderSelect(TradeOrderListSelectParam params) {
+    public PageRes tradeOrderSelect(TradeOrderListSelectParam params) {
         TradeOrderListSelectDTO dto = BeanUtil.copyProperties(params, TradeOrderListSelectDTO.class);
         dto.setEntId(LoginUserHolder.getEntId())
                 .setUserId(LoginUserHolder.getUserId())
-                .setIsMain(LoginUserHolder.getIsMain())
-                .setAuthUserIdList(LoginUserHolder.getAuthUserIdList());
+                .setIsMain(LoginUserHolder.getIsMain());
         //装卸货地址
         String loadCode = params.getShippingAddressCode();
         if (StringUtils.isNotBlank(loadCode)) {
@@ -1597,14 +1595,132 @@ public class KwoTradeOrderService {
             }
         }
         String keywords = params.getKeywords();
+        List<Long> goodIds = new ArrayList<>();
         if (StringUtils.isNotBlank(keywords)) {
-            List<Long> goodIds = goodsInfoService.selectIdsLikeGoodsName(keywords);
-            if (CollUtil.isNotEmpty(goodIds)) {
-                dto.setGoodsIds(goodIds);
-            }
+            goodIds = goodsInfoService.selectIdsLikeGoodsName(keywords);
         }
         PageHelper.startPage(params.getPage(), params.getPageSize());
-        List<OrderListResVO> result = kwoTradeOrderMapper.tradeOrderSelect(dto);
-        return null;
+        List<OrderListResDTO> list = kwoTradeOrderMapper.tradeOrderSelect(dto, goodIds, LoginUserHolder.getAuthUserIdList());
+        List<OrderListResVO> result = new ArrayList<>();
+        if (CollUtil.isEmpty(list)) {
+            PageInfo<OrderListResVO> pageInfo = new PageInfo<>(result);
+            return PageRes.build(pageInfo, result);
+        }
+        List<Long> goodIdList = new ArrayList<>();
+        List<Long> contracIdList = new ArrayList<>();
+        list.forEach(e -> {
+            goodIdList.add(e.getGoodsId());
+            contracIdList.add(e.getContractId());
+        });
+        Map<Long, KwpGoods> goodsMap = goodsInfoService.getGoodsByIds(goodIdList);
+        Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(contracIdList);
+        Map<String, Map<String, String>> dict = remoteSystemService.queryDictByType(List.of(
+                DictTypeEnum.TORDER_STATUS.getType(), DictTypeEnum.TRADE_TYPE.getType(), DictTypeEnum.DELIVERY_TYPE.getType(),
+                DictTypeEnum.PICKUP_TYPE.getType(), DictTypeEnum.TORDER_SOURCE.getType()));
+        Map<String, SysDictResDto> unitType = remoteSystemService.queryDictMapByType(DictTypeEnum.UNIT_TYPE.getType());
+        Map<String, String> statusMap, tradeMap, deliveryMap, pickupMap, sourceMap;
+        if (CollUtil.isNotEmpty(dict)) {
+            statusMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.TORDER_STATUS.getType())) ?
+                    dict.get(DictTypeEnum.TORDER_STATUS.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            tradeMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.TRADE_TYPE.getType())) ?
+                    dict.get(DictTypeEnum.TRADE_TYPE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            deliveryMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.DELIVERY_TYPE.getType())) ?
+                    dict.get(DictTypeEnum.DELIVERY_TYPE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            pickupMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.PICKUP_TYPE.getType())) ?
+                    dict.get(DictTypeEnum.PICKUP_TYPE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            sourceMap = CollUtil.isNotEmpty(dict.get(DictTypeEnum.TORDER_SOURCE.getType())) ?
+                    dict.get(DictTypeEnum.TORDER_SOURCE.getType()) : new HashMap<>(Global.NUMERICAL_SIXTEEN);
+        } else {
+            statusMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            tradeMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            deliveryMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            pickupMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+            sourceMap = new HashMap<>(Global.NUMERICAL_SIXTEEN);
+        }
+
+        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<LoadAddressResVO> unloadList = new ArrayList<>();
+                unloadAddresses.forEach(u -> {
+                    LoadAddressResVO unload = new LoadAddressResVO();
+                    unload.setLoadAddressId(u.getUnloadAddressId()).setLoadName(u.getUnloadName())
+                            .setLoadDetailAddressInfo(u.getUnloadCityName() + u.getUnloadDetailAddress());
+                    unloadList.add(unload);
+                });
+                vo.setLoadAddresses(unloadList);
+            }
+            BigDecimal actualAmount = Objects.isNull(vo.getActualAmount()) ? BigDecimal.ZERO : vo.getActualAmount();
+            BigDecimal unitPrice = Objects.isNull(vo.getUnitPrice()) ? BigDecimal.ZERO : vo.getUnitPrice();
+            KwpGoods goods = goodsMap.get(vo.getGoodsId());
+            ContractCommonInfoResDto contract = contractMap.get(vo.getContractId());
+            vo.setStatusLabel(statusMap.get(String.valueOf(vo.getStatus())))
+                    .setTradingLabel(tradeMap.get(vo.getTrading()))
+                    .setTrading(tradeMap.get(vo.getTrading()))
+                    .setDeliveryTypeLabel(deliveryMap.get(vo.getDeliveryType()))
+                    .setDeliveryType(deliveryMap.get(vo.getDeliveryType()))
+                    .setPickupTypeLabel(pickupMap.get(vo.getPickupType()))
+                    .setSourceLabel(sourceMap.get(vo.getSource()))
+                    .setSource(sourceMap.get(vo.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(vo.getAmount(), vo.getEntrustAmount())))
+                    .setActualPrice(actualAmount.multiply(unitPrice).setScale(2, RoundingMode.HALF_UP))
+                    .setUnitPrice(setScale(vo.getUnitPrice()))
+                    .setPrice(setScale(vo.getPrice()))
+                    .setUnit(vo.getUnit())
+                    .setUnitLabel(unitType == null ? vo.getUnit() : (unitType.get(vo.getUnit()) == null ? vo.getUnit() : unitType.get(vo.getUnit()).getLabel()))
+                    .setAmount(setScale(vo.getAmount()))
+                    .setEntrustAmount(setScale(vo.getEntrustAmount()))
+                    .setActualAmount(setScale(vo.getActualAmount()));
+            result.add(vo);
+        });
+        PageInfo<OrderListResVO> pageInfo = new PageInfo<>(result);
+        return PageRes.build(pageInfo, result);
+    }
+
+    /**
+     * @desc: 设置两位小数
+     * @author: yzc
+     * @date: 2023-09-26 10:11
+     * @Param d:
+     * @return: java.lang.BigDecimal
+     */
+    private BigDecimal setScale(BigDecimal d) {
+        if (Objects.isNull(d) || BigDecimal.ZERO.compareTo(d) == 0) {
+            return NumberConstant.ZERO_TWO;
+        }
+        return d.setScale(2, RoundingMode.HALF_UP);
+    }
+
+    /**
+     * @desc: 获取订单待分配运输量
+     * @author: yzc
+     * @date: 2023-08-25 10:32
+     * @Param amount:
+     * @Param entrustAmount:
+     * @return: java.math.Double
+     */
+    private BigDecimal getWaitEntrustAmount(BigDecimal amount, BigDecimal entrustAmount) {
+        if (Objects.isNull(amount) || Objects.isNull(entrustAmount)) {
+            return amount;
+        }
+        return amount.subtract(entrustAmount);
     }
 }

+ 151 - 172
sckw-modules/sckw-order/src/main/resources/mapper/KwoTradeOrderMapper.xml

@@ -1,134 +1,92 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.sckw.order.dao.KwoTradeOrderMapper">
+    <resultMap id="mainEntityMap" type="com.sckw.order.model.dto.OrderListResDTO">
+        <id column="tOrderId" property="tOrderId"/>
+        <result column="status" property="status"/>
+        <result column="tOrderNo" property="tOrderNo"/>
+        <result column="procureEntId" property="procureEntId"/>
+        <result column="procureFirmName" property="procureFirmName"/>
+        <result column="supplyEntId" property="supplyEntId"/>
+        <result column="supplyFirmName" property="supplyFirmName"/>
+        <result column="trading" property="trading"/>
+        <result column="deliveryType" property="deliveryType"/>
+        <result column="pickupType" property="pickupType"/>
+        <result column="source" property="source"/>
+        <result column="contractId" property="contractId"/>
+        <result column="contractNo" property="contractNo"/>
+        <result column="goodsId" property="goodsId"/>
+        <result column="unitPrice" property="unitPrice"/>
+        <result column="price" property="price"/>
+        <result column="amount" property="amount"/>
+        <result column="entrustAmount" property="entrustAmount"/>
+        <result column="actualAmount" property="actualAmount"/>
+        <result column="startTime" property="startTime"/>
+        <result column="endTime" property="endTime"/>
+        <result column="remark" property="remark"/>
+        <result column="unit" property="unit"/>
+        <result column="createBy" property="createBy"/>
+        <result column="createTime" property="createTime"/>
 
-    <sql id="New_Query_Column_List">
-        tOrderId,
-        status,
-        tOrderNo,
-        procureEntId,
-        procureFirmName,
-        supplyEntId,
-        supplyFirmName,
-        trading,
-        deliveryType,
-        pickupType,
-        source,
-        contractId,
-        contractNo,
-        goodsId,
-        unitPrice,
-        price,
-        amount,
-        entrustAmount,
-        waitEntrustAmount,
-        actualAmount,
-        actualPrice,
-        loadName,
-        loadType,
-        loadCityName,
-        loadCityCode,
-        loadAddress,
-        shipmentsContacts,
-        shipmentsPhone,
-        loadLat,
-        loadLng,
-        unloadName,
-        unloadType,
-        unloadCityName,
-        unloadCityCode,
-        unloadAddress,
-        unloadLat,
-        unloadLng,
-        contract,
-        createType
-    </sql>
+        <collection property="loadAddresses" ofType="com.sckw.order.model.dto.LoadAddressDTO">
+            <id column="id" property="loadAddressId"/>
+            <result column="name" property="loadName"/>
+            <result column="cityName" property="loadCityName"/>
+            <result column="detailAddress" property="loadDetailAddress"/>
+        </collection>
+
+        <collection property="unloadAddresses" ofType="com.sckw.order.model.dto.UnloadAddressDTO">
+            <id column="id" property="unloadAddressId"/>
+            <result column="name" property="unloadName"/>
+            <result column="cityName" property="unloadCityName"/>
+            <result column="detailAddress" property="unloadDetailAddress"/>
+        </collection>
 
+    </resultMap>
     <sql id="Query_Column_List_Accept_Carriage">
-        a.id                                                AS lOrderId,
-        a.l_order_no                                        AS lOrderNo,
-        a.t_order_id                                        AS tOrderId,
+        a.id                                                AS tOrderId,
+        a.status                                            AS status,
         a.t_order_no                                        AS tOrderNo,
-        a.loss                                              AS loss,
-        a.loss_unit                                         AS lossUnit,
-        a.settlement_cycle                                  AS accountsCycle,
-        a.billing_mode                                      AS billingMode,
-        a.amount                                            AS carryingCapacity,
-        a.goods_price                                       AS goodsPrice,
-        a.goods_price_unit                                  AS goodsPriceUnit,
-        a.`status`                                          AS status,
-        a.settlement_cycle                                  AS settlementCycle,
+        d.ent_id                                            AS procureEntId,
+        d.firm_name                                         AS procureFirmName,
+        e.ent_id                                            AS supplyEntId,
+        e.firm_name                                         AS supplyFirmName,
+        a.trading                                           AS trading,
+        a.deliveryType                                      AS deliveryType,
+        a.pickupType                                        AS pickupType,
+        a.source                                            AS source,
+        f.contract_id                                       AS contractId,
+        f.contract_no                                       AS contractNo,
+--         f.contract_name                                     as contractName,
+--         f.signing_way                                       AS contractSigningWay,
+        g.goods_id                                          AS goodsId,
+--         g.goods_name                                        AS goodsName,
+--         g.goods_spec                                        AS goodsSpec,
+--         g.goods_tax_rate                                    AS goodsTaxRate,
+--         g.goods_thumb                                       AS goodsThumb,
+        g.unit_price                                        AS unitPrice,
         a.price                                             AS price,
-        a.price_type                                        AS priceType,
-        a.type                                              AS orderSource,
-        a.unit                                              AS unit,
-        a.subcontract_amount                                AS subcontractAmount,
+        a.amount                                            AS amount,
         a.entrust_amount                                    AS entrustAmount,
-        a.unload_amount                                     AS unloadAmount,
-        a.load_amount                                       AS loadAmount,
-        a.ignore_amount                                     AS ignoreAmount,
-        a.deficit_amount                                    AS deficitAmount,
-        a.deficit_price                                     AS deficitPrice,
-        a.total_load_amount                                 AS totalLoadAmount,
-        a.total_unload_amount                               AS totalUnloadAmount,
-        a.payment                                           AS payment,
-        a.tax_rate                                          AS taxRate,
-        a.ent_id                                            AS entId,
+        a.actual_amount                                     AS actualAmount,
+        a.start_time                                        AS startTime,
+        a.end_time                                          AS endTime,
+        a.remark                                            AS remark,
+        a.unit                                              AS unit,
         a.create_by                                         AS createBy,
         a.create_time                                       AS createTime,
-        a.update_by                                         AS updateBy,
-        a.update_time                                       AS updateTime,
-        a.start_time                                        AS shipmentsDateTime,
-        a.end_time                                          AS receiveGoodsDateTime,
-        a.remark                                            AS remark,
-        g.goods_id                                          AS goodsId,
-        g.goods_name                                        AS goodsName,
-        g.goods_type                                        AS goodsType,
-        f.contract_id                                       AS contractId,
-        f.contract_no                                       AS contractNo,
-        f.signing_way                                       AS signing,
-        d.ent_id                                            AS consignCompanyId,
-        d.top_ent_id                                        AS consignTopEntId,
-        d.firm_name                                         AS consignCompany,
-        d.contacts                                          AS consignContacts,
-        d.contacts_id                                       AS consignContactsId,
-        e.contacts_id                                       AS carrierContactsId,
-        d.phone                                             AS consignPhone,
-        e.ent_id                                            AS carrierCompanyId,
-        e.firm_name                                         AS carrierCompany,
-        e.top_ent_id                                        AS carrierTopEntId,
-        e.contacts                                          AS carrierContacts,
-        e.phone                                             AS carrierPhone,
-        b.`name`                                            AS loadName,
-        b.address_type                                      AS loadType,
-        b.city_name                                         AS loadCityName,
-        b.city_code                                         AS loadCityCode,
-        b.detail_address                                    AS loadAddress,
-        b.contacts                                          AS shipmentsContacts,
-        b.phone                                             AS shipmentsPhone,
-        b.lat                                               AS loadLat,
-        b.lng                                               AS loadLng,
-        c.`name`                                            AS unloadName,
-        c.address_type                                      AS unloadType,
-        c.contacts                                          AS receiveGoodsContacts,
-        c.phone                                             AS receiveGoodsPhone,
-        c.city_name                                         AS unloadCityName,
-        c.city_code                                         AS unloadCityCode,
-        c.detail_address                                    AS unloadAddress,
-        c.lat                                               AS unloadLat,
-        c.lng                                               AS unloadLng,
-        f.contract_name                                     as contract
-                ,
-        a.del_flag                                          as delFlag,
-        case when a.ent_id = e.top_ent_id then 1 ELSE 2 end as createType
+        b.id                                                AS loadAddressId,
+        b.name                                              AS loadName,
+        b.cityName                                          AS loadCityName,
+        b.detailAddress                                     AS loadDetailAddress,
+        c.id                                                AS unloadAddressId,
+        c.name                                              AS unloadName,
+        c.cityName                                          AS unloadCityName,
+        c.detailAddress                                     AS unloadDetailAddress
     </sql>
 
     <select id="tradeOrderSelect"
-            resultType="com.sckw.order.model.vo.res.OrderListResVO">
-        SELECT
-        <include refid="New_Query_Column_List">
-        </include>
-        FROM (
+            resultMap="mainEntityMap">
         SELECT
         <include refid="Query_Column_List_Accept_Carriage">
         </include>
@@ -142,46 +100,83 @@
         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_unit f ON a.id = f.t_order_id AND f.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 (
+                (a.ent_id = #{query.entId}
+                <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">
+                    d.top_ent_id = #{query.entId}
+                    and d.contacts_id in
+                    <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                        #{authUserId}
+                    </foreach>
+                </if>
+                <if test="query.orderType == 2">
+                    e.top_ent_id = #{query.entId}
+                    and e.contacts_id in
+                    <foreach collection="authUserIds" item="authUserId" open="(" close=")" separator=",">
+                        #{authUserId}
+                    </foreach>
+                </if>)
+                )
+            </if>
+            <if test="query.isMain == 1">
+                and (
+                (a.ent_id = #{query.entId})
+                or
+                (<if test="query.orderType == 1">
+                    d.top_ent_id = #{query.entId}
+                </if>
+                <if test="query.orderType == 2">
+                    e.top_ent_id = #{query.entId}
+                </if>)
+                )
+            </if>
+--          状态匹配
+            <if test="query.status != null">
+                and a.status =#{query.status}
+                <if test="query.status == 0">
+--          草稿状态只能创建订单的人能看
+                    and a.create_by = #{query.userId}
+                </if>
+            </if>
+            <if test="query.status == null">
+--           非草稿状态or草稿状态且是当前人
+                and (
+                    a.status != 0
+                 or (a.status = 0 and a.create_by = #{query.userId})
+                )
+            </if>
+--          关键词匹配
             <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 test="goodIds != null and goodIds.size() > 0">
+                    or g.goods_id in
+                    <foreach collection="goodIds" item="goodId" open="(" close=")" separator=",">
+                        #{goodId}
+                    </foreach>
+                </if>
+                )
             </if>
-            <if test="query.startOverDateTime != null and query.startOverDateTime != ''">
-                and DATE ( a.start_time ) <![CDATA[ <= ]]> #{query.startOverDateTime}
+            <if test="query.createStartTime != null ">
+                and a.create_time &gt;= #{query.createStartTime}
             </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 test="query.createEndTime != null ">
+                and a.create_time &lt;= #{query.createEndTime}
             </if>
             <if test="query.loadAddressCode != null and query.loadAddressCode != ''">
                 and b.city_code LIKE CONCAT(#{query.loadAddressCode}
@@ -191,36 +186,20 @@
                 and c.city_code LIKE CONCAT(#{query.unloadAddressCode}
                 , '%')
             </if>
-            <if test="query.billingMode != null and query.billingMode != ''">
-                and a.billing_mode =#{query.billingMode}
+            <if test="query.trading != null and query.trading != ''">
+                and a.trading =#{query.trading}
             </if>
-        </where>
-        ORDER BY a.create_time DESC
-        ) tab
-        <where>
-            tab.delFlag = 0
-            AND ((
-            tab.createType = 1
-            <if test="entId != null">
-                and tab.entId = #{entId}
+            <if test="query.source != null and query.source != ''">
+                and a.source =#{query.source}
             </if>
-            <if test="userIds != null and userIds.size() > 0">
-                AND tab.createBy IN
-                <foreach collection="userIds" open="(" close=")" item="item" separator=",">
-                    #{item}
-                </foreach>
+            <if test="query.deliveryType != null and query.deliveryType != ''">
+                and a.delivery_type =#{query.deliveryType}
             </if>
-            )
-            OR (
-            tab.carrierTopEntId = #{entId}
-            <if test="contactsIds != null and contactsIds.size() > 0">
-                AND tab.carrierContactsId IN
-                <foreach collection="contactsIds" separator="," item="item" close=")" open="(">
-                    #{item}
-                </foreach>
+            <if test="query.deliveryType != null and query.deliveryType != ''">
+                and a.delivery_type =#{query.deliveryType}
             </if>
-            ))
         </where>
+        ORDER BY a.create_time DESC
     </select>
 
     <select id="getMaxOrderNoByDate" resultType="java.lang.String">