Explorar o código

'销售钢材'

HUJIANGUO %!s(int64=3) %!d(string=hai) anos
pai
achega
d19355fda3
Modificáronse 23 ficheiros con 2680 adicións e 366 borrados
  1. 1 1
      pom.xml
  2. 179 2
      src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java
  3. 0 11
      src/main/java/com/steerinfo/dil/controller/AmsSaleOrderMaterialController.java
  4. 22 0
      src/main/java/com/steerinfo/dil/feign/JoinFeign.java
  5. 3 0
      src/main/java/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.java
  6. 13 0
      src/main/java/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.java
  7. 19 0
      src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java
  8. 2 0
      src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.java
  9. 274 0
      src/main/java/com/steerinfo/dil/model/AmsSaleMaterial.java
  10. 15 0
      src/main/java/com/steerinfo/dil/model/AmsSaleOrder.java
  11. 1 2
      src/main/java/com/steerinfo/dil/service/IAmsSaleOrderMaterialService.java
  12. 28 0
      src/main/java/com/steerinfo/dil/service/IAmsSaleOrderService.java
  13. 3 10
      src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderMaterialServiceImpl.java
  14. 542 23
      src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java
  15. 22 0
      src/main/java/com/steerinfo/dil/util/DataChange.java
  16. 72 0
      src/main/java/com/steerinfo/dil/util/EASUtil.java
  17. 24 0
      src/main/java/com/steerinfo/dil/util/NumberToWeightUtil.java
  18. 2 1
      src/main/resources/application-dev.yml
  19. 2 0
      src/main/resources/application-prod.yml
  20. 6 0
      src/main/resources/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.xml
  21. 499 0
      src/main/resources/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.xml
  22. 941 316
      src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml
  23. 10 0
      src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.xml

+ 1 - 1
pom.xml

@@ -112,7 +112,7 @@
                     <targetPackage>com.steerinfo.dil</targetPackage>
                     <tables>
 <!--                        <param>AMS_SALE_ORDER</param>&lt;!&ndash;销售计划&ndash;&gt;-->
-                        <param>AMSTRUCK_INWARD_REQUIREMENT</param><!--销售计划物资中间表-->
+                        <param>AMS_SALE_ORDER</param><!--销售计划物资中间表-->
 <!--                        <param>AMSTRUCK_RAIL_DAYPLAN</param>&lt;!&ndash;销售计划物资中间表&ndash;&gt;-->
 <!--                        <param>AMS_CONTRACT_TRANSPORT_PRICE</param>&lt;!&ndash;销售订单&ndash;&gt;-->
 <!--                        <param>RMS_RECEIVE_PLACE</param>&lt;!&ndash;销售订单车序号表&ndash;&gt;-->

+ 179 - 2
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -21,11 +21,13 @@ import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
+import oracle.jdbc.proxy.annotation.Post;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -526,7 +528,7 @@ public class AmsSaleOrderController extends BaseRESTfulController {
         return success(pageList);
     }
 
-    @ApiModelProperty(value = "展示销售公司已审核销售订单列表")
+    @ApiModelProperty(value = "展示已审核销售订单列表")
     @ApiImplicitParams({
             @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
             @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
@@ -537,10 +539,28 @@ public class AmsSaleOrderController extends BaseRESTfulController {
                                                          Integer pageNum,
                                                          Integer pageSize,
                                                          Integer apiId,
-                                                         String con) {
+                                                         String con,
+                                                         Integer shipperId
+//                                                         String startDate,
+//                                                         String endDate
+                                                         ) {
         if (con != null  && !"".equals(con) && !"null".equals(con)) {
             mapValue.put("con", con);
         }
+        if(shipperId != null  && !"".equals(shipperId) && !"null".equals(shipperId)){
+            mapValue.put("shipperId", shipperId);
+        }
+//        SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd");
+//        if(startDate != null  && !"".equals(startDate) && !"null".equals(startDate)){
+//            Date startTime=new Date(Long.parseLong(startDate));
+//            String startTime1=simpleDateFormat.format(startTime);
+//            mapValue.put("startTime",startTime1);
+//        }
+//        if(endDate != null  && !"".equals(endDate) && !"null".equals(endDate)){
+//            Date endTime=new Date(Long.parseLong(endDate));
+//            String endTime1=simpleDateFormat.format(endTime);
+//            mapValue.put("endTime",endTime1);
+//        }
         //不分页筛选数据
         PageHelper.startPage(pageNum,pageSize);
         //分页数据
@@ -612,4 +632,161 @@ public class AmsSaleOrderController extends BaseRESTfulController {
         PageListAdd pageList = columnDataUtil.tableColumnData(apiId, saleCompanyList,saleOrderList);
         return success(pageList);
     }
+
+    @ApiModelProperty(value = "新增钢材销售订单")
+    @PostMapping("/addSteelSaleOrder")
+    public RESTfulResult addSteelSaleOrder(@RequestBody Map<String,Object> mapValue) {
+        int result = amsSaleOrderService.addSteelSaleOrder(mapValue);
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "展示销售订单下的车序号和物资")
+    @PostMapping("/getTruckNoAndMaterialList")
+    public RESTfulResult getTruckNoAndMaterialList(@RequestParam Integer saleOrderId) {
+        List<Map<String,Object>> mapList = amsSaleOrderService.getTruckNoAndMaterialList(new BigDecimal(saleOrderId));
+        return success(mapList);
+    }
+
+    @ApiModelProperty(value = "钢材派单")
+    @PostMapping("/dispatchSteelOrder")
+    public RESTfulResult dispatchSteelOrder(@RequestBody List<Map<String,Object>> mapList) {
+        int result = amsSaleOrderService.dispatchSteelOrder(mapList);
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "根据详细地址匹配承运商")
+    @GetMapping("/getCarrierByPlace")
+    public RESTfulResult getCarrierByPlace(@RequestParam Integer placeId) {
+        List<Map<String,Object>> result = amsSaleOrderService.getCarrierByPlace(new BigDecimal(placeId));
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "根据详细地址和承运商匹配单价")
+    @PostMapping("/getPriceByCarrierAndPlace")
+    public RESTfulResult getPriceByCarrierAndPlace(@RequestBody Map<String,Object> mapValue) {
+        Map<String,Object> result = amsSaleOrderService.getPriceByCarrierAndPlace(mapValue);
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "将车序号下发给承运商")
+    @PostMapping("/dispatchToCarrier")
+    public RESTfulResult dispatchToCarrier(@RequestBody List<Map<String,Object>> mapList) {
+        int result = amsSaleOrderService.dispatchToCarrier(mapList);
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "销售钢材承运商查询销售订单")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
+            @ApiImplicitParam(name = "apiId", value = "409", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getSaleOrderListToCarrier")
+    public RESTfulResult getSaleOrderListToCarrier(@RequestBody(required = false) Map<String,Object> mapValue,
+                                                         Integer pageNum,
+                                                         Integer pageSize,
+                                                         Integer apiId,
+                                                         String carrierSsoId,
+                                                         String con) {
+        if (con != null  && !"".equals(con) && !"null".equals(con)) {
+            mapValue.put("con", con);
+        }
+        if ((carrierSsoId != null && !"".equals(carrierSsoId)) && !"undefined".equals(carrierSsoId) && !"null".equals(carrierSsoId)) {
+            mapValue.put("carrierSsoId",carrierSsoId);
+        }
+        //不分页筛选数据
+        PageHelper.startPage(pageNum,pageSize);
+        //分页数据
+        List<Map<String, Object>> saleOrderList = amsSaleOrderService.getSaleOrderListToCarrier(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,saleOrderList);
+        return success(pageList);
+    }
+
+    /**
+     * 展示未匹配承运商的车序号
+     *
+     * @param mapValue
+     * @return
+     */
+    @ApiOperation(value = "展示未匹配承运商的车序号")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "销售订单物资信息map", required = false, dataType = "java.util.Map"),
+            @ApiImplicitParam(name = "apiId", value = "411", required = false, dataType = "java.util.Map")
+    })
+    @PostMapping(value = "/getSteelTruckNoList")
+    public RESTfulResult getSteelTruckNoList(@RequestBody(required = false) Map<String, Object> mapValue,
+                                             Integer apiId,
+                                             Integer pageNum,
+                                             Integer pageSize,
+                                             String con) {
+        if (con != null && !con.equals("undefined") && !con.equals("null")) {
+            mapValue.put("con", "%" + con + "%");
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        //分页数据
+        List<Map<String, Object>> saleOrderList = amsSaleOrderService.getSteelTruckNoList(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null, saleOrderList);
+        return success(pageList);
+    }
+
+    @ApiModelProperty(value = "展示销售订单下的车序号和物资")
+    @PostMapping("/getTruckNoMaterial")
+    public RESTfulResult getTruckNoMaterial(@RequestParam Integer saleOrderMaterialId) {
+        List<Map<String,Object>> mapList = amsSaleOrderService.getTruckNoMaterial(new BigDecimal(saleOrderMaterialId));
+        return success(mapList);
+    }
+
+    /**
+     * 展示已分配承运商但未派车的车序号
+     *
+     * @param mapValue
+     * @return
+     */
+    @ApiOperation(value = "展示已分配承运商但未派车的车序号")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "销售订单物资信息map", required = false, dataType = "java.util.Map"),
+            @ApiImplicitParam(name = "apiId", value = "466", required = false, dataType = "java.util.Map")
+    })
+    @PostMapping(value = "/getNoCarTruckNoList")
+    public RESTfulResult getNoCarTruckNoList(@RequestBody(required = false) Map<String, Object> mapValue,
+                                             Integer apiId,
+                                             Integer pageNum,
+                                             Integer pageSize,
+                                             String con) {
+        if (con != null && !con.equals("undefined") && !con.equals("null")) {
+            mapValue.put("con", "%" + con + "%");
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        //分页数据
+        List<Map<String, Object>> saleOrderList = amsSaleOrderService.getNoCarTruckNoList(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null, saleOrderList);
+        return success(pageList);
+    }
+
+    /**
+     * 展示已派车的车序号
+     *
+     * @param mapValue
+     * @return
+     */
+    @ApiOperation(value = "展示已派车的车序号")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "map", value = "销售订单物资信息map", required = false, dataType = "java.util.Map"),
+            @ApiImplicitParam(name = "apiId", value = "466", required = false, dataType = "java.util.Map")
+    })
+    @PostMapping(value = "/getHaveCarTruckNoList")
+    public RESTfulResult getHaveCarTruckNoList(@RequestBody(required = false) Map<String, Object> mapValue,
+                                             Integer apiId,
+                                             Integer pageNum,
+                                             Integer pageSize,
+                                             String con) {
+        if (con != null && !con.equals("undefined") && !con.equals("null")) {
+            mapValue.put("con", "%" + con + "%");
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        //分页数据
+        List<Map<String, Object>> saleOrderList = amsSaleOrderService.getHaveCarTruckNoList(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId,null, saleOrderList);
+        return success(pageList);
+    }
 }

+ 0 - 11
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderMaterialController.java

@@ -276,16 +276,5 @@ public class AmsSaleOrderMaterialController extends BaseRESTfulController {
         return success(priceMap);
     }
 
-    @ApiOperation(value="销售直接选择车牌号派发副产品运输订单")
-    @PostMapping("dispatchByproductOrderBySale")
-    public RESTfulResult dispatchByproductOrderBySale(@RequestBody Map<String,Object> mapValue){
-        int result = amsSaleOrderMaterialService.dispatchByproductOrderBySale(mapValue);
-        if (result == -1) {
-            return failed("该销售订单的净重已达到97%");
-        }
-        else {
-            return success(result);
-        }
-    }
 
 }

+ 22 - 0
src/main/java/com/steerinfo/dil/feign/JoinFeign.java

@@ -0,0 +1,22 @@
+package com.steerinfo.dil.feign;
+
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.math.BigDecimal;
+import java.util.Map;
+
+/**
+ * @author hujianguo
+ * @create 2021-10-29 11:23
+ */
+@FeignClient(value = "dil-join-api-dev", url = "${openfeign.JoinFeign.url}")
+public interface JoinFeign {
+    @PostMapping("/api/v1/join/amssaleorder/getSaleOrder")
+    Map<String,Object> getSaleOrder(@RequestParam BigDecimal saleOrderId);
+
+    @PostMapping("/api/v1/join/wsface/pushSaleOrderToEas")
+    String pushSaleOrderToEas(@RequestBody Map<String,Object> map);
+}

+ 3 - 0
src/main/java/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.java

@@ -43,4 +43,7 @@ public interface AmsDispatchSaleOrderMapper extends IBaseMapper<AmsDispatchSaleO
 
     // 通过ssoid查询承运商
     List<Map<String, Object>> getCarrierIdBySSO(Map<String,Object> map);
+
+    // 判断定向派单是否已存在
+    BigDecimal isDispatchExist(BigDecimal saleOrderMaterialId);
 }

+ 13 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.java

@@ -0,0 +1,13 @@
+package com.steerinfo.dil.mapper;
+
+import com.steerinfo.dil.model.AmsSaleMaterial;
+import com.steerinfo.framework.mapper.IBaseMapper;
+import java.math.*;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Select;
+
+@Mapper
+public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigDecimal> {
+    @Select("select seq_AMS_SALE_MATERIAL.nextval from dual")
+    BigDecimal selectMaxId();
+}

+ 19 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java

@@ -77,4 +77,23 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
 
     // 得到销售订单已分配的车数
     BigDecimal getCarNum(BigDecimal saleOrderId);
+    // 查询销售订单下的车序号和物资
+    List<Map<String, Object>> getTruckNoAndMaterial(BigDecimal saleOrderId);
+    // 根据详细地址匹配省市县
+    BigDecimal getAddressByPlace(BigDecimal placeId);
+    // 根据省市县匹配承运商
+    List<Map<String, Object>> getCarrierByPlace(BigDecimal addressId);
+    // 根据详细地址匹配承运商
+    Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue);
+
+    List<Map<String, Object>> getSaleOrderListToCarrier(Map<String, Object> mapValue);
+    // 展示未匹配承运商的车序号
+    List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue);
+    // 车序号下的物资
+    List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId);
+
+    List<Map<String, Object>> getCarrierTruckNoList(Map<String, Object> mapValue);
+    List<Map<String, Object>> getTruckNoMaterialAndCarrier(BigDecimal saleOrderMaterialId);
+    // 展示已派车的车序号
+    List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue);
 }

+ 2 - 0
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.java

@@ -56,4 +56,6 @@ public interface AmsSaleOrderMaterialMapper extends IBaseMapper<AmsSaleOrderMate
     Map<String, Object> getSaleMessage(BigDecimal saleOrderId);
     // 通过承运商id查询单价
     List<Map<String, Object>> getPriceList(BigDecimal carrierId);
+    // 查询车序号中的物资
+    List<Map<String, Object>> getMaterial(BigDecimal saleOrderMaterialId);
 }

+ 274 - 0
src/main/java/com/steerinfo/dil/model/AmsSaleMaterial.java

@@ -0,0 +1,274 @@
+package com.steerinfo.dil.model;
+
+import com.steerinfo.framework.model.IBasePO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel(value="销售订单分录物资中间表")
+public class AmsSaleMaterial implements IBasePO<BigDecimal> {
+    /**
+     * 主键ID(SALE_MATERIAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="主键ID",required=true)
+    private BigDecimal saleMaterialId;
+
+    /**
+     * 销售订单主表主键ID(SALE_ORDER_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="销售订单主表主键ID",required=false)
+    private BigDecimal saleOrderId;
+
+    /**
+     * 物资ID(MATERIAL_ID,DECIMAL,38)
+     */
+    @ApiModelProperty(value="物资ID",required=false)
+    private BigDecimal materialId;
+
+    /**
+     * 物资重量(MATERIAL_WEIGHT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="物资重量",required=false)
+    private BigDecimal materialWeight;
+
+    /**
+     * 物资件数(MATERIAL_NUMBER,DECIMAL,38)
+     */
+    @ApiModelProperty(value="物资件数",required=false)
+    private BigDecimal materialNumber;
+
+    /**
+     * 金蝶分路主键ID(EAS_PRIMARY_ID,VARCHAR,30)
+     */
+    @ApiModelProperty(value="金蝶分路主键ID",required=false)
+    private String easPrimaryId;
+
+    /**
+     * 记录创建人(INSERT_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录创建人",required=false)
+    private String insertUsername;
+
+    /**
+     * 记录创建时间(INSERT_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录创建时间",required=false)
+    private Date insertTime;
+
+    /**
+     * 记录修改人(UPDATE_USERNAME,VARCHAR,20)
+     */
+    @ApiModelProperty(value="记录修改人",required=false)
+    private String updateUsername;
+
+    /**
+     * 记录修改时间(UPDATE_TIME,TIMESTAMP,7)
+     */
+    @ApiModelProperty(value="记录修改时间",required=false)
+    private Date updateTime;
+
+    /**
+     * 记录创建或修改备注(INSERT_UPDATE_REMARK,VARCHAR,100)
+     */
+    @ApiModelProperty(value="记录创建或修改备注",required=false)
+    private String insertUpdateRemark;
+
+    /**
+     * 逻辑删除 0:未删除 ;1:已删除(DELETED,DECIMAL,38)
+     */
+    @ApiModelProperty(value="逻辑删除 0:未删除 ;1:已删除",required=false)
+    private BigDecimal deleted;
+
+    /**
+     * 仓库所在厂区(SALE_WAREHOUSE,VARCHAR,50)
+     */
+    @ApiModelProperty(value="仓库所在厂区",required=false)
+    private String saleWarehouse;
+
+    /**
+     * 米数(STEEL_METER,DECIMAL,0)
+     */
+    @ApiModelProperty(value="米数",required=false)
+    private BigDecimal steelMeter;
+
+    /**
+     * 是否磅重销售(IS_POUND_SALE,DECIMAL,0)
+     */
+    @ApiModelProperty(value="是否磅重销售",required=false)
+    private BigDecimal isPoundSale;
+
+    /**
+     * 物资理重(METER_WEIGHT,DECIMAL,0)
+     */
+    @ApiModelProperty(value="物资理重",required=false)
+    private BigDecimal meterWeight;
+
+    private static final long serialVersionUID = 1L;
+
+    @Override
+    public BigDecimal getId() {
+        return this.saleMaterialId;
+    }
+
+    @Override
+    public void setId(BigDecimal saleMaterialId) {
+        this.saleMaterialId = saleMaterialId;
+    }
+
+    public BigDecimal getSaleMaterialId() {
+        return saleMaterialId;
+    }
+
+    public void setSaleMaterialId(BigDecimal saleMaterialId) {
+        this.saleMaterialId = saleMaterialId;
+    }
+
+    public BigDecimal getSaleOrderId() {
+        return saleOrderId;
+    }
+
+    public void setSaleOrderId(BigDecimal saleOrderId) {
+        this.saleOrderId = saleOrderId;
+    }
+
+    public BigDecimal getMaterialId() {
+        return materialId;
+    }
+
+    public void setMaterialId(BigDecimal materialId) {
+        this.materialId = materialId;
+    }
+
+    public BigDecimal getMaterialWeight() {
+        return materialWeight;
+    }
+
+    public void setMaterialWeight(BigDecimal materialWeight) {
+        this.materialWeight = materialWeight;
+    }
+
+    public BigDecimal getMaterialNumber() {
+        return materialNumber;
+    }
+
+    public void setMaterialNumber(BigDecimal materialNumber) {
+        this.materialNumber = materialNumber;
+    }
+
+    public String getEasPrimaryId() {
+        return easPrimaryId;
+    }
+
+    public void setEasPrimaryId(String easPrimaryId) {
+        this.easPrimaryId = easPrimaryId == null ? null : easPrimaryId.trim();
+    }
+
+    public String getInsertUsername() {
+        return insertUsername;
+    }
+
+    public void setInsertUsername(String insertUsername) {
+        this.insertUsername = insertUsername == null ? null : insertUsername.trim();
+    }
+
+    public Date getInsertTime() {
+        return insertTime;
+    }
+
+    public void setInsertTime(Date insertTime) {
+        this.insertTime = insertTime;
+    }
+
+    public String getUpdateUsername() {
+        return updateUsername;
+    }
+
+    public void setUpdateUsername(String updateUsername) {
+        this.updateUsername = updateUsername == null ? null : updateUsername.trim();
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+
+    public String getInsertUpdateRemark() {
+        return insertUpdateRemark;
+    }
+
+    public void setInsertUpdateRemark(String insertUpdateRemark) {
+        this.insertUpdateRemark = insertUpdateRemark == null ? null : insertUpdateRemark.trim();
+    }
+
+    public BigDecimal getDeleted() {
+        return deleted;
+    }
+
+    public void setDeleted(BigDecimal deleted) {
+        this.deleted = deleted;
+    }
+
+    public String getSaleWarehouse() {
+        return saleWarehouse;
+    }
+
+    public void setSaleWarehouse(String saleWarehouse) {
+        this.saleWarehouse = saleWarehouse == null ? null : saleWarehouse.trim();
+    }
+
+    public BigDecimal getSteelMeter() {
+        return steelMeter;
+    }
+
+    public void setSteelMeter(BigDecimal steelMeter) {
+        this.steelMeter = steelMeter;
+    }
+
+    public BigDecimal getIsPoundSale() {
+        return isPoundSale;
+    }
+
+    public void setIsPoundSale(BigDecimal isPoundSale) {
+        this.isPoundSale = isPoundSale;
+    }
+
+    public BigDecimal getMeterWeight() {
+        return meterWeight;
+    }
+
+    public void setMeterWeight(BigDecimal meterWeight) {
+        this.meterWeight = meterWeight;
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(getClass().getSimpleName());
+        sb.append(" [");
+        sb.append("Hash = ").append(hashCode());
+        sb.append(", saleMaterialId=").append(saleMaterialId);
+        sb.append(", saleOrderId=").append(saleOrderId);
+        sb.append(", materialId=").append(materialId);
+        sb.append(", materialWeight=").append(materialWeight);
+        sb.append(", materialNumber=").append(materialNumber);
+        sb.append(", easPrimaryId=").append(easPrimaryId);
+        sb.append(", insertUsername=").append(insertUsername);
+        sb.append(", insertTime=").append(insertTime);
+        sb.append(", updateUsername=").append(updateUsername);
+        sb.append(", updateTime=").append(updateTime);
+        sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
+        sb.append(", deleted=").append(deleted);
+        sb.append(", saleWarehouse=").append(saleWarehouse);
+        sb.append(", steelMeter=").append(steelMeter);
+        sb.append(", isPoundSale=").append(isPoundSale);
+        sb.append(", meterWeight=").append(meterWeight);
+        sb.append(", serialVersionUID=").append(serialVersionUID);
+        sb.append("]");
+        return sb.toString();
+    }
+}

+ 15 - 0
src/main/java/com/steerinfo/dil/model/AmsSaleOrder.java

@@ -135,6 +135,12 @@ public class AmsSaleOrder implements IBasePO<BigDecimal> {
     @ApiModelProperty(value="订单关闭状态(0:未关闭;1:已关闭)",required=false)
     private BigDecimal closeStatus;
 
+    /**
+     * 销售员ID(SALER_ID,DECIMAL,0)
+     */
+    @ApiModelProperty(value="销售员ID",required=false)
+    private BigDecimal salerId;
+
     private static final long serialVersionUID = 1L;
 
     @Override
@@ -315,6 +321,14 @@ public class AmsSaleOrder implements IBasePO<BigDecimal> {
         this.closeStatus = closeStatus;
     }
 
+    public BigDecimal getSalerId() {
+        return salerId;
+    }
+
+    public void setSalerId(BigDecimal salerId) {
+        this.salerId = salerId;
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
@@ -342,6 +356,7 @@ public class AmsSaleOrder implements IBasePO<BigDecimal> {
         sb.append(", insertUpdateRemark=").append(insertUpdateRemark);
         sb.append(", deleted=").append(deleted);
         sb.append(", closeStatus=").append(closeStatus);
+        sb.append(", salerId=").append(salerId);
         sb.append(", serialVersionUID=").append(serialVersionUID);
         sb.append("]");
         return sb.toString();

+ 1 - 2
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderMaterialService.java

@@ -67,6 +67,5 @@ public interface IAmsSaleOrderMaterialService{
     Map<String, Object> getPriceMap(Map<String, Object> map);
     // 得到单价和单价id
     Map<String, Object> getBenPrice(Map<String, Object> map);
-    // 销售直接选择车牌号派发副产品运输订单
-    int dispatchByproductOrderBySale(Map<String, Object> mapValue);
+
 }

+ 28 - 0
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderService.java

@@ -97,4 +97,32 @@ public interface IAmsSaleOrderService {
 
     // 销售焦炭订单
     List<Map<String, Object>> getCokeSaleOrderList(Map<String,Object> mapValue);
+
+    // 新增钢材销售订单
+    int addSteelSaleOrder(Map<String, Object> mapValue);
+
+    // 展示销售订单下的车序号和物资
+    List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId);
+
+    // 钢材派发运输订单
+    int dispatchSteelOrder(List<Map<String, Object>> mapList);
+
+    // 根据详细地址id匹配承运商
+    List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId);
+
+    // 根据详细地址匹配承运商
+    Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue);
+
+    // 将车序号下发给承运商
+    int dispatchToCarrier(List<Map<String,Object>> mapList);
+
+    List<Map<String,Object>> getSaleOrderListToCarrier(Map<String, Object> mapValue);
+    //展示未匹配承运商的车序号
+    List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue);
+    // 展示车序号的详情
+    List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId);
+    // 展示已分配承运商但未派车的车序号
+    List<Map<String, Object>> getNoCarTruckNoList(Map<String, Object> mapValue);
+    // 展示已但未派车的车序号
+    List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue);
 }

+ 3 - 10
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderMaterialServiceImpl.java

@@ -480,6 +480,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
             omstruckOrder.setOrderType(status);
             // 运输线路id
             omstruckOrder.setLineId(lineId);
+            omstruckOrder.setInsertTime(new Date());
             /*
              运输订单子表
              */
@@ -493,6 +494,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
             omstruckOrderMaterial.setMaterialId(materialId);
             // 物资重量
             omstruckOrderMaterial.setOrderMaterialWeight(materialNumber);
+            omstruckOrderMaterial.setInsertTime(new Date());
             // 新增车序号表
             result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
             // 新增车序号-物资中间表
@@ -653,6 +655,7 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
             omstruckOrder.setOrderType(status);
             // 运输线路id
             omstruckOrder.setLineId(lineId);
+            omstruckOrder.setInsertTime(new Date());
             /*
              运输订单子表
              */
@@ -795,15 +798,5 @@ public class AmsSaleOrderMaterialServiceImpl implements IAmsSaleOrderMaterialSer
         return resultMap;
     }
 
-    /**
-     * 销售直接选择车牌号派发副产品运输订单
-     * @param mapValue
-     * @return
-     */
-    @Override
-    public int dispatchByproductOrderBySale(Map<String, Object> mapValue) {
-        return 0;
-    }
-
 
 }

+ 542 - 23
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -1,15 +1,14 @@
 package com.steerinfo.dil.service.impl;
 
-import com.steerinfo.dil.mapper.AmsDispatchSaleOrderMapper;
-import com.steerinfo.dil.mapper.AmsSaleOrderMapper;
-import com.steerinfo.dil.mapper.AmsSaleOrderMaterialMapper;
-import com.steerinfo.dil.mapper.AmsSaleTrucknoMaterialMapper;
-import com.steerinfo.dil.model.AmsDispatchSaleOrder;
-import com.steerinfo.dil.model.AmsSaleOrder;
-import com.steerinfo.dil.model.AmsSaleOrderMaterial;
-import com.steerinfo.dil.model.AmsSaleTrucknoMaterial;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.steerinfo.dil.feign.JoinFeign;
+import com.steerinfo.dil.feign.TmsTruckFeign;
+import com.steerinfo.dil.mapper.*;
+import com.steerinfo.dil.model.*;
 import com.steerinfo.dil.service.IAmsSaleOrderService;
 import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.EASUtil;
+import com.steerinfo.dil.util.NumberToWeightUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -44,6 +43,24 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
     @Autowired
     AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
+    @Autowired
+    AmsSaleMaterialMapper amsSaleMaterialMapper;
+    @Autowired
+    AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
+    @Autowired
+    RmsReceivePlaceMapper rmsReceivePlaceMapper;
+    @Autowired
+    JoinFeign joinFeign;
+    @Autowired
+    OmstruckOrderMapper omstruckOrderMapper;
+    @Autowired
+    OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
+    @Autowired
+    AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
+    @Autowired
+    TmsTruckFeign tmsTruckFeign;
+    @Autowired
+    EASUtil easUtil;
 
     @Override
     public List<Map<String, Object>> getSaleOrderInfo(Map<String, Object> map) {
@@ -182,6 +199,17 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     @Override
     public int uploadSaleOrder(BigDecimal saleOrderId) {
         AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
+        // 调用金蝶接口,将销售订单推送到金蝶系统
+        Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
+        // 获得金蝶接口配置
+        Map<String, Object> totalMap = easUtil.getTotalMap();
+        // 组装报文
+        totalMap.put("input",input);
+        System.out.println(totalMap);
+        String json = JSONUtils.toJSONString(totalMap);
+        System.out.println(json);
+        String s = joinFeign.pushSaleOrderToEas(totalMap);
+        System.out.println(s);
         amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
         return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
     }
@@ -409,7 +437,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     @Override
     public List<Map<String, Object>> getSaleOrderListBySaleCompanyes(Map<String, Object> map) {
         List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListBySaleCompanyes(map);
-        String statusStr;
         for (Map<String, Object> resultMap : resultList) {
             BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
             Map<String,Object> loserMap = new HashMap<>();
@@ -427,15 +454,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 }
                 resultMap.put("materialName",materialName);
             }
-            BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus");
-//            if (saleOrderStatus.intValue() == 2) {
-//                statusStr = "销售公司已审核";
-//            }
-//            else {
-//                statusStr = "财务已审核";
-//            }
-            statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批";
-            resultMap.put("statusStr",statusStr);
             resultMap.put("netWeight",netWeight);
             resultMap.put("carNum",carNum);
         }
@@ -444,7 +462,28 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 
     @Override
     public List<Map<String, Object>> getAmsSaleOrderApprovedes(Map<String, Object> map) {
-        return amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
+        List<Map<String,Object>> resultList = amsSaleOrderMapper.getAmsSaleOrderApprovedes(map);
+        for (Map<String, Object> resultMap : resultList) {
+            BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
+            Map<String,Object> loserMap = new HashMap<>();
+            BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
+            BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
+            loserMap.put("saleOrderId",saleOrderId);
+            loserMap.put("con",map.get("con"));
+            // 物资
+            List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
+            if (materialList != null && materialList.size() > 0) {
+                Map<String, Object> materialMap = materialList.get(0);
+                String materialName = (String) materialMap.get("materialName");
+                if (materialList.size() != 1) {
+                    materialName += "...";
+                }
+                resultMap.put("materialName",materialName);
+            }
+            resultMap.put("netWeight",netWeight);
+            resultMap.put("carNum",carNum);
+        }
+        return resultList;
     }
 
     /*
@@ -476,17 +515,497 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     @Override
     public List<Map<String, Object>> getCokeSaleOrderList(Map<String, Object> mapValue) {
         List<Map<String,Object>> mapList = amsSaleOrderMapper.getCokeSaleOrderList(mapValue);
-        String statusStr;
         for (Map<String, Object> resultMap : mapList) {
             BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
             BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
             BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
-            BigDecimal saleOrderStatus = (BigDecimal) resultMap.get("saleOrderStatus");
-            statusStr = saleOrderStatus.intValue() == 2 ? "销售公司已审批" : "财务已审批";
-            resultMap.put("statusStr",statusStr);
             resultMap.put("netWeight",netWeight);
             resultMap.put("carNum",carNum);
         }
         return mapList;
     }
+
+    /**
+     * 新增钢材销售订单
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public int addSteelSaleOrder(Map<String, Object> mapValue) {
+        List<Map<String,Object>> mapList = (List<Map<String, Object>>) mapValue.get("mapList");
+        // 得到发货单位
+        BigDecimal shipperId = DataChange.dataToBigDecimal(mapValue.get("shipperId"));
+        // 收货单位
+        BigDecimal receiveId = DataChange.dataToBigDecimal(mapValue.get("receiveId"));
+        // 是否自提
+        String isSelfMention = (String) mapValue.get("isSelfMention");
+        // 备注
+        String saleRemark = (String) mapValue.get("saleRemark");
+        // 收款客户
+        String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
+        // 业务员
+        BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
+        BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
+        int result = 0;
+        // 销售订单
+        AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
+        amsSaleOrder.setReceiveId(receiveId);
+        amsSaleOrder.setSaleRemark(saleRemark == null ? "":saleRemark);
+        amsSaleOrder.setShipperId(shipperId);
+        amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
+        amsSaleOrder.setSaleOrderId(saleOrderId);
+        amsSaleOrder.setSalerId(salerId);
+        amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WXSDD",saleOrderId.intValue(),"-"));
+        amsSaleOrder.setInsertTime(new Date());
+        amsSaleOrder.setInsertUpdateRemark("物流新增销售订单");
+        amsSaleOrder.setInsertUsername("物流");
+        amsSaleOrder.setUpdateTime(new Date());
+        amsSaleOrder.setDeleted(new BigDecimal(0));
+        amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
+        // 税率默认13%
+        amsSaleOrder.setSaleOrderTax("13%");
+        // 含税单价某人4000
+        amsSaleOrder.setSaleUnitPrice(new BigDecimal(4000));
+        // 收款客户
+        amsSaleOrder.setSaleOrderReceiveCustomer(saleOrderReceiveCustomer);
+        // 销售订单物资表
+        AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+        // 车序号物资表
+        AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
+        // 遍历每一行
+        for (Map<String, Object> map : mapList) {
+            /*
+             车序号表
+             */
+            // 得到车序号
+            BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("truckNo"));
+            Map<String,Object> saleMap = new HashMap<>();
+            saleMap.put("saleOrderId",saleOrderId);
+            saleMap.put("saleOrderMaterialTruckNo",truckNo);
+            // 检测销售订单下的车序号是否已存在
+            List<AmsSaleOrderMaterial> amsSaleOrderMaterials = amsSaleOrderMaterialMapper.selectByParameters(saleMap);
+            // 车序号表
+            AmsSaleOrderMaterial amsSaleOrderMaterial = new AmsSaleOrderMaterial();
+            if (amsSaleOrderMaterials == null || amsSaleOrderMaterials.size() == 0) {
+                // 车序号主键
+                BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
+                BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("saleShipperAddressId"));
+                String place = (String) (map.get("place"));
+                if (place != null) {
+                    List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place);
+                    if (placeIdList == null || placeIdList.size() == 0) {
+                        RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
+                        rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
+                        rmsReceivePlace.setAddressId(shippingAddressId);
+                        rmsReceivePlace.setAddressDeliveryAddress(place);
+                        amsSaleOrderMaterial.setSaleShippingAddressId(rmsReceivePlace.getPlaceId());
+                        rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
+                    } else {
+                        amsSaleOrderMaterial.setSaleShippingAddressId((BigDecimal) placeIdList.get(0).get("placeId"));
+                    }
+                }
+                // 自动匹配承运商
+                List<Map<String, Object>> carrierList = getCarrierByPlace(amsSaleOrderMaterial.getSaleShippingAddressId());
+                // 单一承运商才进行匹配
+                if (carrierList != null && carrierList.size() == 1) {
+                    List<Map<String,Object>> list = new ArrayList<>();
+                    Map<String, Object> map1 = carrierList.get(0);
+                    // 传入车序号主键和承运商id
+                    map1.put("saleOrderMaterialId",saleOrderMaterialId);
+                    map1.put("carrierId",map1.get("value"));
+                    list.add(map1);
+                    dispatchToCarrier(list);
+                }
+                // 收货方姓名
+                String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
+                // 收货方电话
+                String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
+                // 截止日期
+                String dateOfReceiptStr = String.valueOf(map.get("saleDateOfReceipt"));
+                Date dateOfReceipt = null;
+                if (!"null".equals(dateOfReceiptStr) && !"undefined".equals(dateOfReceiptStr)) {
+                    dateOfReceipt = new Date(Long.valueOf(dateOfReceiptStr));
+                }
+                amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
+                amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
+                amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
+                if (consigneeName != null && !consigneeName.equals("null")) {
+                    amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
+                }
+                if (consigneeTel != null && !consigneeTel.equals("null")) {
+                    amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
+                }
+                amsSaleOrderMaterial.setSaleDateOfReceipt(dateOfReceipt);
+                amsSaleOrderMaterial.setInsertTime(new Date());
+                amsSaleOrderMaterial.setUpdateTime(new Date());
+                amsSaleOrderMaterial.setInsertUpdateRemark("物流新增");
+                result += amsSaleOrderMaterialMapper.insertSelective(amsSaleOrderMaterial);
+            }
+            else {
+                amsSaleOrderMaterial = amsSaleOrderMaterials.get(0);
+            }
+            /*
+            销售订单物资表
+             */
+            // 物资
+            BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
+            // 物资件数
+            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("materialNumber"));
+            // 钢材米数
+            BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
+            // 是否磅重销售(0:磅重;1:理重)
+            BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPoundSale"));
+            // 销售订单物资表主键
+            BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
+            amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+            amsSaleMaterial.setSaleOrderId(saleOrderId);
+            amsSaleMaterial.setMaterialId(materialId);
+            amsSaleMaterial.setMaterialNumber(materialNumber);
+            amsSaleMaterial.setInsertTime(new Date());
+            amsSaleMaterial.setUpdateTime(new Date());
+            if (!steelMeters.toString().equals("0")) {
+                amsSaleMaterial.setSteelMeter(steelMeters);
+            }
+            amsSaleMaterial.setIsPoundSale(isPoundSale);
+            amsSaleMaterial.setInsertUpdateRemark("物流新增");
+            result += amsSaleMaterialMapper.insertSelective(amsSaleMaterial);
+            /*
+            车序号物资表
+             */
+            // 车序号物资表主键
+            BigDecimal truckNoMaterialId = amsSaleTrucknoMaterialMapper.selectMaxId();
+            amsSaleTrucknoMaterial.setTrucknoMaterialId(truckNoMaterialId);
+            amsSaleTrucknoMaterial.setSaleOrderMaterialId(amsSaleOrderMaterial.getSaleOrderMaterialId());
+            amsSaleTrucknoMaterial.setMaterialId(amsSaleMaterial.getSaleMaterialId());
+            amsSaleTrucknoMaterial.setSaleOrderMaterialNumber(materialNumber);
+            amsSaleTrucknoMaterial.setInsertTime(new Date());
+            amsSaleTrucknoMaterial.setUpdateTime(new Date());
+            amsSaleTrucknoMaterial.setInsertUpdateRemark("物流新增");
+            result += amsSaleTrucknoMaterialMapper.insertSelective(amsSaleTrucknoMaterial);
+        }
+        result += amsSaleOrderMapper.insertSelective(amsSaleOrder);
+        return result;
+    }
+
+    /**
+     * 展示销售订单下的车序号和物资
+     * @param saleOrderId
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId) {
+        List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
+        for (Map<String,Object> map : mapList) {
+            BigDecimal placeId = (BigDecimal) map.get("placeId");
+            List<Map<String,Object>> carrierAndPriceList = getCarrierByPlace(placeId);
+            map.put("carrierAndPriceList",carrierAndPriceList);
+        }
+        return mapList;
+    }
+
+    /**
+     * 销售钢材派车
+     * @param mapList
+     * @return
+     */
+    @Transactional
+    @Override
+    public int dispatchSteelOrder(List<Map<String, Object>> mapList) {
+        int result = 0;
+        // 遍历每一行
+        for (Map<String,Object> map : mapList) {
+            // 得到车牌号
+            String capacityNumber = (String) map.get("capacityNumber");
+            // 得到车序号表主键
+            BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+            // 得到承运商
+            BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
+            // 运输线路id
+            BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
+            BigDecimal isSteel = new BigDecimal(1);
+            // 得到运力id
+            BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
+            List<Map<String,Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
+            /*
+             定向派单表
+             */
+            // 通过车序号主键确认定向派单是否已存在
+            BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
+            if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
+                AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
+                // 主键
+                BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
+                amsDispatchSaleOrder.setDispatchId(dispatchId);
+                // 车序号表id
+                amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
+                // 承运商id
+                amsDispatchSaleOrder.setCarrierId(carrierId);
+                // 派单时间和成交时间
+                amsDispatchSaleOrder.setDispatchTime(new Date());
+                amsDispatchSaleOrder.setDispatchDealTime(new Date());
+                // 成交类型
+                amsDispatchSaleOrder.setDispatchType(new BigDecimal(0));
+                // 车序号状态
+                amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
+                result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
+            }
+            // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
+            else {
+                AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
+                amsDispatchSaleOrder.setCarrierId(carrierId);
+                result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
+            }
+            /*
+             运输订单
+             */
+            OmstruckOrder omstruckOrder = new OmstruckOrder();
+            Map<String,Object> map1 = new HashMap<>();
+            map1.put("orderType",new BigDecimal(2));
+            map1.put("orderPlanId",saleOrderMaterialId);
+            List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
+            if (omstruckOrders == null || omstruckOrders.size() == 0) {
+                // 运输订单主键
+                BigDecimal orderId = omstruckOrderMapper.selectMaxId();
+                omstruckOrder.setOrderId(orderId);
+                // 车序号主键
+                omstruckOrder.setOrderPlanId(saleOrderMaterialId);
+                //添加承运商ID 和 运价ID
+//            Object priceId = map.get("priceId");
+                Object priceId = map.get("priceId");
+                if (priceId != null) {
+                    omstruckOrder.setPriceId(DataChange.dataToBigDecimal(priceId));
+                }
+                omstruckOrder.setCarrierId(carrierId);
+                // 运输订单号
+                omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
+                // 运力id
+                omstruckOrder.setCapacityId(capacityId);
+                // 承运商
+                omstruckOrder.setCarrierId(carrierId);
+                // 下发时间
+                omstruckOrder.setOrderIssueTime(new Date());
+                // 运单状态
+                omstruckOrder.setOrderStatus(new BigDecimal(4));
+                BigDecimal status;
+                // 钢材
+                if (isSteel != null && isSteel.intValue() == 1) {
+                    status = new BigDecimal(1);
+                }
+                // 非钢材(危化品,焦炭,副产品)
+                else {
+                    status = new BigDecimal(2);
+                }
+                // 订单类型
+                omstruckOrder.setOrderType(status);
+                // 运输线路id
+                omstruckOrder.setLineId(lineId);
+                omstruckOrder.setInsertTime(new Date());
+                omstruckOrder.setInsertUsername("");
+                result += omstruckOrderMapper.insertSelective(omstruckOrder);
+            }
+            else {
+                omstruckOrder = omstruckOrders.get(0);
+            }
+            for (Map<String, Object> materialMap : materialList) {
+                BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
+                BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
+                BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
+                /*
+                运输订单物资子表
+                */
+                OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
+                // 主键
+                BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
+                omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
+                // 运输订单id
+                omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
+                // 物资id
+                omstruckOrderMaterial.setMaterialId(materialId);
+                // 物资重量
+                omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
+                // 物资件数
+                omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
+                // 新增运输订单子表
+                result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
+            }
+            // 调用websocket
+            Map<String,Object> orderIdMap = new HashMap<>();
+            orderIdMap.put("orderId",omstruckOrder.getOrderId());
+            amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
+            // 生成运输执行总实绩
+            result += tmsTruckFeign.addTotalResult(orderIdMap);
+        }
+        return result;
+    }
+
+    /**
+     * 根据详细地址匹配承运商
+     * @param placeId
+     * @return
+     */
+    @Override
+    public synchronized List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId) {
+        BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
+        List<Map<String,Object>> mapList = amsSaleOrderMapper.getCarrierByPlace(addressId);
+        return mapList;
+    }
+
+    /**
+     * 根据详细地址和承运商匹配单价
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public Map<String, Object> getPriceByCarrierAndPlace(Map<String, Object> mapValue) {
+        Map<String,Object> map = amsSaleOrderMapper.getPriceByCarrierAndPlace(mapValue);
+        return map;
+    }
+
+    /**
+     * 将车序号下发给承运商
+     * @param mapList
+     * @return
+     */
+    @Override
+    public int dispatchToCarrier(List<Map<String,Object>> mapList) {
+        int result = 0;
+        // 遍历每一行
+        for (Map<String, Object> map : mapList) {
+            // 得到承运商
+            BigDecimal carrierId =DataChange.dataToBigDecimal(map.get("carrierId"));
+            // 得到车序号表主键
+            BigDecimal saleOrderMaterialId =DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+            AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
+            BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
+            amsDispatchSaleOrder.setDispatchId(dispatchId);
+            amsDispatchSaleOrder.setCarrierId(carrierId);
+            amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
+            amsDispatchSaleOrder.setInsertTime(new Date());
+            amsDispatchSaleOrder.setInsertUpdateRemark("授权承运商");
+            // 派单时间和成交时间
+            amsDispatchSaleOrder.setDispatchTime(new Date());
+            amsDispatchSaleOrder.setDispatchDealTime(new Date());
+            // 成交类型
+            amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
+            // 车序号状态
+            amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
+            result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
+        }
+        return result;
+    }
+
+    @Override
+    public List<Map<String, Object>> getSaleOrderListToCarrier(Map<String, Object> map) {
+        List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleOrderListToCarrier(map);
+        for (Map<String, Object> resultMap : resultList) {
+            BigDecimal saleOrderId = (BigDecimal) resultMap.get("saleOrderId");
+            Map<String,Object> loserMap = new HashMap<>();
+            BigDecimal netWeight = amsSaleOrderMapper.getNetWeight(saleOrderId);
+            BigDecimal carNum = amsSaleOrderMapper.getCarNum(saleOrderId);
+            loserMap.put("saleOrderId",saleOrderId);
+            loserMap.put("con",map.get("con"));
+            // 物资
+            List<Map<String,Object>> materialList = amsSaleOrderMapper.getSaleMaterial(loserMap);
+            if (materialList != null && materialList.size() > 0) {
+                Map<String, Object> materialMap = materialList.get(0);
+                String materialName = (String) materialMap.get("materialName");
+                if (materialList.size() != 1) {
+                    materialName += "...";
+                }
+                resultMap.put("materialName",materialName);
+            }
+            resultMap.put("netWeight",netWeight);
+            resultMap.put("carNum",carNum);
+        }
+        return resultList;
+    }
+
+    /**
+     * 展示未匹配承运商的车序号
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getSteelTruckNoList(Map<String, Object> mapValue) {
+        List<Map<String, Object>> resultList = amsSaleOrderMapper.getSteelTruckNoList(mapValue);
+        for (Map<String, Object> resultMap : resultList) {
+            BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
+            // 物资
+            List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
+            if (materialList != null && materialList.size() > 0) {
+                Map<String, Object> materialMap = materialList.get(0);
+                String materialName = (String) materialMap.get("materialName");
+                if (materialList.size() != 1) {
+                    materialName += "...";
+                }
+                resultMap.put("materialName",materialName);
+            }
+        }
+        return resultList;
+    }
+
+    /**
+     * 展示车序号的详情
+     * @param saleOrderMaterialId
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getTruckNoMaterial(BigDecimal saleOrderMaterialId) {
+        List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoMaterialAndCarrier(saleOrderMaterialId);
+        for (Map<String,Object> map : mapList) {
+            BigDecimal placeId = (BigDecimal) map.get("placeId");
+            List<Map<String,Object>> carrierAndPriceList = getCarrierByPlace(placeId);
+            map.put("carrierAndPriceList",carrierAndPriceList);
+        }
+        return mapList;
+    }
+
+    /**
+     * 展示已分配承运商但未派车的车序号
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getNoCarTruckNoList(Map<String, Object> mapValue) {
+        List<Map<String, Object>> resultList = amsSaleOrderMapper.getCarrierTruckNoList(mapValue);
+        for (Map<String, Object> resultMap : resultList) {
+            BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
+            // 物资
+            List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
+            if (materialList != null && materialList.size() > 0) {
+                Map<String, Object> materialMap = materialList.get(0);
+                String materialName = (String) materialMap.get("materialName");
+                if (materialList.size() != 1) {
+                    materialName += "...";
+                }
+                resultMap.put("materialName",materialName);
+            }
+        }
+        return resultList;
+    }
+
+    /**
+     * 展示已派车的车序号
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getHaveCarTruckNoList(Map<String, Object> mapValue) {
+        List<Map<String, Object>> resultList = amsSaleOrderMapper.getHaveCarTruckNoList(mapValue);
+        for (Map<String, Object> resultMap : resultList) {
+            BigDecimal saleOrderMaterialId = (BigDecimal) resultMap.get("saleOrderMaterialId");
+            // 物资
+            List<Map<String,Object>> materialList = amsSaleOrderMapper.getTruckNoMaterial(saleOrderMaterialId);
+            if (materialList != null && materialList.size() > 0) {
+                Map<String, Object> materialMap = materialList.get(0);
+                String materialName = (String) materialMap.get("materialName");
+                if (materialList.size() != 1) {
+                    materialName += "...";
+                }
+                resultMap.put("materialName",materialName);
+            }
+        }
+        return resultList;
+    }
+
 }

+ 22 - 0
src/main/java/com/steerinfo/dil/util/DataChange.java

@@ -236,4 +236,26 @@ public class DataChange {
         map.put("startDate", dayStartTime + " 00:00:00");
         map.put("endDate", dayEndTime + " 00:00:00");
     }
+
+    /**
+     * 生成带时间的八位数顺序号
+     * @param start 前缀
+     * @param id 顺序号  主键Id
+     * @return
+     */
+    public static String generateEightDigitsNumber(String start, Integer id,String pot){
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+        StringBuilder sb = new StringBuilder(start + pot + sdf.format(new Date()) + pot);
+        sb.append(
+                id < 10
+                        ? "0000000" + id : id < 100
+                        ? "000000" + id : id < 1000
+                        ? "00000" + id : id < 10000
+                        ? "0000" + id : id < 100000
+                        ? "000" + id : id < 1000000
+                        ? "00" + id : id < 10000000
+                        ? "0" + id : id.toString()
+        );
+        return sb.toString();
+    }
 }

+ 72 - 0
src/main/java/com/steerinfo/dil/util/EASUtil.java

@@ -0,0 +1,72 @@
+package com.steerinfo.dil.util;
+
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 配置金蝶正式环境连接常量Map
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2021/11/15 19:44
+ * @Version:V2.0
+ */
+@Component
+public class EASUtil {
+    // totalMap
+    public final Map<String,Object> totalMap = new HashMap<>();
+    // context
+    public final Map<String,Object> context = new HashMap<>();
+    public final boolean logError = true;
+    public final boolean logData = true;
+    // context
+    public final Map<String,Object> login = new HashMap<>();
+    public final String password = "dgjt@kingdee";
+    public final String dcName = "FDDGEAS85";
+    public final String dbType = "1";
+    public final String userName = "user";
+    // context
+    public final String command = "saveSaleOrderBillHandler";
+
+    /**
+     * 得到context的map
+     * @return
+     */
+    public Map<String,Object> getContext(){
+        this.context.put("logError",logError);
+        this.context.put("logData",logData);
+        return this.context;
+    }
+
+    /**
+     * 得到login的map
+     * @return
+     */
+    public Map<String,Object> getLogin(){
+        this.login.put("password",password);
+        this.login.put("dcName",dcName);
+        this.login.put("dbType",dbType);
+        this.login.put("userName",userName);
+        return this.login;
+    }
+
+    /**
+     * 得到command字符串
+     * @return
+     */
+    public String getCommand(){
+        return this.command;
+    }
+
+    /**
+     * 将所有的配置放入到totalMap的map里面
+     * @return
+     */
+    public Map<String,Object> getTotalMap() {
+        totalMap.put("context",getContext());
+        totalMap.put("login",getLogin());
+        totalMap.put("command",getCommand());
+        return this.totalMap;
+    }
+}

+ 24 - 0
src/main/java/com/steerinfo/dil/util/NumberToWeightUtil.java

@@ -0,0 +1,24 @@
+package com.steerinfo.dil.util;
+
+import java.math.BigDecimal;
+
+/**
+ * @Description:
+ * @Author:HuJianGuo
+ * @GreateTime:2022/3/23 17:09
+ * @Version:V2.0
+ */
+public class NumberToWeightUtil {
+
+    /**
+     *吨位:tonnage     件数:number      转换系数:COEFFICIENT  值:3.049
+     * 参数传入 件数
+     * 返回值为 吨位
+     */
+    public static BigDecimal func (BigDecimal number){
+
+        BigDecimal COEFFICIENT= BigDecimal.valueOf(3.049);
+        BigDecimal tonnage = COEFFICIENT.multiply(number);
+        return tonnage;
+    }
+}

+ 2 - 1
src/main/resources/application-dev.yml

@@ -18,7 +18,8 @@ openfeign:
     url: ${TMSTRUCKFEIGN_URL:172.16.33.162:8008}
   ImFeign:
     url: ${IMFEIGN_URL:172.16.33.162:8018}
-
+  JoinFeign:
+    url: ${JOINFEIGN_URL:172.16.33.162:8006}
 
 
   #测试环境端口

+ 2 - 0
src/main/resources/application-prod.yml

@@ -18,6 +18,8 @@ openfeign:
       url: ${TMSTRUCKFEIGN_URL:172.16.33.166:8088}
    ImFeign:
       url: ${IMFEIGN_URL:172.16.33.166:8055}
+   JoinFeign:
+     url: ${JOINFEIGN_URL:172.16.33.166:8066}
 
  #正式环境端口
 

+ 6 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsDispatchSaleOrderMapper.xml

@@ -664,4 +664,10 @@
             WHERE RC.CARRIER_SSO_ID = #{carrierSsoId,jdbcType=VARCHAR}
         </if>
     </select>
+
+    <select id="isDispatchExist" parameterType="DECIMAL" resultType="DECIMAL" >
+        SELECT ADSO.DISPATCH_ID AS "dispatchId"
+        FROM AMS_DISPATCH_SALE_ORDER ADSO
+        WHERE ADSO.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+    </select>
 </mapper>

+ 499 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.xml

@@ -0,0 +1,499 @@
+<?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.steerinfo.dil.mapper.AmsSaleMaterialMapper">
+  <resultMap id="BaseResultMap" type="com.steerinfo.dil.model.AmsSaleMaterial">
+    <id column="SALE_MATERIAL_ID" jdbcType="DECIMAL" property="saleMaterialId" />
+    <result column="SALE_ORDER_ID" jdbcType="DECIMAL" property="saleOrderId" />
+    <result column="MATERIAL_ID" jdbcType="DECIMAL" property="materialId" />
+    <result column="MATERIAL_WEIGHT" jdbcType="DECIMAL" property="materialWeight" />
+    <result column="MATERIAL_NUMBER" jdbcType="DECIMAL" property="materialNumber" />
+    <result column="EAS_PRIMARY_ID" jdbcType="VARCHAR" property="easPrimaryId" />
+    <result column="INSERT_USERNAME" jdbcType="VARCHAR" property="insertUsername" />
+    <result column="INSERT_TIME" jdbcType="TIMESTAMP" property="insertTime" />
+    <result column="UPDATE_USERNAME" jdbcType="VARCHAR" property="updateUsername" />
+    <result column="UPDATE_TIME" jdbcType="TIMESTAMP" property="updateTime" />
+    <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
+    <result column="DELETED" jdbcType="DECIMAL" property="deleted" />
+    <result column="SALE_WAREHOUSE" jdbcType="VARCHAR" property="saleWarehouse" />
+    <result column="STEEL_METER" jdbcType="DECIMAL" property="steelMeter" />
+    <result column="IS_POUND_SALE" jdbcType="DECIMAL" property="isPoundSale" />
+    <result column="METER_WEIGHT" jdbcType="DECIMAL" property="meterWeight" />
+  </resultMap>
+  <sql id="columns">
+    SALE_MATERIAL_ID, SALE_ORDER_ID, MATERIAL_ID, MATERIAL_WEIGHT, MATERIAL_NUMBER, EAS_PRIMARY_ID,
+    INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK,
+    DELETED, SALE_WAREHOUSE, STEEL_METER, IS_POUND_SALE, METER_WEIGHT
+  </sql>
+  <sql id="columns_alias">
+    t.SALE_MATERIAL_ID, t.SALE_ORDER_ID, t.MATERIAL_ID, t.MATERIAL_WEIGHT, t.MATERIAL_NUMBER,
+    t.EAS_PRIMARY_ID, t.INSERT_USERNAME, t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME,
+    t.INSERT_UPDATE_REMARK, t.DELETED, t.SALE_WAREHOUSE, t.STEEL_METER, t.IS_POUND_SALE,
+    t.METER_WEIGHT
+  </sql>
+  <sql id="select">
+    SELECT <include refid="columns" /> FROM AMS_SALE_MATERIAL
+  </sql>
+  <sql id="select_alias">
+    SELECT <include refid="columns_alias" /> FROM AMS_SALE_MATERIAL t
+  </sql>
+  <sql id="where">
+    <where>
+      <if test="saleMaterialId != null">
+        and SALE_MATERIAL_ID = #{saleMaterialId}
+      </if>
+      <if test="saleOrderId != null">
+        and SALE_ORDER_ID = #{saleOrderId}
+      </if>
+      <if test="materialId != null">
+        and MATERIAL_ID = #{materialId}
+      </if>
+      <if test="materialWeight != null">
+        and MATERIAL_WEIGHT = #{materialWeight}
+      </if>
+      <if test="materialNumber != null">
+        and MATERIAL_NUMBER = #{materialNumber}
+      </if>
+      <if test="easPrimaryId != null and easPrimaryId != ''">
+        and EAS_PRIMARY_ID = #{easPrimaryId}
+      </if>
+      <if test="insertUsername != null and insertUsername != ''">
+        and INSERT_USERNAME = #{insertUsername}
+      </if>
+      <if test="insertTime != null">
+        and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+      </if>
+      <if test="updateUsername != null and updateUsername != ''">
+        and UPDATE_USERNAME = #{updateUsername}
+      </if>
+      <if test="updateTime != null">
+        and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+      </if>
+      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+        and INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+      </if>
+      <if test="deleted != null">
+        and DELETED = #{deleted}
+      </if>
+      <if test="saleWarehouse != null and saleWarehouse != ''">
+        and SALE_WAREHOUSE = #{saleWarehouse}
+      </if>
+      <if test="steelMeter != null">
+        and STEEL_METER = #{steelMeter}
+      </if>
+      <if test="isPoundSale != null">
+        and IS_POUND_SALE = #{isPoundSale}
+      </if>
+      <if test="meterWeight != null">
+        and METER_WEIGHT = #{meterWeight}
+      </if>
+    </where>
+  </sql>
+  <sql id="whereLike">
+    <where>
+      <if test="saleMaterialId != null">
+        and SALE_MATERIAL_ID = #{saleMaterialId}
+      </if>
+      <if test="saleOrderId != null">
+        and SALE_ORDER_ID = #{saleOrderId}
+      </if>
+      <if test="materialId != null">
+        and MATERIAL_ID = #{materialId}
+      </if>
+      <if test="materialWeight != null">
+        and MATERIAL_WEIGHT = #{materialWeight}
+      </if>
+      <if test="materialNumber != null">
+        and MATERIAL_NUMBER = #{materialNumber}
+      </if>
+      <if test="easPrimaryId != null and easPrimaryId != ''">
+        and EAS_PRIMARY_ID LIKE '%${easPrimaryId}%'
+      </if>
+      <if test="insertUsername != null and insertUsername != ''">
+        and INSERT_USERNAME LIKE '%${insertUsername}%'
+      </if>
+      <if test="insertTime != null">
+        and TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = #{insertTime}
+      </if>
+      <if test="updateUsername != null and updateUsername != ''">
+        and UPDATE_USERNAME LIKE '%${updateUsername}%'
+      </if>
+      <if test="updateTime != null">
+        and TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = #{updateTime}
+      </if>
+      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+        and INSERT_UPDATE_REMARK LIKE '%${insertUpdateRemark}%'
+      </if>
+      <if test="deleted != null">
+        and DELETED = #{deleted}
+      </if>
+      <if test="saleWarehouse != null and saleWarehouse != ''">
+        and SALE_WAREHOUSE LIKE '%${saleWarehouse}%'
+      </if>
+      <if test="steelMeter != null">
+        and STEEL_METER = #{steelMeter}
+      </if>
+      <if test="isPoundSale != null">
+        and IS_POUND_SALE = #{isPoundSale}
+      </if>
+      <if test="meterWeight != null">
+        and METER_WEIGHT = #{meterWeight}
+      </if>
+    </where>
+  </sql>
+  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+    delete from AMS_SALE_MATERIAL
+    where SALE_MATERIAL_ID = #{saleMaterialId,jdbcType=DECIMAL}
+  </delete>
+  <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
+    delete from AMS_SALE_MATERIAL
+    where 1!=1
+    <if test="saleOrderId != null">
+      or SALE_ORDER_ID = #{saleOrderId}
+    </if>
+    <if test="materialId != null">
+      or MATERIAL_ID = #{materialId}
+    </if>
+    <if test="materialWeight != null">
+      or MATERIAL_WEIGHT = #{materialWeight}
+    </if>
+    <if test="materialNumber != null">
+      or MATERIAL_NUMBER = #{materialNumber}
+    </if>
+    <if test="easPrimaryId != null and easPrimaryId != ''">
+      or EAS_PRIMARY_ID = #{easPrimaryId}
+    </if>
+    <if test="insertUsername != null and insertUsername != ''">
+      or INSERT_USERNAME = #{insertUsername}
+    </if>
+    <if test="insertTime != null">
+      or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+    </if>
+    <if test="updateUsername != null and updateUsername != ''">
+      or UPDATE_USERNAME = #{updateUsername}
+    </if>
+    <if test="updateTime != null">
+      or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+    </if>
+    <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+      or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+    </if>
+    <if test="deleted != null">
+      or DELETED = #{deleted}
+    </if>
+    <if test="saleWarehouse != null and saleWarehouse != ''">
+      or SALE_WAREHOUSE = #{saleWarehouse}
+    </if>
+    <if test="steelMeter != null">
+      or STEEL_METER = #{steelMeter}
+    </if>
+    <if test="isPoundSale != null">
+      or IS_POUND_SALE = #{isPoundSale}
+    </if>
+    <if test="meterWeight != null">
+      or METER_WEIGHT = #{meterWeight}
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.steerinfo.dil.model.AmsSaleMaterial">
+    insert into AMS_SALE_MATERIAL (SALE_MATERIAL_ID, SALE_ORDER_ID, MATERIAL_ID,
+                                   MATERIAL_WEIGHT, MATERIAL_NUMBER, EAS_PRIMARY_ID,
+                                   INSERT_USERNAME, INSERT_TIME, UPDATE_USERNAME,
+                                   UPDATE_TIME, INSERT_UPDATE_REMARK, DELETED,
+                                   SALE_WAREHOUSE, STEEL_METER, IS_POUND_SALE,
+                                   METER_WEIGHT)
+    values (#{saleMaterialId,jdbcType=DECIMAL}, #{saleOrderId,jdbcType=DECIMAL}, #{materialId,jdbcType=DECIMAL},
+            #{materialWeight,jdbcType=DECIMAL}, #{materialNumber,jdbcType=DECIMAL}, #{easPrimaryId,jdbcType=VARCHAR},
+            #{insertUsername,jdbcType=VARCHAR}, #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR},
+            #{updateTime,jdbcType=TIMESTAMP}, #{insertUpdateRemark,jdbcType=VARCHAR}, #{deleted,jdbcType=DECIMAL},
+            #{saleWarehouse,jdbcType=VARCHAR}, #{steelMeter,jdbcType=DECIMAL}, #{isPoundSale,jdbcType=DECIMAL},
+            #{meterWeight,jdbcType=DECIMAL})
+  </insert>
+  <insert id="insertSelective" parameterType="com.steerinfo.dil.model.AmsSaleMaterial">
+    insert into AMS_SALE_MATERIAL
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="saleMaterialId != null">
+        SALE_MATERIAL_ID,
+      </if>
+      <if test="saleOrderId != null">
+        SALE_ORDER_ID,
+      </if>
+      <if test="materialId != null">
+        MATERIAL_ID,
+      </if>
+      <if test="materialWeight != null">
+        MATERIAL_WEIGHT,
+      </if>
+      <if test="materialNumber != null">
+        MATERIAL_NUMBER,
+      </if>
+      <if test="easPrimaryId != null">
+        EAS_PRIMARY_ID,
+      </if>
+      <if test="insertUsername != null">
+        INSERT_USERNAME,
+      </if>
+      <if test="insertTime != null">
+        INSERT_TIME,
+      </if>
+      <if test="updateUsername != null">
+        UPDATE_USERNAME,
+      </if>
+      <if test="updateTime != null">
+        UPDATE_TIME,
+      </if>
+      <if test="insertUpdateRemark != null">
+        INSERT_UPDATE_REMARK,
+      </if>
+      <if test="deleted != null">
+        DELETED,
+      </if>
+      <if test="saleWarehouse != null">
+        SALE_WAREHOUSE,
+      </if>
+      <if test="steelMeter != null">
+        STEEL_METER,
+      </if>
+      <if test="isPoundSale != null">
+        IS_POUND_SALE,
+      </if>
+      <if test="meterWeight != null">
+        METER_WEIGHT,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="saleMaterialId != null">
+        #{saleMaterialId,jdbcType=DECIMAL},
+      </if>
+      <if test="saleOrderId != null">
+        #{saleOrderId,jdbcType=DECIMAL},
+      </if>
+      <if test="materialId != null">
+        #{materialId,jdbcType=DECIMAL},
+      </if>
+      <if test="materialWeight != null">
+        #{materialWeight,jdbcType=DECIMAL},
+      </if>
+      <if test="materialNumber != null">
+        #{materialNumber,jdbcType=DECIMAL},
+      </if>
+      <if test="easPrimaryId != null">
+        #{easPrimaryId,jdbcType=VARCHAR},
+      </if>
+      <if test="insertUsername != null">
+        #{insertUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="insertTime != null">
+        #{insertTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUsername != null">
+        #{updateUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="insertUpdateRemark != null">
+        #{insertUpdateRemark,jdbcType=VARCHAR},
+      </if>
+      <if test="deleted != null">
+        #{deleted,jdbcType=DECIMAL},
+      </if>
+      <if test="saleWarehouse != null">
+        #{saleWarehouse,jdbcType=VARCHAR},
+      </if>
+      <if test="steelMeter != null">
+        #{steelMeter,jdbcType=DECIMAL},
+      </if>
+      <if test="isPoundSale != null">
+        #{isPoundSale,jdbcType=DECIMAL},
+      </if>
+      <if test="meterWeight != null">
+        #{meterWeight,jdbcType=DECIMAL},
+      </if>
+    </trim>
+  </insert>
+  <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.AmsSaleMaterial">
+    update AMS_SALE_MATERIAL
+    set SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL},
+        MATERIAL_ID = #{materialId,jdbcType=DECIMAL},
+        MATERIAL_WEIGHT = #{materialWeight,jdbcType=DECIMAL},
+        MATERIAL_NUMBER = #{materialNumber,jdbcType=DECIMAL},
+        EAS_PRIMARY_ID = #{easPrimaryId,jdbcType=VARCHAR},
+        INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+        INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+        UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+        UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+        INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+        DELETED = #{deleted,jdbcType=DECIMAL},
+        SALE_WAREHOUSE = #{saleWarehouse,jdbcType=VARCHAR},
+        STEEL_METER = #{steelMeter,jdbcType=DECIMAL},
+        IS_POUND_SALE = #{isPoundSale,jdbcType=DECIMAL},
+        METER_WEIGHT = #{meterWeight,jdbcType=DECIMAL}
+    where SALE_MATERIAL_ID = #{saleMaterialId,jdbcType=DECIMAL}
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.AmsSaleMaterial">
+    update AMS_SALE_MATERIAL
+    <set>
+      <if test="saleOrderId != null">
+        SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL},
+      </if>
+      <if test="materialId != null">
+        MATERIAL_ID = #{materialId,jdbcType=DECIMAL},
+      </if>
+      <if test="materialWeight != null">
+        MATERIAL_WEIGHT = #{materialWeight,jdbcType=DECIMAL},
+      </if>
+      <if test="materialNumber != null">
+        MATERIAL_NUMBER = #{materialNumber,jdbcType=DECIMAL},
+      </if>
+      <if test="easPrimaryId != null">
+        EAS_PRIMARY_ID = #{easPrimaryId,jdbcType=VARCHAR},
+      </if>
+      <if test="insertUsername != null">
+        INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="insertTime != null">
+        INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="updateUsername != null">
+        UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+      </if>
+      <if test="updateTime != null">
+        UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="insertUpdateRemark != null">
+        INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+      </if>
+      <if test="deleted != null">
+        DELETED = #{deleted,jdbcType=DECIMAL},
+      </if>
+      <if test="saleWarehouse != null">
+        SALE_WAREHOUSE = #{saleWarehouse,jdbcType=VARCHAR},
+      </if>
+      <if test="steelMeter != null">
+        STEEL_METER = #{steelMeter,jdbcType=DECIMAL},
+      </if>
+      <if test="isPoundSale != null">
+        IS_POUND_SALE = #{isPoundSale,jdbcType=DECIMAL},
+      </if>
+      <if test="meterWeight != null">
+        METER_WEIGHT = #{meterWeight,jdbcType=DECIMAL},
+      </if>
+    </set>
+    where SALE_MATERIAL_ID = #{saleMaterialId,jdbcType=DECIMAL}
+  </update>
+  <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+    <include refid="select" />
+    where SALE_MATERIAL_ID = #{saleMaterialId,jdbcType=DECIMAL}
+  </select>
+  <select id="selectByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+    <include refid="select" />
+    <include refid="where" />
+  </select>
+  <select id="selectLikeByParameters" parameterType="java.util.HashMap" resultMap="BaseResultMap">
+    <include refid="select" />
+    <include refid="whereLike" />
+  </select>
+  <insert id="batchInsert" parameterType="java.util.List">
+    insert into AMS_SALE_MATERIAL
+    (SALE_MATERIAL_ID,
+    SALE_ORDER_ID, MATERIAL_ID, MATERIAL_WEIGHT,
+    MATERIAL_NUMBER, EAS_PRIMARY_ID,
+    INSERT_USERNAME, INSERT_TIME,
+    UPDATE_USERNAME, UPDATE_TIME,
+    INSERT_UPDATE_REMARK, DELETED,
+    SALE_WAREHOUSE, STEEL_METER, IS_POUND_SALE,
+    METER_WEIGHT)
+    ( <foreach collection="list" item="item" separator="union all">
+    select
+    #{item.saleMaterialId,jdbcType=DECIMAL},
+    #{item.saleOrderId,jdbcType=DECIMAL}, #{item.materialId,jdbcType=DECIMAL}, #{item.materialWeight,jdbcType=DECIMAL},
+    #{item.materialNumber,jdbcType=DECIMAL}, #{item.easPrimaryId,jdbcType=VARCHAR},
+    #{item.insertUsername,jdbcType=VARCHAR}, #{item.insertTime,jdbcType=TIMESTAMP},
+    #{item.updateUsername,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP},
+    #{item.insertUpdateRemark,jdbcType=VARCHAR}, #{item.deleted,jdbcType=DECIMAL},
+    #{item.saleWarehouse,jdbcType=VARCHAR}, #{item.steelMeter,jdbcType=DECIMAL}, #{item.isPoundSale,jdbcType=DECIMAL},
+    #{item.meterWeight,jdbcType=DECIMAL} from dual
+  </foreach> )
+  </insert>
+  <update id="batchUpdate" parameterType="java.util.List">
+    update AMS_SALE_MATERIAL
+    set
+    SALE_MATERIAL_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.saleMaterialId,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_ORDER_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.saleOrderId,jdbcType=DECIMAL}
+    </foreach>
+    ,MATERIAL_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.materialId,jdbcType=DECIMAL}
+    </foreach>
+    ,MATERIAL_WEIGHT=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.materialWeight,jdbcType=DECIMAL}
+    </foreach>
+    ,MATERIAL_NUMBER=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.materialNumber,jdbcType=DECIMAL}
+    </foreach>
+    ,EAS_PRIMARY_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.easPrimaryId,jdbcType=VARCHAR}
+    </foreach>
+    ,INSERT_USERNAME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+    </foreach>
+    ,INSERT_TIME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+    </foreach>
+    ,UPDATE_USERNAME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+    </foreach>
+    ,UPDATE_TIME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+    </foreach>
+    ,INSERT_UPDATE_REMARK=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+    </foreach>
+    ,DELETED=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.deleted,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_WAREHOUSE=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.saleWarehouse,jdbcType=VARCHAR}
+    </foreach>
+    ,STEEL_METER=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.steelMeter,jdbcType=DECIMAL}
+    </foreach>
+    ,IS_POUND_SALE=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.isPoundSale,jdbcType=DECIMAL}
+    </foreach>
+    ,METER_WEIGHT=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_MATERIAL_ID" separator=" ">
+      when #{item.saleMaterialId,jdbcType=DECIMAL} then #{item.meterWeight,jdbcType=DECIMAL}
+    </foreach>
+    where SALE_MATERIAL_ID in
+    <foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
+      #{item.saleMaterialId,jdbcType=DECIMAL}
+    </foreach>
+  </update>
+  <delete id="batchDelete" parameterType="java.util.List">
+    delete from AMS_SALE_MATERIAL
+    where SALE_MATERIAL_ID in
+    <foreach close=")" collection="list" item="id" open="(" separator=",">
+      #{id}
+    </foreach>
+  </delete>
+  <!-- 友情提示!!!-->
+  <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
+
+</mapper>

+ 941 - 316
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -23,19 +23,21 @@
     <result column="INSERT_UPDATE_REMARK" jdbcType="VARCHAR" property="insertUpdateRemark" />
     <result column="DELETED" jdbcType="DECIMAL" property="deleted" />
     <result column="CLOSE_STATUS" jdbcType="DECIMAL" property="closeStatus" />
+    <result column="SALER_ID" jdbcType="DECIMAL" property="salerId" />
   </resultMap>
   <sql id="columns">
-    SALE_ORDER_ID, PLAN_ID, SALE_NUMBER, SHIPPER_ID, RECEIVE_ID, SALE_ACCOUNT_BALANCE, 
-    SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT, SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER, 
-    SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE, SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME, 
-    INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK, DELETED, CLOSE_STATUS
+    SALE_ORDER_ID, PLAN_ID, SALE_NUMBER, SHIPPER_ID, RECEIVE_ID, SALE_ACCOUNT_BALANCE,
+    SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT, SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER,
+    SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE, SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME,
+    INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, INSERT_UPDATE_REMARK, DELETED, CLOSE_STATUS,
+    SALER_ID
   </sql>
   <sql id="columns_alias">
-    t.SALE_ORDER_ID, t.PLAN_ID, t.SALE_NUMBER, t.SHIPPER_ID, t.RECEIVE_ID, t.SALE_ACCOUNT_BALANCE, 
-    t.SALE_CURRENT_ORDER_AMOUNT, t.SALE_HISTORICAL_ORDER_AMOUNT, t.SALE_ORDER_STATUS, 
-    t.SALE_ORDER_RECEIVE_CUSTOMER, t.SALE_ORDER_ISSELF_MENTION, t.SALE_UNIT_PRICE, t.SALE_ORDER_TAX, 
-    t.SALE_REMARK, t.INSERT_USERNAME, t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME, 
-    t.INSERT_UPDATE_REMARK, t.DELETED, t.CLOSE_STATUS
+    t.SALE_ORDER_ID, t.PLAN_ID, t.SALE_NUMBER, t.SHIPPER_ID, t.RECEIVE_ID, t.SALE_ACCOUNT_BALANCE,
+    t.SALE_CURRENT_ORDER_AMOUNT, t.SALE_HISTORICAL_ORDER_AMOUNT, t.SALE_ORDER_STATUS,
+    t.SALE_ORDER_RECEIVE_CUSTOMER, t.SALE_ORDER_ISSELF_MENTION, t.SALE_UNIT_PRICE, t.SALE_ORDER_TAX,
+    t.SALE_REMARK, t.INSERT_USERNAME, t.INSERT_TIME, t.UPDATE_USERNAME, t.UPDATE_TIME,
+    t.INSERT_UPDATE_REMARK, t.DELETED, t.CLOSE_STATUS, t.SALER_ID
   </sql>
   <sql id="select">
     SELECT <include refid="columns" /> FROM AMS_SALE_ORDER
@@ -44,7 +46,7 @@
     SELECT <include refid="columns_alias" /> FROM AMS_SALE_ORDER t
   </sql>
   <sql id="where">
-    <where> 
+    <where>
       <if test="saleOrderId != null">
         and SALE_ORDER_ID = #{saleOrderId}
       </if>
@@ -108,10 +110,13 @@
       <if test="closeStatus != null">
         and CLOSE_STATUS = #{closeStatus}
       </if>
+      <if test="salerId != null">
+        and SALER_ID = #{salerId}
+      </if>
     </where>
   </sql>
   <sql id="whereLike">
-    <where> 
+    <where>
       <if test="saleOrderId != null">
         and SALE_ORDER_ID = #{saleOrderId}
       </if>
@@ -175,95 +180,101 @@
       <if test="closeStatus != null">
         and CLOSE_STATUS = #{closeStatus}
       </if>
+      <if test="salerId != null">
+        and SALER_ID = #{salerId}
+      </if>
     </where>
   </sql>
-  <delete id="deleteByPrimaryKey" parameterType="java.math.BigDecimal">
+  <delete id="deleteByPrimaryKey" parameterType="DECIMAL">
     delete from AMS_SALE_ORDER
     where SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL}
   </delete>
   <delete id="deleteBySelectiveElement" parameterType="java.util.HashMap">
     delete from AMS_SALE_ORDER
-    where 1!=1 
-      <if test="planId != null">
-        or PLAN_ID = #{planId}
-      </if>
-      <if test="saleNumber != null and saleNumber != ''">
-        or SALE_NUMBER = #{saleNumber}
-      </if>
-      <if test="shipperId != null">
-        or SHIPPER_ID = #{shipperId}
-      </if>
-      <if test="receiveId != null">
-        or RECEIVE_ID = #{receiveId}
-      </if>
-      <if test="saleAccountBalance != null">
-        or SALE_ACCOUNT_BALANCE = #{saleAccountBalance}
-      </if>
-      <if test="saleCurrentOrderAmount != null">
-        or SALE_CURRENT_ORDER_AMOUNT = #{saleCurrentOrderAmount}
-      </if>
-      <if test="saleHistoricalOrderAmount != null">
-        or SALE_HISTORICAL_ORDER_AMOUNT = #{saleHistoricalOrderAmount}
-      </if>
-      <if test="saleOrderStatus != null">
-        or SALE_ORDER_STATUS = #{saleOrderStatus}
-      </if>
-      <if test="saleOrderReceiveCustomer != null and saleOrderReceiveCustomer != ''">
-        or SALE_ORDER_RECEIVE_CUSTOMER = #{saleOrderReceiveCustomer}
-      </if>
-      <if test="saleOrderIsselfMention != null and saleOrderIsselfMention != ''">
-        or SALE_ORDER_ISSELF_MENTION = #{saleOrderIsselfMention}
-      </if>
-      <if test="saleUnitPrice != null">
-        or SALE_UNIT_PRICE = #{saleUnitPrice}
-      </if>
-      <if test="saleOrderTax != null and saleOrderTax != ''">
-        or SALE_ORDER_TAX = #{saleOrderTax}
-      </if>
-      <if test="saleRemark != null and saleRemark != ''">
-        or SALE_REMARK = #{saleRemark}
-      </if>
-      <if test="insertUsername != null and insertUsername != ''">
-        or INSERT_USERNAME = #{insertUsername}
-      </if>
-      <if test="insertTime != null">
-        or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
-      </if>
-      <if test="updateUsername != null and updateUsername != ''">
-        or UPDATE_USERNAME = #{updateUsername}
-      </if>
-      <if test="updateTime != null">
-        or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
-      </if>
-      <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
-        or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
-      </if>
-      <if test="deleted != null">
-        or DELETED = #{deleted}
-      </if>
-      <if test="closeStatus != null">
-        or CLOSE_STATUS = #{closeStatus}
-      </if>
+    where 1!=1
+    <if test="planId != null">
+      or PLAN_ID = #{planId}
+    </if>
+    <if test="saleNumber != null and saleNumber != ''">
+      or SALE_NUMBER = #{saleNumber}
+    </if>
+    <if test="shipperId != null">
+      or SHIPPER_ID = #{shipperId}
+    </if>
+    <if test="receiveId != null">
+      or RECEIVE_ID = #{receiveId}
+    </if>
+    <if test="saleAccountBalance != null">
+      or SALE_ACCOUNT_BALANCE = #{saleAccountBalance}
+    </if>
+    <if test="saleCurrentOrderAmount != null">
+      or SALE_CURRENT_ORDER_AMOUNT = #{saleCurrentOrderAmount}
+    </if>
+    <if test="saleHistoricalOrderAmount != null">
+      or SALE_HISTORICAL_ORDER_AMOUNT = #{saleHistoricalOrderAmount}
+    </if>
+    <if test="saleOrderStatus != null">
+      or SALE_ORDER_STATUS = #{saleOrderStatus}
+    </if>
+    <if test="saleOrderReceiveCustomer != null and saleOrderReceiveCustomer != ''">
+      or SALE_ORDER_RECEIVE_CUSTOMER = #{saleOrderReceiveCustomer}
+    </if>
+    <if test="saleOrderIsselfMention != null and saleOrderIsselfMention != ''">
+      or SALE_ORDER_ISSELF_MENTION = #{saleOrderIsselfMention}
+    </if>
+    <if test="saleUnitPrice != null">
+      or SALE_UNIT_PRICE = #{saleUnitPrice}
+    </if>
+    <if test="saleOrderTax != null and saleOrderTax != ''">
+      or SALE_ORDER_TAX = #{saleOrderTax}
+    </if>
+    <if test="saleRemark != null and saleRemark != ''">
+      or SALE_REMARK = #{saleRemark}
+    </if>
+    <if test="insertUsername != null and insertUsername != ''">
+      or INSERT_USERNAME = #{insertUsername}
+    </if>
+    <if test="insertTime != null">
+      or TO_CHAR(INSERT_TIME,'yyyy-MM-dd') = '#{insertTime}'
+    </if>
+    <if test="updateUsername != null and updateUsername != ''">
+      or UPDATE_USERNAME = #{updateUsername}
+    </if>
+    <if test="updateTime != null">
+      or TO_CHAR(UPDATE_TIME,'yyyy-MM-dd') = '#{updateTime}'
+    </if>
+    <if test="insertUpdateRemark != null and insertUpdateRemark != ''">
+      or INSERT_UPDATE_REMARK = #{insertUpdateRemark}
+    </if>
+    <if test="deleted != null">
+      or DELETED = #{deleted}
+    </if>
+    <if test="closeStatus != null">
+      or CLOSE_STATUS = #{closeStatus}
+    </if>
+    <if test="salerId != null">
+      or SALER_ID = #{salerId}
+    </if>
   </delete>
   <insert id="insert" parameterType="com.steerinfo.dil.model.AmsSaleOrder">
-    insert into AMS_SALE_ORDER (SALE_ORDER_ID, PLAN_ID, SALE_NUMBER, 
-      SHIPPER_ID, RECEIVE_ID, SALE_ACCOUNT_BALANCE, 
-      SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT, 
-      SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER, 
-      SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE, 
-      SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME, 
-      INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME, 
-      INSERT_UPDATE_REMARK, DELETED, CLOSE_STATUS
-      )
-    values (#{saleOrderId,jdbcType=DECIMAL}, #{planId,jdbcType=DECIMAL}, #{saleNumber,jdbcType=VARCHAR}, 
-      #{shipperId,jdbcType=DECIMAL}, #{receiveId,jdbcType=DECIMAL}, #{saleAccountBalance,jdbcType=DECIMAL}, 
-      #{saleCurrentOrderAmount,jdbcType=DECIMAL}, #{saleHistoricalOrderAmount,jdbcType=DECIMAL}, 
-      #{saleOrderStatus,jdbcType=DECIMAL}, #{saleOrderReceiveCustomer,jdbcType=VARCHAR}, 
-      #{saleOrderIsselfMention,jdbcType=VARCHAR}, #{saleUnitPrice,jdbcType=DECIMAL}, 
-      #{saleOrderTax,jdbcType=VARCHAR}, #{saleRemark,jdbcType=VARCHAR}, #{insertUsername,jdbcType=VARCHAR}, 
-      #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP}, 
-      #{insertUpdateRemark,jdbcType=VARCHAR}, #{deleted,jdbcType=DECIMAL}, #{closeStatus,jdbcType=DECIMAL}
-      )
+    insert into AMS_SALE_ORDER (SALE_ORDER_ID, PLAN_ID, SALE_NUMBER,
+                                SHIPPER_ID, RECEIVE_ID, SALE_ACCOUNT_BALANCE,
+                                SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT,
+                                SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER,
+                                SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE,
+                                SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME,
+                                INSERT_TIME, UPDATE_USERNAME, UPDATE_TIME,
+                                INSERT_UPDATE_REMARK, DELETED, CLOSE_STATUS,
+                                SALER_ID)
+    values (#{saleOrderId,jdbcType=DECIMAL}, #{planId,jdbcType=DECIMAL}, #{saleNumber,jdbcType=VARCHAR},
+            #{shipperId,jdbcType=DECIMAL}, #{receiveId,jdbcType=DECIMAL}, #{saleAccountBalance,jdbcType=DECIMAL},
+            #{saleCurrentOrderAmount,jdbcType=DECIMAL}, #{saleHistoricalOrderAmount,jdbcType=DECIMAL},
+            #{saleOrderStatus,jdbcType=DECIMAL}, #{saleOrderReceiveCustomer,jdbcType=VARCHAR},
+            #{saleOrderIsselfMention,jdbcType=VARCHAR}, #{saleUnitPrice,jdbcType=DECIMAL},
+            #{saleOrderTax,jdbcType=VARCHAR}, #{saleRemark,jdbcType=VARCHAR}, #{insertUsername,jdbcType=VARCHAR},
+            #{insertTime,jdbcType=TIMESTAMP}, #{updateUsername,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP},
+            #{insertUpdateRemark,jdbcType=VARCHAR}, #{deleted,jdbcType=DECIMAL}, #{closeStatus,jdbcType=DECIMAL},
+            #{salerId,jdbcType=DECIMAL})
   </insert>
   <insert id="insertSelective" parameterType="com.steerinfo.dil.model.AmsSaleOrder">
     insert into AMS_SALE_ORDER
@@ -331,6 +342,9 @@
       <if test="closeStatus != null">
         CLOSE_STATUS,
       </if>
+      <if test="salerId != null">
+        SALER_ID,
+      </if>
     </trim>
     <trim prefix="values (" suffix=")" suffixOverrides=",">
       <if test="saleOrderId != null">
@@ -396,30 +410,34 @@
       <if test="closeStatus != null">
         #{closeStatus,jdbcType=DECIMAL},
       </if>
+      <if test="salerId != null">
+        #{salerId,jdbcType=DECIMAL},
+      </if>
     </trim>
   </insert>
   <update id="updateByPrimaryKey" parameterType="com.steerinfo.dil.model.AmsSaleOrder">
     update AMS_SALE_ORDER
     set PLAN_ID = #{planId,jdbcType=DECIMAL},
-      SALE_NUMBER = #{saleNumber,jdbcType=VARCHAR},
-      SHIPPER_ID = #{shipperId,jdbcType=DECIMAL},
-      RECEIVE_ID = #{receiveId,jdbcType=DECIMAL},
-      SALE_ACCOUNT_BALANCE = #{saleAccountBalance,jdbcType=DECIMAL},
-      SALE_CURRENT_ORDER_AMOUNT = #{saleCurrentOrderAmount,jdbcType=DECIMAL},
-      SALE_HISTORICAL_ORDER_AMOUNT = #{saleHistoricalOrderAmount,jdbcType=DECIMAL},
-      SALE_ORDER_STATUS = #{saleOrderStatus,jdbcType=DECIMAL},
-      SALE_ORDER_RECEIVE_CUSTOMER = #{saleOrderReceiveCustomer,jdbcType=VARCHAR},
-      SALE_ORDER_ISSELF_MENTION = #{saleOrderIsselfMention,jdbcType=VARCHAR},
-      SALE_UNIT_PRICE = #{saleUnitPrice,jdbcType=DECIMAL},
-      SALE_ORDER_TAX = #{saleOrderTax,jdbcType=VARCHAR},
-      SALE_REMARK = #{saleRemark,jdbcType=VARCHAR},
-      INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
-      INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
-      UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
-      UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
-      INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
-      DELETED = #{deleted,jdbcType=DECIMAL},
-      CLOSE_STATUS = #{closeStatus,jdbcType=DECIMAL}
+        SALE_NUMBER = #{saleNumber,jdbcType=VARCHAR},
+        SHIPPER_ID = #{shipperId,jdbcType=DECIMAL},
+        RECEIVE_ID = #{receiveId,jdbcType=DECIMAL},
+        SALE_ACCOUNT_BALANCE = #{saleAccountBalance,jdbcType=DECIMAL},
+        SALE_CURRENT_ORDER_AMOUNT = #{saleCurrentOrderAmount,jdbcType=DECIMAL},
+        SALE_HISTORICAL_ORDER_AMOUNT = #{saleHistoricalOrderAmount,jdbcType=DECIMAL},
+        SALE_ORDER_STATUS = #{saleOrderStatus,jdbcType=DECIMAL},
+        SALE_ORDER_RECEIVE_CUSTOMER = #{saleOrderReceiveCustomer,jdbcType=VARCHAR},
+        SALE_ORDER_ISSELF_MENTION = #{saleOrderIsselfMention,jdbcType=VARCHAR},
+        SALE_UNIT_PRICE = #{saleUnitPrice,jdbcType=DECIMAL},
+        SALE_ORDER_TAX = #{saleOrderTax,jdbcType=VARCHAR},
+        SALE_REMARK = #{saleRemark,jdbcType=VARCHAR},
+        INSERT_USERNAME = #{insertUsername,jdbcType=VARCHAR},
+        INSERT_TIME = #{insertTime,jdbcType=TIMESTAMP},
+        UPDATE_USERNAME = #{updateUsername,jdbcType=VARCHAR},
+        UPDATE_TIME = #{updateTime,jdbcType=TIMESTAMP},
+        INSERT_UPDATE_REMARK = #{insertUpdateRemark,jdbcType=VARCHAR},
+        DELETED = #{deleted,jdbcType=DECIMAL},
+        CLOSE_STATUS = #{closeStatus,jdbcType=DECIMAL},
+        SALER_ID = #{salerId,jdbcType=DECIMAL}
     where SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL}
   </update>
   <update id="updateByPrimaryKeySelective" parameterType="com.steerinfo.dil.model.AmsSaleOrder">
@@ -485,10 +503,13 @@
       <if test="closeStatus != null">
         CLOSE_STATUS = #{closeStatus,jdbcType=DECIMAL},
       </if>
+      <if test="salerId != null">
+        SALER_ID = #{salerId,jdbcType=DECIMAL},
+      </if>
     </set>
     where SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL}
   </update>
-  <select id="selectByPrimaryKey" parameterType="java.math.BigDecimal" resultMap="BaseResultMap">
+  <select id="selectByPrimaryKey" parameterType="DECIMAL" resultMap="BaseResultMap">
     <include refid="select" />
     where SALE_ORDER_ID = #{saleOrderId,jdbcType=DECIMAL}
   </select>
@@ -501,133 +522,138 @@
     <include refid="whereLike" />
   </select>
   <insert id="batchInsert" parameterType="java.util.List">
-    insert into AMS_SALE_ORDER 
-      (SALE_ORDER_ID, 
-      PLAN_ID, SALE_NUMBER, SHIPPER_ID, 
-      RECEIVE_ID, SALE_ACCOUNT_BALANCE, 
-      SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT, 
-      SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER, 
-      SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE, 
-      SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME, 
-      INSERT_TIME, UPDATE_USERNAME, 
-      UPDATE_TIME, INSERT_UPDATE_REMARK, 
-      DELETED, CLOSE_STATUS)
-    ( <foreach collection="list" item="item" separator="union all"> 
-   select  
-      #{item.saleOrderId,jdbcType=DECIMAL}, 
-      #{item.planId,jdbcType=DECIMAL}, #{item.saleNumber,jdbcType=VARCHAR}, #{item.shipperId,jdbcType=DECIMAL}, 
-      #{item.receiveId,jdbcType=DECIMAL}, #{item.saleAccountBalance,jdbcType=DECIMAL}, 
-      #{item.saleCurrentOrderAmount,jdbcType=DECIMAL}, #{item.saleHistoricalOrderAmount,jdbcType=DECIMAL}, 
-      #{item.saleOrderStatus,jdbcType=DECIMAL}, #{item.saleOrderReceiveCustomer,jdbcType=VARCHAR}, 
-      #{item.saleOrderIsselfMention,jdbcType=VARCHAR}, #{item.saleUnitPrice,jdbcType=DECIMAL}, 
-      #{item.saleOrderTax,jdbcType=VARCHAR}, #{item.saleRemark,jdbcType=VARCHAR}, #{item.insertUsername,jdbcType=VARCHAR}, 
-      #{item.insertTime,jdbcType=TIMESTAMP}, #{item.updateUsername,jdbcType=VARCHAR}, 
-      #{item.updateTime,jdbcType=TIMESTAMP}, #{item.insertUpdateRemark,jdbcType=VARCHAR}, 
-      #{item.deleted,jdbcType=DECIMAL}, #{item.closeStatus,jdbcType=DECIMAL} from dual  
-   </foreach> )
+    insert into AMS_SALE_ORDER
+    (SALE_ORDER_ID,
+    PLAN_ID, SALE_NUMBER, SHIPPER_ID,
+    RECEIVE_ID, SALE_ACCOUNT_BALANCE,
+    SALE_CURRENT_ORDER_AMOUNT, SALE_HISTORICAL_ORDER_AMOUNT,
+    SALE_ORDER_STATUS, SALE_ORDER_RECEIVE_CUSTOMER,
+    SALE_ORDER_ISSELF_MENTION, SALE_UNIT_PRICE,
+    SALE_ORDER_TAX, SALE_REMARK, INSERT_USERNAME,
+    INSERT_TIME, UPDATE_USERNAME,
+    UPDATE_TIME, INSERT_UPDATE_REMARK,
+    DELETED, CLOSE_STATUS, SALER_ID
+    )
+    ( <foreach collection="list" item="item" separator="union all">
+    select
+    #{item.saleOrderId,jdbcType=DECIMAL},
+    #{item.planId,jdbcType=DECIMAL}, #{item.saleNumber,jdbcType=VARCHAR}, #{item.shipperId,jdbcType=DECIMAL},
+    #{item.receiveId,jdbcType=DECIMAL}, #{item.saleAccountBalance,jdbcType=DECIMAL},
+    #{item.saleCurrentOrderAmount,jdbcType=DECIMAL}, #{item.saleHistoricalOrderAmount,jdbcType=DECIMAL},
+    #{item.saleOrderStatus,jdbcType=DECIMAL}, #{item.saleOrderReceiveCustomer,jdbcType=VARCHAR},
+    #{item.saleOrderIsselfMention,jdbcType=VARCHAR}, #{item.saleUnitPrice,jdbcType=DECIMAL},
+    #{item.saleOrderTax,jdbcType=VARCHAR}, #{item.saleRemark,jdbcType=VARCHAR}, #{item.insertUsername,jdbcType=VARCHAR},
+    #{item.insertTime,jdbcType=TIMESTAMP}, #{item.updateUsername,jdbcType=VARCHAR},
+    #{item.updateTime,jdbcType=TIMESTAMP}, #{item.insertUpdateRemark,jdbcType=VARCHAR},
+    #{item.deleted,jdbcType=DECIMAL}, #{item.closeStatus,jdbcType=DECIMAL}, #{item.salerId,jdbcType=DECIMAL}
+    from dual
+  </foreach> )
   </insert>
   <update id="batchUpdate" parameterType="java.util.List">
-     update AMS_SALE_ORDER
-     set
-       SALE_ORDER_ID=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderId,jdbcType=DECIMAL}
-       </foreach>
-       ,PLAN_ID=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.planId,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_NUMBER=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleNumber,jdbcType=VARCHAR}
-       </foreach>
-       ,SHIPPER_ID=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.shipperId,jdbcType=DECIMAL}
-       </foreach>
-       ,RECEIVE_ID=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.receiveId,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_ACCOUNT_BALANCE=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleAccountBalance,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_CURRENT_ORDER_AMOUNT=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleCurrentOrderAmount,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_HISTORICAL_ORDER_AMOUNT=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleHistoricalOrderAmount,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_ORDER_STATUS=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderStatus,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_ORDER_RECEIVE_CUSTOMER=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderReceiveCustomer,jdbcType=VARCHAR}
-       </foreach>
-       ,SALE_ORDER_ISSELF_MENTION=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderIsselfMention,jdbcType=VARCHAR}
-       </foreach>
-       ,SALE_UNIT_PRICE=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleUnitPrice,jdbcType=DECIMAL}
-       </foreach>
-       ,SALE_ORDER_TAX=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderTax,jdbcType=VARCHAR}
-       </foreach>
-       ,SALE_REMARK=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleRemark,jdbcType=VARCHAR}
-       </foreach>
-       ,INSERT_USERNAME=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
-       </foreach>
-       ,INSERT_TIME=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
-       </foreach>
-       ,UPDATE_USERNAME=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
-       </foreach>
-       ,UPDATE_TIME=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
-       </foreach>
-       ,INSERT_UPDATE_REMARK=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
-       </foreach>
-       ,DELETED=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.deleted,jdbcType=DECIMAL}
-       </foreach>
-       ,CLOSE_STATUS=
-       <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
-          when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.closeStatus,jdbcType=DECIMAL}
-       </foreach>
-     where SALE_ORDER_ID in 
-     <foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
-    #{item.saleOrderId,jdbcType=DECIMAL}
-     </foreach> 
+    update AMS_SALE_ORDER
+    set
+    SALE_ORDER_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderId,jdbcType=DECIMAL}
+    </foreach>
+    ,PLAN_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.planId,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_NUMBER=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleNumber,jdbcType=VARCHAR}
+    </foreach>
+    ,SHIPPER_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.shipperId,jdbcType=DECIMAL}
+    </foreach>
+    ,RECEIVE_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.receiveId,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_ACCOUNT_BALANCE=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleAccountBalance,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_CURRENT_ORDER_AMOUNT=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleCurrentOrderAmount,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_HISTORICAL_ORDER_AMOUNT=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleHistoricalOrderAmount,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_ORDER_STATUS=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderStatus,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_ORDER_RECEIVE_CUSTOMER=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderReceiveCustomer,jdbcType=VARCHAR}
+    </foreach>
+    ,SALE_ORDER_ISSELF_MENTION=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderIsselfMention,jdbcType=VARCHAR}
+    </foreach>
+    ,SALE_UNIT_PRICE=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleUnitPrice,jdbcType=DECIMAL}
+    </foreach>
+    ,SALE_ORDER_TAX=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleOrderTax,jdbcType=VARCHAR}
+    </foreach>
+    ,SALE_REMARK=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.saleRemark,jdbcType=VARCHAR}
+    </foreach>
+    ,INSERT_USERNAME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertUsername,jdbcType=VARCHAR}
+    </foreach>
+    ,INSERT_TIME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertTime,jdbcType=TIMESTAMP}
+    </foreach>
+    ,UPDATE_USERNAME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.updateUsername,jdbcType=VARCHAR}
+    </foreach>
+    ,UPDATE_TIME=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.updateTime,jdbcType=TIMESTAMP}
+    </foreach>
+    ,INSERT_UPDATE_REMARK=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.insertUpdateRemark,jdbcType=VARCHAR}
+    </foreach>
+    ,DELETED=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.deleted,jdbcType=DECIMAL}
+    </foreach>
+    ,CLOSE_STATUS=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.closeStatus,jdbcType=DECIMAL}
+    </foreach>
+    ,SALER_ID=
+    <foreach close="end" collection="list" index="index" item="item" open="case SALE_ORDER_ID" separator=" ">
+      when #{item.saleOrderId,jdbcType=DECIMAL} then #{item.salerId,jdbcType=DECIMAL}
+    </foreach>
+    where SALE_ORDER_ID in
+    <foreach close=")" collection="list" index="index" item="item" open="(" separator=",">
+      #{item.saleOrderId,jdbcType=DECIMAL}
+    </foreach>
   </update>
   <delete id="batchDelete" parameterType="java.util.List">
     delete from AMS_SALE_ORDER
-    where SALE_ORDER_ID in 
+    where SALE_ORDER_ID in
     <foreach close=")" collection="list" item="id" open="(" separator=",">
       #{id}
     </foreach>
   </delete>
   <!-- 友情提示!!!-->
   <!-- 请将自己写的代码放在此标签之下,方便以后粘贴复制。-->
-  <!--根据插入时间排序-->
   <sql id="orderBy">
     <if test="orderField != null and orderField != ''">
       order by "${orderField}"
@@ -1546,7 +1572,8 @@
     on a_s_order.SHIPPER_ID=r_shipper.SHIPPER_ID
     left join RMS_CONSIGNEE r_consignee
     on a_s_order.RECEIVE_ID=r_consignee.CONSIGNEE_ID
-    where a_s_order.SALE_ORDER_STATUS=1)
+    where a_s_order.SALE_ORDER_STATUS=1
+    and a_s_order.DELETED = 0)
     <where>
       <if test="saleNumber != null">
         and
@@ -1636,8 +1663,7 @@
     a_s_order.SALE_ORDER_TAX "saleOrderTax",
     a_s_order.SALE_REMARK "saleRemark",
     a_s_order.INSERT_TIME "insertTime",
-    a_s_order.SALE_ORDER_STATUS "saleOrderStatus",
-    a_s_order.SALE_ORDER_STATUS "statusStr",
+    DECODE(a_s_order.SALE_ORDER_STATUS,2,'销售已审批',4,'财务已审批') "statusStr",
     RM.MATERIAL_NAME "materialName",
     a_s_order.CLOSE_STATUS "closeStatus"
     from AMS_SALE_ORDER a_s_order
@@ -1658,86 +1684,98 @@
     <if test="con != null" >
       or SSSR."saleNumber" LIKE #{con}
     </if>
-    <!--    <where>-->
-    <!--      <if test="saleNumber != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleNumber" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="shipperName != null">-->
-    <!--        and-->
-    <!--        <foreach collection="shipperName" item="item" open="(" separator="or" close=")">-->
-    <!--          "shipperName" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="consigneeCompanyName != null">-->
-    <!--        and-->
-    <!--        <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">-->
-    <!--          "consigneeCompanyName" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="consigneeWarrantyAmount != null">-->
-    <!--        and-->
-    <!--        <foreach collection="consigneeWarrantyAmount" item="item" open="(" separator="or" close=")">-->
-    <!--          "consigneeWarrantyAmount" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="consigneeWarrantyWeight != null">-->
-    <!--        and-->
-    <!--        <foreach collection="consigneeWarrantyWeight" item="item" open="(" separator="or" close=")">-->
-    <!--          "consigneeWarrantyWeight" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleOrderIsselfMention != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleOrderIsselfMention" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleOrderIsselfMention" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleAccountBalance != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleAccountBalance" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleAccountBalance" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleCurrentOrderAmount != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleCurrentOrderAmount" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleCurrentOrderAmount" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleHistoricalOrderAmout != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleHistoricalOrderAmout" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleHistoricalOrderAmout" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleOrderReceiveCustomer != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleOrderReceiveCustomer" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleOrderReceiveCustomer" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleUnitPrice != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleUnitPrice" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleUnitPrice" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleOrderTax != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleOrderTax" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleOrderTax" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--      <if test="saleRemark != null">-->
-    <!--        and-->
-    <!--        <foreach collection="saleRemark" item="item" open="(" separator="or" close=")">-->
-    <!--          "saleRemark" like '%${item}%'-->
-    <!--        </foreach>-->
-    <!--      </if>-->
-    <!--    </where>-->
+        <where>
+          <if test="saleNumber != null">
+            and
+            <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+              "saleNumber" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="materialName != null">
+            and
+            <foreach collection="materialName" item="item" open="(" separator="or" close=")">
+              "materialName" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="statusStr != null">
+            and
+            <foreach collection="statusStr" item="item" open="(" separator="or" close=")">
+              "statusStr" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="shipperName != null">
+            and
+            <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+              "shipperName" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="consigneeCompanyName != null">
+            and
+            <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+              "consigneeCompanyName" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="consigneeWarrantyAmount != null">
+            and
+            <foreach collection="consigneeWarrantyAmount" item="item" open="(" separator="or" close=")">
+              "consigneeWarrantyAmount" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="consigneeWarrantyWeight != null">
+            and
+            <foreach collection="consigneeWarrantyWeight" item="item" open="(" separator="or" close=")">
+              "consigneeWarrantyWeight" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleOrderIsselfMention != null">
+            and
+            <foreach collection="saleOrderIsselfMention" item="item" open="(" separator="or" close=")">
+              "saleOrderIsselfMention" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleAccountBalance != null">
+            and
+            <foreach collection="saleAccountBalance" item="item" open="(" separator="or" close=")">
+              "saleAccountBalance" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleCurrentOrderAmount != null">
+            and
+            <foreach collection="saleCurrentOrderAmount" item="item" open="(" separator="or" close=")">
+              "saleCurrentOrderAmount" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleHistoricalOrderAmout != null">
+            and
+            <foreach collection="saleHistoricalOrderAmout" item="item" open="(" separator="or" close=")">
+              "saleHistoricalOrderAmout" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleOrderReceiveCustomer != null">
+            and
+            <foreach collection="saleOrderReceiveCustomer" item="item" open="(" separator="or" close=")">
+              "saleOrderReceiveCustomer" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleUnitPrice != null">
+            and
+            <foreach collection="saleUnitPrice" item="item" open="(" separator="or" close=")">
+              "saleUnitPrice" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleOrderTax != null">
+            and
+            <foreach collection="saleOrderTax" item="item" open="(" separator="or" close=")">
+              "saleOrderTax" like '%${item}%'
+            </foreach>
+          </if>
+          <if test="saleRemark != null">
+            and
+            <foreach collection="saleRemark" item="item" open="(" separator="or" close=")">
+              "saleRemark" like '%${item}%'
+            </foreach>
+          </if>
+        </where>
     <include refid="orderBy"></include>
   </select>
 
@@ -1758,8 +1796,7 @@
     a_s_order.SALE_ORDER_TAX "saleOrderTax",
     a_s_order.SALE_REMARK "saleRemark",
     a_s_order.INSERT_TIME "insertTime",
-    a_s_order.SALE_ORDER_STATUS "saleOrderStatus",
-    a_s_order.SALE_ORDER_STATUS "statusStr",
+    DECODE(a_s_order.SALE_ORDER_STATUS,2,'销售已审批',4,'财务已审批') "statusStr",
     a_s_order.INSERT_UPDATE_REMARK "materialName"
     from AMS_SALE_ORDER a_s_order
     left join RMS_SHIPPER r_shipper
@@ -1772,6 +1809,9 @@
     <if test="con != null">
       and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
     </if>
+    <if test="shipperId != null">
+      and a_s_order.SHIPPER_ID = #{shipperId}
+    </if>
     )
     <where>
       <if test="saleNumber != null">
@@ -1779,6 +1819,19 @@
           "saleNumber" like '%${item}%'
         </foreach>
       </if>
+      <if test="statusStr != null">
+        <foreach collection="statusStr" item="item" open="(" separator="or" close=")">
+        and "statusStr" like '%${item}%'
+        </foreach>
+      </if>
+
+<!--      <if test="startTime != null">-->
+<!--        and "insertTime" &gt;= to_date('${startTime}','yyyy-mm-dd')-->
+<!--      </if>-->
+<!--      <if test="endTime != null">-->
+<!--        and "insertTime" &lt;= to_date('${endTime}','yyyy-mm-dd')-->
+<!--      </if>-->
+
       <if test="shipperName != null">
         and
         <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
@@ -1868,6 +1921,7 @@
     a_s_order.SALE_CURRENT_ORDER_AMOUNT "saleCurrentOrderAmount",
     a_s_order.SALE_HISTORICAL_ORDER_AMOUNT "saleHistoricalOrderAmout",
     a_s_order.SALE_ORDER_RECEIVE_CUSTOMER "saleOrderReceiveCustomer",
+    DECODE(a_s_order.SALE_ORDER_STATUS,2,'销售已审批',4,'财务已审批') "statusStr",
     a_s_order.SALE_UNIT_PRICE "saleUnitPrice",
     a_s_order.SALE_ORDER_TAX "saleOrderTax",
     a_s_order.SALE_REMARK "saleRemark",
@@ -1877,11 +1931,12 @@
     on a_s_order.SHIPPER_ID=r_shipper.SHIPPER_ID
     left join RMS_CONSIGNEE r_consignee
     on a_s_order.RECEIVE_ID=r_consignee.CONSIGNEE_ID
-    where a_s_order.SALE_ORDER_STATUS=4
+    where a_s_order.SALE_ORDER_STATUS in (2,4)
+    AND a_s_order.SHIPPER_ID = 2
     <if test="con != null">
       and instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0
     </if>
-        )
+    )
     <where>
       <if test="saleNumber != null">
         and
@@ -1889,6 +1944,12 @@
           "saleNumber" like '%${item}%'
         </foreach>
       </if>
+      <if test="statusStr != null">
+        and
+        <foreach collection="statusStr" item="item" open="(" separator="or" close=")">
+          "statusStr" like '%${item}%'
+        </foreach>
+      </if>
       <if test="shipperName != null">
         and
         <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
@@ -2032,15 +2093,23 @@
   </select>
 
   <select id="getSaleMaterial" parameterType="java.util.Map" resultType="java.util.Map">
-    SELECT
+    SELECT * FROM (SELECT
     RM.MATERIAL_NAME AS "materialName"
     FROM AMS_SALE_MATERIAL ASM
     LEFT JOIN RMS_MATERIAL RM
     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
     WHERE ASM.SALE_ORDER_ID = #{saleOrderId}
-    <if test="con != null" >
+    <if test="con != null">
       AND instr(RM.MATERIAL_NAME, #{con}) > 0
     </if>
+    )
+    <where>
+    <if test="materialName != null">
+      <foreach collection="materialName" item="item" open="(" separator="or" close=")">
+        "materialName" like '%${item}%'
+      </foreach>
+    </if>
+    </where>
   </select>
 
   <select id="getNetWeight" parameterType="DECIMAL" resultType="DECIMAL">
@@ -2057,4 +2126,560 @@
     FROM AMS_SALE_ORDER_MATERIAL ASOM
     WHERE ASOM.SALE_ORDER_ID = #{saleOrderId}
   </select>
+
+  <select id="getTruckNoAndMaterial" parameterType="DECIMAL" resultType="java.util.Map" >
+    SELECT DISTINCT ASOM.SALE_ORDER_MATERIAL_TRUCK_NO                                                                AS "truckNo",
+                    RM.MATERIAL_NAME                                                                                 AS "materialName",
+                    ASM.MATERIAL_ID                                                                                  AS "materialId",
+                    ASTM.SALE_ORDER_MATERIAL_NUMBER                                                                  AS "materialNumber",
+                    ASOM.SALE_DATE_OF_RECEIPT                                                                        AS "receiptDate",
+                    RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL                                                   AS "materialModelSpecification",
+                    RM.MATERIAL_CODE                                                                                 AS "materialCode",
+                    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS AS "place",
+                    ASOM.SALE_DATE_OF_RECEIPT                                                                        AS "receiptDate",
+                    ASOM.SALE_ORDER_CONSIGNEE_TEL                                                                    AS "saleOrderConsigneeTel",
+                    ASOM.SALE_ORDER_CONSIGNEE                                                                        AS "saleOrderConsignee",
+                    ASOM.SALE_ORDER_MATERIAL_ID                                                                      AS "saleOrderMaterialId",
+                    ASOM.SALE_SHIPPING_ADDRESS_ID                                                                    AS "placeId",
+                    RC.CAPACITY_NUMBER                                                                               AS "capacityNumber",
+                    ADSO.CARRIER_ID                                                                                  AS "carrierId"
+    FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+           LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+                     ON ASOM.SALE_ORDER_MATERIAL_ID = ASTM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN RMS_RECEIVE_PLACE RRP
+                     ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+           LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                     ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+           LEFT JOIN AMS_SALE_MATERIAL ASM
+                     ON ASTM.MATERIAL_ID = ASM.SALE_MATERIAL_ID
+           LEFT JOIN RMS_MATERIAL RM
+                     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
+           LEFT JOIN OMSTRUCK_ORDER OO
+                     ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN RMS_CAPACITY RC
+                     ON RC.CAPACITY_ID = OO.CAPACITY_ID
+           LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+                     ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    WHERE ASOM.SALE_ORDER_ID = #{saleOrderId}
+      AND OO.ORDER_ID IS NULL
+    ORDER BY ASOM.SALE_ORDER_MATERIAL_TRUCK_NO ASC
+  </select>
+
+
+  <select id="getAddressByPlace" parameterType="DECIMAL" resultType="DECIMAL" >
+    SELECT RRP.ADDRESS_ID AS "adddressId"
+    FROM RMS_RECEIVE_PLACE RRP
+    WHERE RRP.PLACE_ID = #{placeId}
+  </select>
+
+  <select id="getCarrierByPlace" parameterType="DECIMAL" resultType="java.util.Map">
+    SELECT DISTINCT RC.CARRIER_ID    AS "id",
+                    RC.CARRIER_ID    AS "value",
+                    RC.CARRIER_NAME  AS "label",
+                    ACTP.PRICE_ID    AS "priceId",
+                    ACTP.PRICE_VALUE AS "priceValue"
+    FROM RMS_RECEIVE_PLACE RRP
+           LEFT JOIN AMS_CONTRACT_TRANSPORT_PRICE ACTP
+                     ON ACTP.PLACE_ID = RRP.PLACE_ID
+           LEFT JOIN RMS_CARRIER RC
+                     ON RC.CARRIER_ID = ACTP.CARRIER_ID
+    WHERE RRP.ADDRESS_ID = #{addressId}
+      AND ACTP.CARRIER_ID IS NOT NULL
+      AND ACTP.DELETED = 0
+  </select>
+
+  <select id="getPriceByCarrierAndPlace" parameterType="java.util.Map" resultType="java.util.Map">
+    SELECT ACTP.PRICE_ID    AS "priceId",
+           ACTP.PRICE_VALUE AS "priceValue"
+    FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
+    WHERE ACTP.CARRIER_ID = #{carrierId}
+      AND ACTP.PLACE_ID = #{placeId}
+      AND ACTP.DELETED = 0
+  </select>
+
+  <select id="getSaleOrderListToCarrier" parameterType="java.util.Map" resultType="java.util.Map">
+    select DISTINCT * from(
+    select a_s_order.SALE_ORDER_ID "saleOrderId",
+    a_s_order.SALE_NUMBER "saleNumber",
+    r_shipper.SHIPPER_NAME "shipperName",
+    r_consignee.CONSIGNEE_COMPANY_NAME "consigneeCompanyName",
+    r_consignee.CONSIGNEE_WARRANTY_AMOUNT "consigneeWarrantyAmount",
+    r_consignee.CONSIGNEE_WARRANTY_WEIGHT "consigneeWarrantyWeight",
+    a_s_order.SALE_ORDER_ISSELF_MENTION "saleOrderIsselfMention",
+    a_s_order.SALE_ACCOUNT_BALANCE "saleAccountBalance",
+    a_s_order.SALE_CURRENT_ORDER_AMOUNT "saleCurrentOrderAmount",
+    a_s_order.SALE_HISTORICAL_ORDER_AMOUNT "saleHistoricalOrderAmout",
+    a_s_order.SALE_ORDER_RECEIVE_CUSTOMER "saleOrderReceiveCustomer",
+    a_s_order.SALE_UNIT_PRICE "saleUnitPrice",
+    a_s_order.SALE_ORDER_TAX "saleOrderTax",
+    a_s_order.SALE_REMARK "saleRemark",
+    a_s_order.INSERT_TIME "insertTime",
+    DECODE(a_s_order.SALE_ORDER_STATUS,2,'销售已审批',4,'财务已审批') "statusStr",
+    a_s_order.INSERT_UPDATE_REMARK "materialName",
+    a_s_order.UPDATE_TIME "updateTime"
+    from AMS_SALE_ORDER a_s_order
+    left join RMS_SHIPPER r_shipper
+    on a_s_order.SHIPPER_ID=r_shipper.SHIPPER_ID
+    left join RMS_CONSIGNEE r_consignee
+    on a_s_order.RECEIVE_ID=r_consignee.CONSIGNEE_ID
+    LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+    ON ASOM.SALE_ORDER_ID = a_s_order.SALE_ORDER_ID
+    LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+    ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    LEFT JOIN RMS_CARRIER RC
+    ON RC.CARRIER_ID = ADSO.CARRIER_ID
+    LEFT JOIN OMSTRUCK_ORDER OO
+    ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    where a_s_order.SALE_ORDER_STATUS in (2,4)
+    and a_s_order.CLOSE_STATUS is null
+    and a_s_order.DELETED = 0
+    and ADSO.DISPATCH_TYPE = 2
+    and OO.ORDER_ID IS NULL
+    <if test="con != null">
+      and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
+    </if>
+    <if test="carrierSsoId != null" >
+      and RC.CARRIER_SSO_ID = #{carrierSsoId}
+    </if>
+    )
+    <where>
+      <if test="saleNumber != null">
+        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+          "saleNumber" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="shipperName != null">
+        and
+        <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+          "shipperName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeCompanyName != null">
+        and
+        <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+          "consigneeCompanyName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeWarrantyAmount != null">
+        and
+        <foreach collection="consigneeWarrantyAmount" item="item" open="(" separator="or" close=")">
+          "consigneeWarrantyAmount" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeWarrantyWeight != null">
+        and
+        <foreach collection="consigneeWarrantyWeight" item="item" open="(" separator="or" close=")">
+          "consigneeWarrantyWeight" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderIsselfMention != null">
+        and
+        <foreach collection="saleOrderIsselfMention" item="item" open="(" separator="or" close=")">
+          "saleOrderIsselfMention" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleAccountBalance != null">
+        and
+        <foreach collection="saleAccountBalance" item="item" open="(" separator="or" close=")">
+          "saleAccountBalance" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleCurrentOrderAmount != null">
+        and
+        <foreach collection="saleCurrentOrderAmount" item="item" open="(" separator="or" close=")">
+          "saleCurrentOrderAmount" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleHistoricalOrderAmout != null">
+        and
+        <foreach collection="saleHistoricalOrderAmout" item="item" open="(" separator="or" close=")">
+          "saleHistoricalOrderAmout" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderReceiveCustomer != null">
+        and
+        <foreach collection="saleOrderReceiveCustomer" item="item" open="(" separator="or" close=")">
+          "saleOrderReceiveCustomer" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleUnitPrice != null">
+        and
+        <foreach collection="saleUnitPrice" item="item" open="(" separator="or" close=")">
+          "saleUnitPrice" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderTax != null">
+        and
+        <foreach collection="saleOrderTax" item="item" open="(" separator="or" close=")">
+          "saleOrderTax" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleRemark != null">
+        and
+        <foreach collection="saleRemark" item="item" open="(" separator="or" close=")">
+          "saleRemark" like '%${item}%'
+        </foreach>
+      </if>
+    </where>
+    order by "updateTime" DESC
+  </select>
+
+  <select id="getSteelTruckNoList" parameterType="java.util.Map" resultType="java.util.Map">
+    SELECT *
+    FROM (
+    SELECT ASO.SALE_NUMBER AS "saleNumber",
+    ASOM.SALE_ORDER_MATERIAL_TRUCK_NO AS "truckNo",
+    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS AS
+    "addressDeliveryAddress",
+    ASOM.SALE_DATE_OF_RECEIPT AS "saleDateOfReceipt",
+    DECODE(ASO.SALE_ORDER_STATUS,2, '销售已审批',4, '财务已审批')
+    AS "approvalStatus",
+    ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
+    RSH.SHIPPER_NAME AS "shipperName",
+    RCO.CONSIGNEE_COMPANY_NAME AS "consigneeCompanyName",
+    ASO.SALE_ORDER_ISSELF_MENTION AS "isselfMention",
+    ASOM.INSERT_TIME AS "insertTime",
+    ASOM.SALE_ORDER_MATERIAL_ID AS "saleOrderMaterialId",
+    ASO.SALE_ORDER_ID AS "saleOrderId"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+    LEFT JOIN AMS_SALE_ORDER ASO
+    ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    LEFT JOIN RMS_RECEIVE_PLACE RRP
+    ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+    LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+    ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+    LEFT JOIN RMS_SHIPPER RSH
+    ON RSH.SHIPPER_ID = ASO.SHIPPER_ID
+    LEFT JOIN RMS_CONSIGNEE RCO
+    ON RCO.CONSIGNEE_ID = ASO.RECEIVE_ID
+    LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+    ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    WHERE ASO.SALE_ORDER_STATUS IN (2,4)
+    AND ASOM.ISSUE_STATUS IS NULL
+    AND ADSO.CARRIER_ID IS NULL
+    )
+    <where>
+      <if test="saleNumber != null">
+        and
+        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+          "saleNumber" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="truckNo != null">
+        and
+        <foreach collection="truckNo" item="item" open="(" separator="or" close=")">
+          "truckNo" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="addressDeliveryAddress != null">
+        and
+        <foreach collection="addressDeliveryAddress" item="item" open="(" separator="or" close=")">
+          "addressDeliveryAddress" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleDateOfReceipt != null">
+        and
+        <foreach collection="saleDateOfReceipt" item="item" open="(" separator="or" close=")">
+          "saleDateOfReceipt" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsignee != null">
+        and
+        <foreach collection="saleOrderConsignee" item="item" open="(" separator="or" close=")">
+          "saleOrderConsignee" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsigneeTel != null">
+        and
+        <foreach collection="saleOrderConsigneeTel" item="item" open="(" separator="or" close=")">
+          "saleOrderConsigneeTel" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="shipperName != null">
+        and
+        <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+          "shipperName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeCompanyName != null">
+        and
+        <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+          "consigneeCompanyName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="isselfMention != null">
+        and
+        <foreach collection="isselfMention" item="item" open="(" separator="or" close=")">
+          "isselfMention" like '%${item}%'
+        </foreach>
+      </if>
+    </where>
+    <include refid="orderBy"></include>
+  </select>
+
+  <select id="getTruckNoMaterial" resultType="java.util.Map" parameterType="DECIMAL" >
+    SELECT
+      RM.MATERIAL_ID AS "materialId",
+      RM.MATERIAL_NAME AS "materialName",
+      RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL AS "specificationModel",
+      RM.MATERIAL_CODE AS "materialCode",
+      ASTM.SALE_ORDER_MATERIAL_NUMBER AS "materialNumber"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+           LEFT JOIN AMS_SALE_TRUCKNO_MATERIAL ASTM
+                     ON ASTM.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN AMS_SALE_MATERIAL ASM
+                     ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+           LEFT JOIN RMS_MATERIAL RM
+                     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
+
+  <select id="getCarrierTruckNoList" parameterType="java.util.Map" resultType="java.util.Map">
+    SELECT DISTINCT *
+    FROM (
+    SELECT ASO.SALE_NUMBER AS "saleNumber",
+    ASOM.SALE_ORDER_MATERIAL_TRUCK_NO AS "truckNo",
+    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS AS
+    "addressDeliveryAddress",
+    ASOM.SALE_DATE_OF_RECEIPT AS "saleDateOfReceipt",
+    DECODE(ASO.SALE_ORDER_STATUS,2, '销售已审批',4, '财务已审批')
+    AS "approvalStatus",
+    ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
+    RSH.SHIPPER_NAME AS "shipperName",
+    RCO.CONSIGNEE_COMPANY_NAME AS "consigneeCompanyName",
+    ASO.SALE_ORDER_ISSELF_MENTION AS "isselfMention",
+    ASOM.INSERT_TIME AS "insertTime",
+    ASOM.SALE_ORDER_MATERIAL_ID AS "saleOrderMaterialId",
+    ASO.SALE_ORDER_ID AS "saleOrderId",
+    RCA.CARRIER_NAME AS "carrierName"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+    LEFT JOIN AMS_SALE_ORDER ASO
+    ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    LEFT JOIN RMS_RECEIVE_PLACE RRP
+    ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+    LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+    ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+    LEFT JOIN RMS_SHIPPER RSH
+    ON RSH.SHIPPER_ID = ASO.SHIPPER_ID
+    LEFT JOIN RMS_CONSIGNEE RCO
+    ON RCO.CONSIGNEE_ID = ASO.RECEIVE_ID
+    LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+    ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    LEFT JOIN OMSTRUCK_ORDER OO
+    ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    LEFT JOIN RMS_CARRIER RCA
+    ON RCA.CARRIER_ID = ADSO.CARRIER_ID
+    WHERE ASO.SALE_ORDER_STATUS IN (2,4)
+    AND ASOM.ISSUE_STATUS IS NULL
+    AND ADSO.DISPATCH_TYPE = 2
+    AND OO.ORDER_ID IS NULL
+    )
+    <where>
+      <if test="saleNumber != null">
+        and
+        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+          "saleNumber" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="carrierName != null">
+        and
+        <foreach collection="carrierName" item="item" open="(" separator="or" close=")">
+          "carrierName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="truckNo != null">
+        and
+        <foreach collection="truckNo" item="item" open="(" separator="or" close=")">
+          "truckNo" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="addressDeliveryAddress != null">
+        and
+        <foreach collection="addressDeliveryAddress" item="item" open="(" separator="or" close=")">
+          "addressDeliveryAddress" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleDateOfReceipt != null">
+        and
+        <foreach collection="saleDateOfReceipt" item="item" open="(" separator="or" close=")">
+          "saleDateOfReceipt" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsignee != null">
+        and
+        <foreach collection="saleOrderConsignee" item="item" open="(" separator="or" close=")">
+          "saleOrderConsignee" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsigneeTel != null">
+        and
+        <foreach collection="saleOrderConsigneeTel" item="item" open="(" separator="or" close=")">
+          "saleOrderConsigneeTel" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="shipperName != null">
+        and
+        <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+          "shipperName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeCompanyName != null">
+        and
+        <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+          "consigneeCompanyName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="isselfMention != null">
+        and
+        <foreach collection="isselfMention" item="item" open="(" separator="or" close=")">
+          "isselfMention" like '%${item}%'
+        </foreach>
+      </if>
+    </where>
+    <include refid="orderBy"></include>
+  </select>
+
+  <select id="getTruckNoMaterialAndCarrier" parameterType="DECIMAL" resultType="java.util.Map" >
+    SELECT DISTINCT ASOM.SALE_ORDER_MATERIAL_TRUCK_NO                                                                AS "truckNo",
+                    RM.MATERIAL_NAME                                                                                 AS "materialName",
+                    ASM.MATERIAL_ID                                                                                  AS "materialId",
+                    ASTM.SALE_ORDER_MATERIAL_NUMBER                                                                  AS "materialNumber",
+                    ASM.MATERIAL_WEIGHT                                                                              AS "materialWeight",
+                    ASOM.SALE_DATE_OF_RECEIPT                                                                        AS "receiptDate",
+                    RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL                                                   AS "materialModelSpecification",
+                    RM.MATERIAL_CODE                                                                                 AS "materialCode",
+                    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN ||
+                    RRP.ADDRESS_DELIVERY_ADDRESS                                                                     AS "place",
+                    ASOM.SALE_DATE_OF_RECEIPT                                                                        AS "receiptDate",
+                    ASOM.SALE_ORDER_CONSIGNEE_TEL                                                                    AS "saleOrderConsigneeTel",
+                    ASOM.SALE_ORDER_CONSIGNEE                                                                        AS "saleOrderConsignee",
+                    ASOM.SALE_ORDER_MATERIAL_ID                                                                      AS "saleOrderMaterialId",
+                    ASOM.SALE_SHIPPING_ADDRESS_ID                                                                    AS "placeId",
+                    RC.CAPACITY_NUMBER                                                                               AS "capacityNumber",
+                    ADSO.CARRIER_ID                                                                                  AS "carrierId"
+    FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+           LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+                     ON ASOM.SALE_ORDER_MATERIAL_ID = ASTM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN RMS_RECEIVE_PLACE RRP
+                     ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+           LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+                     ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+           LEFT JOIN AMS_SALE_MATERIAL ASM
+                     ON ASTM.MATERIAL_ID = ASM.SALE_MATERIAL_ID
+           LEFT JOIN RMS_MATERIAL RM
+                     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
+           LEFT JOIN OMSTRUCK_ORDER OO
+                     ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+           LEFT JOIN RMS_CAPACITY RC
+                     ON RC.CAPACITY_ID = OO.CAPACITY_ID
+           LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+                     ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+    ORDER BY ASOM.SALE_ORDER_MATERIAL_TRUCK_NO ASC
+  </select>
+
+  <select id="getHaveCarTruckNoList" parameterType="java.util.Map" resultType="java.util.Map">
+    SELECT DISTINCT *
+    FROM (
+    SELECT ASO.SALE_NUMBER AS "saleNumber",
+    ASOM.SALE_ORDER_MATERIAL_TRUCK_NO AS "truckNo",
+    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS AS
+    "addressDeliveryAddress",
+    ASOM.SALE_DATE_OF_RECEIPT AS "saleDateOfReceipt",
+    DECODE(ASO.SALE_ORDER_STATUS,2, '销售已审批',4, '财务已审批')
+    AS "approvalStatus",
+    ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
+    RSH.SHIPPER_NAME AS "shipperName",
+    RCO.CONSIGNEE_COMPANY_NAME AS "consigneeCompanyName",
+    ASO.SALE_ORDER_ISSELF_MENTION AS "isselfMention",
+    ASOM.INSERT_TIME AS "insertTime",
+    ASOM.SALE_ORDER_MATERIAL_ID AS "saleOrderMaterialId",
+    ASO.SALE_ORDER_ID AS "saleOrderId",
+    RCA.CARRIER_NAME AS "carrierName"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+    LEFT JOIN AMS_SALE_ORDER ASO
+    ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    LEFT JOIN RMS_RECEIVE_PLACE RRP
+    ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+    LEFT JOIN RMS_RECEIVE_ADDRESS RRA
+    ON RRA.ADDRESS_ID = RRP.ADDRESS_ID
+    LEFT JOIN RMS_SHIPPER RSH
+    ON RSH.SHIPPER_ID = ASO.SHIPPER_ID
+    LEFT JOIN RMS_CONSIGNEE RCO
+    ON RCO.CONSIGNEE_ID = ASO.RECEIVE_ID
+    LEFT JOIN AMS_DISPATCH_SALE_ORDER ADSO
+    ON ADSO.SALE_ORDER_MATERIAL_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    LEFT JOIN OMSTRUCK_ORDER OO
+    ON OO.ORDER_PLAN_ID = ASOM.SALE_ORDER_MATERIAL_ID
+    LEFT JOIN RMS_CARRIER RCA
+    ON RCA.CARRIER_ID = ADSO.CARRIER_ID
+    WHERE ASO.SALE_ORDER_STATUS IN (2,4)
+    AND ASOM.ISSUE_STATUS IS NULL
+    AND ADSO.DISPATCH_TYPE = 2
+    AND OO.ORDER_ID IS NOT NULL
+    )
+    <where>
+      <if test="saleNumber != null">
+        and
+        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+          "saleNumber" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="carrierName != null">
+        and
+        <foreach collection="carrierName" item="item" open="(" separator="or" close=")">
+          "carrierName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="truckNo != null">
+        and
+        <foreach collection="truckNo" item="item" open="(" separator="or" close=")">
+          "truckNo" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="addressDeliveryAddress != null">
+        and
+        <foreach collection="addressDeliveryAddress" item="item" open="(" separator="or" close=")">
+          "addressDeliveryAddress" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleDateOfReceipt != null">
+        and
+        <foreach collection="saleDateOfReceipt" item="item" open="(" separator="or" close=")">
+          "saleDateOfReceipt" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsignee != null">
+        and
+        <foreach collection="saleOrderConsignee" item="item" open="(" separator="or" close=")">
+          "saleOrderConsignee" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderConsigneeTel != null">
+        and
+        <foreach collection="saleOrderConsigneeTel" item="item" open="(" separator="or" close=")">
+          "saleOrderConsigneeTel" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="shipperName != null">
+        and
+        <foreach collection="shipperName" item="item" open="(" separator="or" close=")">
+          "shipperName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="consigneeCompanyName != null">
+        and
+        <foreach collection="consigneeCompanyName" item="item" open="(" separator="or" close=")">
+          "consigneeCompanyName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="isselfMention != null">
+        and
+        <foreach collection="isselfMention" item="item" open="(" separator="or" close=")">
+          "isselfMention" like '%${item}%'
+        </foreach>
+      </if>
+    </where>
+    <include refid="orderBy"></include>
+  </select>
 </mapper>

+ 10 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMaterialMapper.xml

@@ -787,4 +787,14 @@
     AND ACTP.DELETED = 0
     ORDER BY ACTP.PRICE_VALUE DESC
   </select>
+
+  <select id="getMaterial" parameterType="DECIMAL" resultType="java.util.Map">
+    SELECT ASM.MATERIAL_ID     AS "materialId",
+           ASM.MATERIAL_WEIGHT AS "materialWeight",
+           ASM.MATERIAL_NUMBER AS "materialNumber"
+    FROM AMS_SALE_TRUCKNO_MATERIAL ASTM
+           LEFT JOIN AMS_SALE_MATERIAL ASM
+                     ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
+    WHERE ASTM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
 </mapper>