luobang 2 vuotta sitten
vanhempi
commit
cab0d50e4d

+ 143 - 33
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -153,7 +153,7 @@ public class AmsSaleOrderController extends BaseRESTfulController {
             @ApiImplicitParam(name = "saleOrderId", value = "销售订单ID", required = false, dataType = "java.math.BigDecimal")
     })
     @PostMapping(value = "/uploadSaleOrder")
-    public RESTfulResult uploadSaleOrder(@RequestParam BigDecimal saleOrderId){
+    public RESTfulResult uploadSaleOrder(@RequestParam BigDecimal saleOrderId) throws Exception {
         int i = amsSaleOrderService.uploadSaleOrder(saleOrderId);
         return success(i);
     }
@@ -692,9 +692,15 @@ public class AmsSaleOrderController extends BaseRESTfulController {
 
     @ApiModelProperty(value = "新增钢材销售订单")
     @PostMapping("/addSteelSaleOrder")
-    public RESTfulResult addSteelSaleOrder(@RequestBody Map<String,Object> mapValue) {
-        int result = amsSaleOrderService.addSteelSaleOrder(mapValue);
-        return success(result);
+    public RESTfulResult addSteelSaleOrder(@RequestBody Map<String,Object> mapValue){
+        try {
+            // 成功
+            int result = amsSaleOrderService.addSteelSaleOrder(mapValue);
+            return success(result);
+        } catch (Exception e) {
+            // 失败
+            return failed(e.getMessage());
+        }
     }
 
     @ApiModelProperty(value = "展示销售订单下的车序号和物资")
@@ -707,7 +713,12 @@ public class AmsSaleOrderController extends BaseRESTfulController {
     @ApiModelProperty(value = "钢材派单")
     @PostMapping("/dispatchSteelOrder")
     public RESTfulResult dispatchSteelOrder(@RequestBody List<Map<String,Object>> mapList) throws Exception {
-        int result = amsSaleOrderService.dispatchSteelOrder(mapList);
+        int result;
+        try {
+            result = amsSaleOrderService.dispatchSteelOrder(mapList);
+        } catch (Exception e) {
+            return failed(e.getMessage());
+        }
         if (result == 0) {
             return failed("匹配不到车牌号!");
         }
@@ -759,23 +770,26 @@ public class AmsSaleOrderController extends BaseRESTfulController {
             @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 + "%");
+    public RESTfulResult getSaleOrderListToCarrier(@RequestBody(required = false) Map<String, Object> mapValue,
+                                                   Integer pageNum,
+                                                   Integer pageSize,
+                                                   Integer apiId,
+                                                   String carrierSsoId,
+                                                   String con,
+                                                   @RequestParam(required = false) String startTime,
+                                                   @RequestParam(required = false) String endTime) {
+        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);
+            mapValue.put("carrierSsoId", carrierSsoId);
         }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue,sdfDateTime);//根据时间段查询数据
         //不分页筛选数据
-        PageHelper.startPage(pageNum,pageSize);
+        PageHelper.startPage(pageNum, pageSize);
         //分页数据
         List<Map<String, Object>> saleOrderList = amsSaleOrderService.getSaleOrderListToCarrier(mapValue);
-        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,saleOrderList);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null, saleOrderList);
         return success(pageList);
     }
 
@@ -795,10 +809,13 @@ public class AmsSaleOrderController extends BaseRESTfulController {
                                              Integer apiId,
                                              Integer pageNum,
                                              Integer pageSize,
-                                             String con) {
+                                             String con,
+                                             @RequestParam(required = false) String startTime,
+                                             @RequestParam(required = false)String endTime) {
         if (con != null && !con.equals("undefined") && !con.equals("null")) {
             mapValue.put("con", "%" + con + "%");
         }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue,sdfDateTime);//根据时间段查询数据
         PageHelper.startPage(pageNum, pageSize);
         //分页数据
         List<Map<String, Object>> saleOrderList = amsSaleOrderService.getSteelTruckNoList(mapValue);
@@ -829,10 +846,13 @@ public class AmsSaleOrderController extends BaseRESTfulController {
                                              Integer apiId,
                                              Integer pageNum,
                                              Integer pageSize,
-                                             String con) {
+                                             String con,
+                                             @RequestParam(required = false) String startTime,
+                                             @RequestParam(required = false)String endTime) {
         if (con != null && !con.equals("undefined") && !con.equals("null")) {
             mapValue.put("con", "%" + con + "%");
         }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue,sdfDateTime);//根据时间段查询数据
         PageHelper.startPage(pageNum, pageSize);
         //分页数据
         List<Map<String, Object>> saleOrderList = amsSaleOrderService.getNoCarTruckNoList(mapValue);
@@ -971,21 +991,23 @@ public class AmsSaleOrderController extends BaseRESTfulController {
     @PostMapping(value = "/updateCarAddress")
     @Transactional
     public RESTfulResult updateCarAddress(@RequestBody Map<String, Object> mapValue) throws Exception {
-        // 如果返回结果为0,则认定是关闭了车辆
-        BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
-        List<Map<String,Object>> saleMaterialIdList = amsSaleOrderService.getSaleMaterialId(saleOrderMaterialId);
-        String wholeOrder = "0";
-        String status = "close";
-        String reason = "收货地址修改超过片区范围";
-        // 循环调用关闭金蝶分录接口
-        for (Map<String, Object> head : saleMaterialIdList) {
-                head.put("wholeOrder",wholeOrder);
-                head.put("status",status);
-                head.put("reason",reason);
-                Map<String,Object> input = new HashMap<>();
-                input.put("head",head);
+        int result = amsSaleOrderService.updateCarAddress(mapValue);
+        if (result == 0) {
+            // 如果返回结果为0,则认定是关闭了车辆
+            BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
+            List<Map<String, Object>> saleMaterialIdList = amsSaleOrderService.getSaleMaterialId(saleOrderMaterialId);
+            String wholeOrder = "0";
+            String status = "close";
+            String reason = "收货地址修改超过片区范围";
+            // 循环调用关闭金蝶分录接口
+            for (Map<String, Object> head : saleMaterialIdList) {
+                head.put("wholeOrder", wholeOrder);
+                head.put("status", status);
+                head.put("reason", reason);
+                Map<String, Object> input = new HashMap<>();
+                input.put("head", head);
                 Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
-                totalMap.put("input",input);
+                totalMap.put("input", input);
                 String json = JSONUtils.toJSONString(totalMap);
                 System.out.println("--------------------------------------------");
                 System.out.println(json);
@@ -993,8 +1015,8 @@ public class AmsSaleOrderController extends BaseRESTfulController {
                 Map<String, Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
                 System.out.println("--------------------------------------------");
                 System.out.println(resultMap);
+            }
         }
-        int result = amsSaleOrderService.updateCarAddress(mapValue);
         return success(result);
     }
 
@@ -1171,4 +1193,92 @@ public class AmsSaleOrderController extends BaseRESTfulController {
             return success(result);
         }
     }
+
+    @ApiModelProperty(value = "展示下发给承运商的车序号和物资")
+    @PostMapping("/getCarrierTruckNoAndMaterialList")
+    public RESTfulResult getCarrierTruckNoAndMaterialList(@RequestBody Map<String,Object> map) {
+        List<Map<String,Object>> mapList = amsSaleOrderService.getCarrierTruckNoAndMaterialList(map);
+        return success(mapList);
+    }
+
+    @ApiModelProperty(value = "关闭单个钢材物资分录")
+    @PostMapping("/closeSteelMaterialId")
+    public RESTfulResult closeSteelMaterialId(@RequestBody Map<String, Object> mapValue) {
+        int result = amsSaleOrderService.closeSteelMaterialId(mapValue);
+        if (result == 0) {
+            return failed("该物资已装货,无法关闭物资分录!!");
+        }
+        String reason = (String) mapValue.get("reason");
+        String number = (String) mapValue.get("number");
+        String closeEntryId = (String) mapValue.get("closeEntryId");
+        BigDecimal closeWlEntryId = DataChange.dataToBigDecimal(mapValue.get("saleMaterialId"));
+        String wholeOrder = "0";
+        String status = "close";
+        Map<String,Object> head = new HashMap<>();
+        head.put("number",number);
+        head.put("reason",reason);
+        head.put("closeEntryId",closeEntryId);
+        head.put("wholeOrder",wholeOrder);
+        head.put("closeWlEntryId",closeWlEntryId);
+        head.put("status",status);
+        Map<String,Object> input = new HashMap<>();
+        Map<String, Object> totalMap = easTestUtil.getTotalMap();
+        input.put("head",head);
+        totalMap.put("input",input);
+        // 调用金蝶关闭接口
+        String json = JSONUtils.toJSONString(totalMap);
+        System.out.println(json);
+        Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
+        System.out.println(resultMap);
+        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/475", required = false, dataType = "BigDecimal")
+    })
+    @PostMapping("/getSaleCokeOrder")
+    public RESTfulResult getSaleCokeOrder(@RequestBody(required = false) Map<String, Object> mapValue,
+                                             Integer pageNum,
+                                             Integer pageSize,
+                                             Integer apiId,
+                                             String con,
+                                             String consigneeSsoId,
+                                             Integer shipperId,
+                                             @RequestParam(required = false) String startTime,
+                                             @RequestParam(required = false) String endTime
+    ) {
+        if (con != null && !"".equals(con) && !"null".equals(con)) {
+            mapValue.put("con", con);
+        }
+        if (consigneeSsoId != null && !"".equals(consigneeSsoId) && !"null".equals(consigneeSsoId)) {
+            mapValue.put("consigneeSsoId",consigneeSsoId);
+        }
+        if (shipperId != null && !"".equals(shipperId) && !"null".equals(shipperId)) {
+            mapValue.put("shipperId", shipperId);
+        }
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
+        //不分页筛选数据
+        PageHelper.startPage(pageNum, pageSize);
+        //分页数据
+        List<Map<String, Object>> saleOrderList = amsSaleOrderService.getSaleCokeOrder(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData4(apiId, null, saleOrderList);
+        return success(pageList);
+    }
+
+    @ApiModelProperty(value = "反关闭金蝶单个分录")
+    @PostMapping("/adverseCloseSaleMaterial")
+    public RESTfulResult adverseCloseSaleMaterial(@RequestParam Integer saleMaterialId) {
+        int result = amsSaleOrderService.adverseCloseSaleMaterial(new BigDecimal(saleMaterialId));
+        return success(result);
+    }
+
+    @ApiModelProperty(value = "反关闭金蝶整个销售订单")
+    @PostMapping("/adverseCloseSaleOrder")
+    public RESTfulResult adverseCloseSaleOrder(@RequestParam Integer saleOrderId) {
+        int result = amsSaleOrderService.adverseCloseSaleOrder(new BigDecimal(saleOrderId));
+        return success(result);
+    }
 }

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

@@ -3,6 +3,9 @@ package com.steerinfo.dil.mapper;
 import com.steerinfo.dil.model.AmsSaleMaterial;
 import com.steerinfo.framework.mapper.IBaseMapper;
 import java.math.*;
+import java.util.List;
+import java.util.Map;
+
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 
@@ -12,4 +15,18 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
     BigDecimal selectMaxId();
     // 得到物资出现次数
     Integer getMaterialCount(BigDecimal materialId);
+    // 根据路段顺序号逆序找到装货实际
+    List<Map<String, Object>> findLoadIdList(BigDecimal saleOrderMaterialId);
+    // 根据路段顺序号逆序找到计量实际
+    List<Map<String, Object>> findWeightIdList(BigDecimal saleOrderMaterialId);
+    //
+    int deleteLoadResult(BigDecimal loadId);
+    //
+    int deleteWeightResult(BigDecimal weightId);
+
+    int updateOrderMaterialToClose(Map<String, Object> mapValue);
+
+    int deleteWmspOutResult(Map<String, Object> mapValue);
+    // 开启所有的分录
+    int openAllSaleMaterial(BigDecimal saleOrderId);
 }

+ 18 - 1
src/main/java/com/steerinfo/dil/mapper/AmsSaleOrderMapper.java

@@ -78,7 +78,7 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
     // 得到销售订单已分配的车数
     BigDecimal getCarNum(BigDecimal saleOrderId);
     // 查询销售订单下的车序号和物资
-    List<Map<String, Object>> getTruckNoAndMaterial(BigDecimal saleOrderId);
+    List<Map<String, Object>> getTruckNoAndMaterial(Map<String,Object> map);
     // 根据详细地址匹配省市县
     BigDecimal getAddressByPlace(BigDecimal placeId);
     // 根据省市县匹配承运商
@@ -134,4 +134,21 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
     int updateCapacityNumberInFactory(Map<String, Object> mapValue);
     // 根据省市县id匹配承运商
     List<Map<String, Object>> getCarrierByAddress(BigDecimal addressId);
+
+    List<Map<String, Object>> getSaleCokeOrder(Map<String, Object> mapValue);
+    Integer findStatus(BigDecimal saleOrderMaterialId);
+
+    BigDecimal getPlaceId(BigDecimal saleOrderMaterialId);
+
+    List<Map<String, Object>> getAddressPriceList(Map<String, Object> hashMap);
+
+    String findSelfMention(BigDecimal saleOrderMaterialId);
+
+    BigDecimal findReceiveId(Object receiveName);
+
+    BigDecimal findSalerId(Object salerName);
+
+    BigDecimal findMaterialId(Map<String, Object> materialMap);
+
+    BigDecimal findAddressId(Map<String, Object> addressMap);
 }

+ 13 - 3
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderService.java

@@ -44,7 +44,7 @@ public interface IAmsSaleOrderService {
     int addAmsSaleOrder(Map<String, Object> map) throws ParseException;
 
     //修改销售订单状态为已上报
-    int uploadSaleOrder(BigDecimal saleOrderId);
+    int uploadSaleOrder(BigDecimal saleOrderId) throws Exception;
 
     //获取要渲染的数据
     List<Map<String, Object>> selectBySaleOrderId(BigDecimal saleOrderId);
@@ -99,13 +99,13 @@ public interface IAmsSaleOrderService {
     List<Map<String, Object>> getCokeSaleOrderList(Map<String,Object> mapValue);
 
     // 新增钢材销售订单
-    int addSteelSaleOrder(Map<String, Object> mapValue);
+    int addSteelSaleOrder(Map<String, Object> mapValue) throws Exception;
 
     // 展示销售订单下的车序号和物资
     List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId);
 
     // 钢材派发运输订单
-    int dispatchSteelOrder(List<Map<String, Object>> mapList);
+    int dispatchSteelOrder(List<Map<String, Object>> mapList) throws Exception;
 
     // 根据详细地址id匹配承运商
     List<Map<String,Object>> getCarrierByPlace(BigDecimal placeId);
@@ -159,4 +159,14 @@ public interface IAmsSaleOrderService {
     int updateCapacityNumberInFactory(Map<String, Object> mapValue);
     // 得到销售订单物资表主键
     List<Map<String, Object>> getSaleMaterialId(BigDecimal saleOrderMaterialId);
+    // 查询下发给承运商的车序号信息
+    List<Map<String, Object>> getCarrierTruckNoAndMaterialList(Map<String, Object> map);
+    // 关闭单个钢材物资分录
+    int closeSteelMaterialId(Map<String, Object> mapValue);
+    // 展示已审核化产焦炭销售订单列表
+    List<Map<String, Object>> getSaleCokeOrder(Map<String, Object> mapValue);
+    // 反关闭金蝶单个分录
+    int adverseCloseSaleMaterial(BigDecimal saleMaterialId);
+    // 反关闭整个销售订单
+    int adverseCloseSaleOrder(BigDecimal saleOrderId);
 }

+ 267 - 19
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -202,8 +202,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         return i;
     }
 
+    @Transactional(rollbackFor = Exception.class)
     @Override
-    public int uploadSaleOrder(BigDecimal saleOrderId) {
+    public int uploadSaleOrder(BigDecimal saleOrderId) throws Exception {
         AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
         // 调用金蝶接口,将销售订单推送到金蝶系统
         Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
@@ -218,7 +219,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         System.out.println(totalMap);
         String json = JSONUtils.toJSONString(totalMap);
         System.out.println(json);
+        // 得到金蝶返回结果
         Map<String,Object> s = joinFeign.pushSaleOrderToEas(totalMap);
+        String status = (String) s.get("status");
+        if ("-1".equals(status)) {
+            throw new Exception(amsSaleOrder.getSaleNumber() + "上传金蝶失败!");
+        }
         System.out.println(s);
         amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
         return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
@@ -367,7 +373,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         //删除所有从表信息
         //amsSaleOrderMapper.deleteBySaleOrderId(saleOrderId);
         AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
-        amsSaleOrder.setDeleted(new BigDecimal(1));
+        amsSaleOrder.setDeleted(new BigDecimal(2));
         return amsSaleOrderMapper.updateByPrimaryKey(amsSaleOrder);
     }
 
@@ -502,12 +508,19 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      * @return
      */
     @Override
-    public int addSteelSaleOrder(Map<String, Object> mapValue) {
+    @Transactional(rollbackFor = Exception.class)
+    public int addSteelSaleOrder(Map<String, Object> mapValue) throws Exception {
         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"));
+        if (receiveId == null || receiveId.intValue() == 0) {
+            receiveId = amsSaleOrderMapper.findReceiveId(mapValue.get("receiveName"));
+            if (receiveId == null) {
+                throw new Exception("您输入的收货单位:" + mapValue.get("receiveName") + "不存在!!");
+            }
+        }
         // 是否自提
         String isSelfMention = (String) mapValue.get("isSelfMention");
         // 备注
@@ -516,6 +529,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         String saleOrderReceiveCustomer = (String) mapValue.get("saleOrderReceiveCustomer");
         // 业务员
         BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
+        if (salerId == null || salerId.intValue() == 0) {
+            salerId = amsSaleOrderMapper.findSalerId(mapValue.get("salerName"));
+            if (receiveId == null) {
+                throw new Exception("您输入的业务员:" + mapValue.get("salerName") +"不存在!!");
+            }
+        }
         BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
         int result = 0;
         // 销售订单
@@ -563,6 +582,19 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 // 车序号主键
                 BigDecimal saleOrderMaterialId = amsSaleOrderMaterialMapper.selectMaxId();
                 BigDecimal shippingAddressId = DataChange.dataToBigDecimal(map.get("shipperAddressId"));
+                if (shippingAddressId == null || shippingAddressId.intValue() == 0) {
+                    String province = (String) map.get("province");
+                    String district = (String) map.get("district");
+                    String town = (String) map.get("town");
+                    Map<String,Object> addressMap = new HashMap<>();
+                    addressMap.put("province",province);
+                    addressMap.put("district",district);
+                    addressMap.put("town",town);
+                    shippingAddressId = amsSaleOrderMapper.findAddressId(addressMap);
+                    if (receiveId == null) {
+                        throw new Exception("您输入的:" + province + district + town + "地址不存在!!");
+                    }
+                }
                 // 车号备注
                 String truckRemark = (String) (map.get("truckRemark"));
                 String place = (String) (map.get("place"));
@@ -641,6 +673,22 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
              */
             // 物资
             BigDecimal materialId = DataChange.dataToBigDecimal(map.get("materialId"));
+            if (materialId == null || materialId.intValue() == 0) {
+                String name = (String) map.get("materialName");
+                String specification = (String) map.get("materialSpecification");
+                String model = (String) map.get("materialModel");
+                Map<String,Object> materialMap = new HashMap<>();
+                materialMap.put("name",name);
+                materialMap.put("specification",specification);
+                if (model == null || model.equals("") || model.equals("null")) {
+                    model = null;
+                }
+                materialMap.put("model",model);
+                materialId = amsSaleOrderMapper.findMaterialId(materialMap);
+                if (materialId == null) {
+                    throw new Exception("您输入的物资:" + name + specification + model + "不存在!!");
+                }
+            }
             Integer materialCount = amsSaleMaterialMapper.getMaterialCount(materialId);
             RmsMaterial rmsMaterial = new RmsMaterial();
             rmsMaterial.setMaterialId(materialId);
@@ -700,7 +748,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      */
     @Override
     public List<Map<String, Object>> getTruckNoAndMaterialList(BigDecimal saleOrderId) {
-        List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(saleOrderId);
+        HashMap<String,Object> mapValue = new HashMap<>();
+        mapValue.put("saleOrderId",saleOrderId);
+        List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(mapValue);
         for (Map<String,Object> map : mapList) {
             BigDecimal placeId = (BigDecimal) map.get("placeId");
             if (placeId != null) {
@@ -718,7 +768,13 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public int dispatchSteelOrder(List<Map<String, Object>> mapList) {
+    public int dispatchSteelOrder(List<Map<String, Object>> mapList) throws Exception {
+        Map<String, Object> stringObjectMap = mapList.get(0);
+        Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
+        String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
+        if (saleStatus == 1) {
+            throw new Exception("订单未审核,无法派车!");
+        }
         int result = 0;
         // 遍历每一行
         for (Map<String,Object> map : mapList) {
@@ -730,6 +786,23 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
             // 查询到车序号的单价
             BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
+            // 得到详细地址id
+            BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId);
+            // 如果详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
+            if (priceId == null && selfMention.equals("否")) {
+                // 找到详细地址下的省市县id
+                BigDecimal addressId = amsSaleOrderMapper.getAddressByPlace(placeId);
+                // 根据省市县匹配出省市县下的所有单价
+                Map<String,Object> hashMap = new HashMap<>();
+                hashMap.put("addressId",addressId);
+                hashMap.put("carrierId",carrierId);
+                List<Map<String,Object>> priceList = amsSaleOrderMapper.getAddressPriceList(hashMap);
+                // 如果长度为0,说明此地址所在省市县内也无单价
+                if (priceList != null && priceList.size() != 0) {
+                    Map<String, Object> priceMap = priceList.get(0);
+                    priceId = (BigDecimal) priceMap.get("priceId");
+                }
+            }
             // 运输线路id
             BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
             // 司机电话号码
@@ -950,22 +1023,28 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         int result = 0;
         AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
         amsSaleOrder.setSaleOrderId(saleOrderId);
-        amsSaleOrder.setDeleted(new BigDecimal(1));
+        amsSaleOrder.setDeleted(new BigDecimal(2));
         // 如果是已经上传金蝶的销售订单,则同步删除
         AmsSaleOrder amsSaleOrder1 = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
-        if (amsSaleOrder1.getSaleOrderStatus().intValue() == 2 || amsSaleOrder1.getSaleOrderStatus().intValue() == 4) {
-            Map<String, Object> input = joinFeign.getSaleOrder(saleOrderId);
-            Map<String, Object> head = (Map<String, Object>) input.get("head");
-            head.put("status","close");
-            // 获得金蝶接口配置
-            Map<String, Object> totalMap = easUtil.getTotalMap();
-            // 组装报文
+        if (amsSaleOrder1.getSaleOrderStatus().intValue() == 1 || amsSaleOrder1.getSaleOrderStatus().intValue() == 2 || amsSaleOrder1.getSaleOrderStatus().intValue() == 4) {
+            String reason = "修改物资关闭上一条销售订单";
+            String number = amsSaleOrder1.getSaleNumber();
+            String wholeOrder = "1";
+            String status = "close";
+            Map<String,Object> head = new HashMap<>();
+            head.put("number",number);
+            head.put("reason",reason);
+            head.put("wholeOrder",wholeOrder);
+            head.put("status",status);
+            Map<String,Object> input = new HashMap<>();
+            Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+            input.put("head",head);
             totalMap.put("input",input);
-            System.out.println(totalMap);
+            // 调用金蝶关闭接口
             String json = JSONUtils.toJSONString(totalMap);
             System.out.println(json);
-            Map<String,Object> s = joinFeign.pushSaleOrderToEas(totalMap);
-            System.out.println(s);
+            Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
+            System.out.println(resultMap);
         }
         // 如果是副产品订单则关闭时同步关闭未进厂的运单
         Map<String,Object> map = new HashMap<>();
@@ -1012,6 +1091,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      * @param saleOrderIdList
      * @return
      */
+    @Transactional(rollbackFor = Exception.class)
     @Override
     public int uploadSaleOrderList(List<Map<String, Object>> saleOrderIdList) {
         int result = 0;
@@ -1032,6 +1112,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             String json = JSONUtils.toJSONString(totalMap);
             System.out.println(json);
             Map<String,Object> s = joinFeign.pushSaleOrderToEas(totalMap);
+            String status = (String) s.get("status");
+            if ("-1".equals(status)) {
+                continue;
+            }
             System.out.println(s);
             amsSaleOrder.setSaleOrderId(saleOrderId);
             amsSaleOrder.setSaleOrderStatus(new BigDecimal(1));
@@ -1289,9 +1373,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             // 得到销售订单物资表主键
             List<Map<String,Object>> saleMaterialIdList = amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId);
             for (Map<String, Object> map : saleMaterialIdList) {
-                // 删除销售订单物资子表
+                // 关闭销售订单物资子表
                 BigDecimal saleMaterialId = (BigDecimal) map.get("saleMaterialId");
-                amsSaleMaterialMapper.deleteByPrimaryKey(saleMaterialId);
+                AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+                amsSaleMaterial.setDeleted(new BigDecimal(0));
+                amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+                amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
             }
             return 0;
         }
@@ -1583,7 +1670,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     public int updateCapacityNumberInFactory(Map<String, Object> mapValue) {
         Object lineSequence = mapValue.get("lineSequence");
         int result = 0;
-        if (lineSequence == null || lineSequence.equals("0") || lineSequence.equals("1") || lineSequence.equals("2")) {
+        if (lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) {
             result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
         }
         return result;
@@ -1593,4 +1680,165 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     public List<Map<String, Object>> getSaleMaterialId(BigDecimal saleOrderMaterialId) {
         return amsSaleOrderMapper.getSaleMaterialId(saleOrderMaterialId);
     }
+
+    /**
+     * 展示下发给承运商的车序号和物资
+     * @param map
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getCarrierTruckNoAndMaterialList(Map<String,Object> map) {
+        Object carrierSsoId = map.get("carrierSsoId");
+        if (carrierSsoId != null && ("".equals(carrierSsoId)) || "null".equals(carrierSsoId) || "undefined".equals(carrierSsoId)) {
+            map.replace("carrierSsoId",null);
+        }
+        List<Map<String,Object>> mapList = amsSaleOrderMapper.getTruckNoAndMaterial(map);
+        for (Map<String,Object> mapValue : mapList) {
+            BigDecimal placeId = (BigDecimal) mapValue.get("placeId");
+            if (placeId != null) {
+                List<Map<String, Object>> carrierAndPriceList = getCarrierByPlace(placeId);
+                mapValue.put("carrierAndPriceList", carrierAndPriceList);
+            }
+        }
+        return mapList;
+    }
+
+    /**
+     * 同步关闭金蝶物资分录
+     * @param mapValue
+     * @return
+     */
+    @Override
+    @Transactional
+    public int closeSteelMaterialId(Map<String, Object> mapValue) {
+        int result = 0;
+        Object orderId = mapValue.get("orderId");
+        BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId"));
+        List<Map<String,Object>> loadIdList =  amsSaleMaterialMapper.findLoadIdList(saleOrderMaterialId);
+        List<Map<String,Object>> weightIdList =  amsSaleMaterialMapper.findWeightIdList(saleOrderMaterialId);
+        String reason = (String) mapValue.get("reason");
+        BigDecimal saleMaterialId = DataChange.dataToBigDecimal(mapValue.get("saleMaterialId"));
+        // 如果还未派车
+        if (orderId == null) {
+            // 订单子表设为关闭状态
+            AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+            amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+            amsSaleMaterial.setDeleted(new BigDecimal(0));
+            amsSaleMaterial.setInsertUpdateRemark(reason);
+            result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
+            return result;
+        }
+        // 已派车
+        if (loadIdList == null || loadIdList.size() == 0) {
+            return result;
+        }
+        // 订单子表设为关闭状态
+        AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+        amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+        amsSaleMaterial.setDeleted(new BigDecimal(0));
+        amsSaleMaterial.setInsertUpdateRemark(reason);
+        result += amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
+        // 删除实绩表
+        Map<String, Object> loadMap = loadIdList.get(0);
+        Map<String, Object> weightMap = weightIdList.get(0);
+        BigDecimal loadId = (BigDecimal) loadMap.get("loadId");
+        BigDecimal weightId = (BigDecimal) weightMap.get("weightId");
+        result += amsSaleMaterialMapper.updateOrderMaterialToClose(mapValue);
+        result += amsSaleMaterialMapper.deleteLoadResult(loadId);
+        result += amsSaleMaterialMapper.deleteWeightResult(weightId);
+        result += amsSaleMaterialMapper.deleteWmspOutResult(mapValue);
+        return result;
+    }
+
+    /**
+     * 展示已审核化产焦炭销售订单列表
+     * @param mapValue
+     * @return
+     */
+    @Override
+    public List<Map<String, Object>> getSaleCokeOrder(Map<String, Object> mapValue) {
+        List<Map<String, Object>> resultList = amsSaleOrderMapper.getSaleCokeOrder(mapValue);
+        return resultList;
+    }
+
+    /**
+     * 反关闭金蝶单个分录
+     * @param saleMaterialId
+     * @return
+     */
+    @Override
+    public int adverseCloseSaleMaterial(BigDecimal saleMaterialId) {
+        Map<String,Object> head = new HashMap<>();
+        Map<String,Object> input = new HashMap<>();
+        // 0:代表不关闭整单
+        String wholeOrder = "0";
+        // unClose : 代表反关闭
+        String status = "unClose";
+        AmsSaleMaterial amsSaleMaterial = amsSaleMaterialMapper.selectByPrimaryKey(saleMaterialId);
+        amsSaleMaterial.setDeleted(null);
+        int result = amsSaleMaterialMapper.updateByPrimaryKeySelective(amsSaleMaterial);
+        AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(amsSaleMaterial.getSaleOrderId());
+        // 设置反关闭分录id
+        head.put("unCloseEntryId",amsSaleMaterial.getEasPrimaryId());
+        // 设置是否整单
+        head.put("wholeOrder",wholeOrder);
+        // 设置销售订单号
+        head.put("number",amsSaleOrder.getSaleNumber());
+        // 设置状态:unClose,反关闭;close,关闭
+        head.put("status",status);
+        input.put("head",head);
+        // 测试
+        Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+        // 正式
+//        Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+        input.put("head",head);
+        totalMap.put("input",input);
+        // 调用金蝶关闭接口
+        String json = JSONUtils.toJSONString(totalMap);
+        System.out.println(json);
+        Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
+        System.out.println(resultMap);
+        return result;
+    }
+
+    /**
+     * 反关闭金蝶整个销售订单
+     * @param saleOrderId
+     * @return
+     */
+    @Override
+    public int adverseCloseSaleOrder(BigDecimal saleOrderId) {
+        Map<String,Object> head = new HashMap<>();
+        Map<String,Object> input = new HashMap<>();
+        // 0:代表不关闭整单
+        String wholeOrder = "1";
+        // unClose : 代表反关闭
+        String status = "unClose";
+        AmsSaleOrder amsSaleOrder = amsSaleOrderMapper.selectByPrimaryKey(saleOrderId);
+        amsSaleOrder.setDeleted(new BigDecimal(0));
+        // 开启所有的分录
+        int result = amsSaleMaterialMapper.openAllSaleMaterial(amsSaleOrder.getSaleOrderId());
+        result += amsSaleOrderMapper.updateByPrimaryKeySelective(amsSaleOrder);
+        // 设置是否整单
+        head.put("wholeOrder",wholeOrder);
+        // 设置销售订单号
+        head.put("number",amsSaleOrder.getSaleNumber());
+        // 设置状态:unClose,反关闭;close,关闭
+        head.put("status",status);
+        input.put("head",head);
+        // 测试
+        Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+        // 正式
+//        Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+        input.put("head",head);
+        totalMap.put("input",input);
+        // 调用金蝶关闭接口
+        String json = JSONUtils.toJSONString(totalMap);
+        System.out.println(json);
+        Map<String,Object> resultMap = joinFeign.deleteSaleOrderToEas(totalMap);
+        System.out.println(resultMap);
+        return result;
+    }
+
+
 }

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

@@ -501,5 +501,78 @@
     FROM RMS_MATERIAL RM
     WHERE RM.MATERIAL_ID = #{materialId}
   </select>
+  
+  <select id="findLoadIdList" parameterType="DECIMAL" resultType="java.util.Map">
+    SELECT TLR.RESULT_ID AS "loadId"
+    FROM OMSTRUCK_ORDER OO
+           LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                     ON OO.ORDER_ID = TTR.ORDER_ID
+           LEFT JOIN TMSTRUCK_LOAD_RESULT TLR
+                     ON TLR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+    WHERE OO.ORDER_TYPE = 1
+      AND OO.ORDER_STATUS IN (4, 5)
+      AND TLR.MATERIAL_ID IS NULL
+      AND OO.ORDER_PLAN_ID = #{saleOrderMaterialId}
+    ORDER BY TLR.SEGMENT_SQE DESC
+  </select>
+
+  <select id="findWeightIdList" parameterType="DECIMAL" resultType="java.util.Map">
+    SELECT TWR.WEIGHT_TASK_RESULT_ID AS "weightId"
+    FROM OMSTRUCK_ORDER OO
+           LEFT JOIN TMSTRUCK_TOTAL_RESULT TTR
+                     ON OO.ORDER_ID = TTR.ORDER_ID
+           LEFT JOIN TMSTRUCK_WEIGHT_RESULT TWR
+                     ON TWR.RESULT_TOTAL_ID = TTR.RESULT_TOTAL_ID
+    WHERE OO.ORDER_TYPE = 1
+      AND OO.ORDER_STATUS IN (4, 5)
+      AND TWR.MATERIAL_ID IS NULL
+      AND OO.ORDER_PLAN_ID = #{saleOrderMaterialId}
+    ORDER BY TWR.TARE_SEGMENT_SQE DESC
+  </select>
+  
+  <delete id="deleteLoadResult" parameterType="DECIMAL" >
+    DELETE FROM TMSTRUCK_LOAD_RESULT WHERE RESULT_ID = #{loadId}
+  </delete>
+
+  <delete id="deleteWeightResult" parameterType="DECIMAL" >
+    DELETE FROM TMSTRUCK_WEIGHT_RESULT WHERE WEIGHT_TASK_RESULT_ID = #{weightId}
+  </delete>
+
+  <delete id="updateOrderMaterialToClose" parameterType="java.util.Map" >
+    UPDATE OMSTRUCK_ORDER_MATERIAL OOM
+    SET OOM.MATERIAL_PRIORITY = 71
+    WHERE OOM.ORDER_ID =
+          (
+            SELECT OO.ORDER_ID
+            FROM OMSTRUCK_ORDER OO
+            WHERE OO.ORDER_TYPE = 1
+              AND OO.ORDER_PLAN_ID = #{saleOrderMaterialId})
+      AND OOM.MATERIAL_ID =
+          (SELECT ASM.MATERIAL_ID
+           FROM AMS_SALE_MATERIAL ASM
+           WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId})
+  </delete>
+
+  <delete id="deleteWmspOutResult" parameterType="java.util.Map" >
+    DELETE
+    FROM WMSP_OUTBOUND_RESULT_MATERIAL WORM
+    WHERE WORM.OUTBOUND_RESULT_ID =
+          (SELECT WOR.RESULT_ID
+           FROM WMSP_OUTBOUND_RESULT WOR
+                  LEFT JOIN OMSTRUCK_ORDER OO
+                            ON OO.ORDER_ID = WOR.BILL_LADING_ID
+           WHERE OO.ORDER_TYPE = 1
+             AND OO.ORDER_PLAN_ID = #{saleOrderMaterialId})
+      AND WORM.MATERIAL_ID =
+          (SELECT ASM.MATERIAL_ID
+           FROM AMS_SALE_MATERIAL ASM
+           WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId})
+  </delete>
+
+  <update id="openAllSaleMaterial" parameterType="DECIMAL" >
+    UPDATE AMS_SALE_MATERIAL ASM
+    SET ASM.DELETED = NULL
+    WHERE ASM.SALE_ORDER_ID = #{saleOrderId}
+  </update>
 
 </mapper>

+ 336 - 72
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -1540,6 +1540,7 @@
     LEFT JOIN RMS_SALER R_SALER
     ON R_SALER.SALER_ID = a_s_order.SALER_ID
     where a_s_order.SALE_ORDER_STATUS=0 and a_s_order.DELETED=0
+    and ASM.DELETED 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>
@@ -1689,6 +1690,7 @@
     ON R_SALER.SALER_ID = a_s_order.SALER_ID
     where a_s_order.SALE_ORDER_STATUS=1
     and a_s_order.DELETED = 0
+    AND ASM.DELETED 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>
@@ -1955,7 +1957,11 @@
     RM.MATERIAL_NAME || RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL "nameSpecificationModel",
     RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS AS "addressPlace",
     ASM.SALE_WAREHOUSE "saleWareHouse",
-    a_s_order.DELETED "deleted"
+    a_s_order.DELETED "deleted",
+    a_s_order.SHIPPER_ID "shipperId",
+    a_s_order.RECEIVE_ID "receiveId",
+    a_s_order.SALE_ORDER_ISSELF_MENTION "isSelfMention",
+    a_s_order.SALER_ID "salerId"
     from AMS_SALE_ORDER a_s_order
     left join RMS_SHIPPER r_shipper
     on a_s_order.SHIPPER_ID=r_shipper.SHIPPER_ID
@@ -1978,6 +1984,7 @@
     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 ASM.DELETED 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>
@@ -2235,23 +2242,24 @@
   <select id="getSaleOrderAndMaterialById" resultType="java.util.Map" parameterType="java.util.Map">
     SELECT *
     FROM (
-    select ASO.SALE_ORDER_ID                              as "saleOrderId",
-    ASM.SALE_MATERIAL_ID                           as "saleMaterialId",
-    RM.MATERIAL_ID                                 as "materialId",
-    ASO.SALE_NUMBER                                as "saleNumber",
-    ASO.SALE_ORDER_ISSELF_MENTION                  as "saleOrderIsselfMention",
-    RS.SHIPPER_NAME                                as "shipperName",
-    RC.CONSIGNEE_COMPANY_NAME                      as "consigneeCompanyName",
-    RM.MATERIAL_NAME                               as "materialName",
-    ASM.MATERIAL_NUMBER                            as "materialNumber",
-    ASM.MATERIAL_WEIGHT                            as "materialWeight",
-    ASM.SALE_WAREHOUSE                             as "saleWareHouse",
+    select ASO.SALE_ORDER_ID as "saleOrderId",
+    ASM.SALE_MATERIAL_ID as "saleMaterialId",
+    RM.MATERIAL_ID as "materialId",
+    ASO.SALE_NUMBER as "saleNumber",
+    ASO.SALE_ORDER_ISSELF_MENTION as "saleOrderIsselfMention",
+    ASO.SALE_REMARK as "saleRemark",
+    RS.SHIPPER_NAME as "shipperName",
+    RC.CONSIGNEE_COMPANY_NAME as "consigneeCompanyName",
+    RM.MATERIAL_NAME as "materialName",
+    ASM.MATERIAL_NUMBER as "materialNumber",
+    ASM.MATERIAL_WEIGHT as "materialWeight",
+    ASM.SALE_WAREHOUSE as "saleWareHouse",
     RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL as "specificationModel",
-    RM.MATERIAL_CODE                               as "materialCode",
-    nvl(sumWeight.weight,0)+nvl(sumWeight2.weight,0)             as "totalWeight",
-    nvl(sumWeight.weight ,0)                              as "netWeight",
-    nvl(sumWeight2.weight ,0)                              as "weight",
-    nvl(carCount.coun ,0)                                   as "carCount"
+    RM.MATERIAL_CODE as "materialCode",
+    nvl(sumWeight.weight,0)+nvl(sumWeight2.weight,0) as "totalWeight",
+    nvl(sumWeight.weight ,0) as "netWeight",
+    nvl(sumWeight2.weight ,0) as "weight",
+    nvl(carCount.coun ,0) as "carCount"
     from AMS_SALE_ORDER ASO
     left join RMS_SHIPPER RS
     on ASO.SHIPPER_ID = RS.SHIPPER_ID
@@ -2262,7 +2270,7 @@
     left join RMS_MATERIAL RM
     on RM.MATERIAL_ID = ASM.MATERIAL_ID
     left join (
-    select sum( t_w_result.RESULT_NET_WEIGHT)  weight,a_s_o_material.SALE_ORDER_ID SALE_ORDER_ID
+    select sum( t_w_result.RESULT_NET_WEIGHT) weight,a_s_o_material.SALE_ORDER_ID SALE_ORDER_ID
     from AMS_SALE_ORDER_MATERIAL a_s_o_material
     left join Omstruck_Order o_order
     on a_s_o_material.SALE_ORDER_MATERIAL_ID=o_order.order_plan_id
@@ -2275,7 +2283,7 @@
     ) sumWeight
     on sumWeight.SALE_ORDER_ID=ASO.SALE_ORDER_ID
     left join (
-    select sum( o_o_material.ORDER_MATERIAL_WEIGHT)  weight,a_s_o_Material.SALE_ORDER_ID SALE_ORDER_ID
+    select sum( o_o_material.ORDER_MATERIAL_WEIGHT) weight,a_s_o_Material.SALE_ORDER_ID SALE_ORDER_ID
     from AMS_SALE_ORDER_MATERIAL a_s_o_material
     left join Omstruck_Order o_order
     on a_s_o_material.SALE_ORDER_MATERIAL_ID=o_order.order_plan_id
@@ -2291,7 +2299,7 @@
     ) sumWeight2
     on sumWeight2.SALE_ORDER_ID=ASO.SALE_ORDER_ID
     left join (
-    select count(o_order.order_id)  coun ,a_s_o_Material.SALE_ORDER_ID SALE_ORDER_ID
+    select count(o_order.order_id) coun ,a_s_o_Material.SALE_ORDER_ID SALE_ORDER_ID
     from AMS_SALE_ORDER_MATERIAL a_s_o_material
     left join Omstruck_Order o_order
     on a_s_o_material.SALE_ORDER_MATERIAL_ID=o_order.order_plan_id
@@ -2299,10 +2307,10 @@
     on o_order.order_id=t_t_result.order_id
     left join Tmstruck_Weight_Result t_w_result
     on t_t_result.result_total_id=t_w_result.result_total_id
-    where  o_order.order_status in (2,4,5)
+    where o_order.order_status in (2,4,5)
     GROUP BY
     a_s_o_Material.SALE_ORDER_ID
-  
+
     ) carCount
     on carCount.SALE_ORDER_ID=ASO.SALE_ORDER_ID
     where ASO.SALE_ORDER_ID = #{saleOrderId}
@@ -2448,48 +2456,55 @@
     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",
-                    ASM.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",
-                    RCA.CARRIER_NAME                               AS "carrierName",
-                    ASOM.TRUCK_REMARK                              AS "truckRemark"
+  <select id="getTruckNoAndMaterial" parameterType="java.util.Map" resultType="java.util.Map" >
+    SELECT DISTINCT ASOM.SALE_ORDER_MATERIAL_TRUCK_NO AS "truckNo",
+    RM.MATERIAL_NAME AS "materialName",
+    ASM.MATERIAL_ID AS "materialId",
+    ASM.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",
+    RCA.CARRIER_NAME AS "carrierName",
+    ASOM.TRUCK_REMARK AS "truckRemark",
+    DECODE(ASO.SALE_ORDER_STATUS,1,'订单已上报',2,'销售已提交',4,'财务已审批') "statusStr"
     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
-           LEFT JOIN RMS_CARRIER RCA
-                     ON RCA.CARRIER_ID = ADSO.CARRIER_ID
+    LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
+    ON ASOM.SALE_ORDER_MATERIAL_ID = ASTM.SALE_ORDER_MATERIAL_ID
+    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 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
+    LEFT JOIN RMS_CARRIER RCA
+    ON RCA.CARRIER_ID = ADSO.CARRIER_ID
     WHERE ASOM.SALE_ORDER_ID = #{saleOrderId}
-      AND OO.ORDER_ID IS NULL
-      AND ADSO.DISPATCH_ID IS NOT NULL
+    <if test="carrierSsoId != null">
+      AND RCA.CARRIER_SSO_ID = #{carrierSsoId}
+    </if>
+    AND OO.ORDER_ID IS NULL
+    AND ADSO.DISPATCH_ID IS NOT NULL
+    AND ASM.DELETED IS NULL
     ORDER BY ASOM.SALE_ORDER_MATERIAL_TRUCK_NO ASC
   </select>
 
@@ -2544,7 +2559,7 @@
     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",
+    DECODE(a_s_order.SALE_ORDER_STATUS,1,'订单已上报',2,'销售已提交',4,'财务已审批') "statusStr",
     a_s_order.UPDATE_TIME "updateTime",
     RM.MATERIAL_NAME "materialName",
     RM.MATERIAL_SPECIFICATION "materialSpecification",
@@ -2571,11 +2586,19 @@
     ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
     LEFT JOIN RMS_MATERIAL RM
     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
-    where a_s_order.SALE_ORDER_STATUS in (2,4)
+    where a_s_order.SALE_ORDER_STATUS in (1,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
+    AND ASM.DELETED IS NULL
+    <if test="oneDate != null">
+      and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt; = a_s_order.INSERT_TIME
+    </if>
+    <if test="startDate != null">
+      and to_date(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;=  a_s_order.INSERT_TIME
+      and to_date(#{endDate}, 'yyyy-mm-dd hh24:mi:ss') >=  a_s_order.INSERT_TIME
+    </if>
     <if test="carrierSsoId != null" >
       and RC.CARRIER_SSO_ID = #{carrierSsoId}
     </if>
@@ -2837,7 +2860,7 @@
     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, '财务已审批')
+    DECODE(ASO.SALE_ORDER_STATUS,1,'订单已上报',2, '销售已提交',4, '财务已审批')
     AS "approvalStatus",
     ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
     RSH.SHIPPER_NAME AS "shipperName",
@@ -2871,10 +2894,18 @@
     ON ASM.SALE_MATERIAL_ID = ASTM.MATERIAL_ID
     LEFT JOIN RMS_MATERIAL RM
     ON RM.MATERIAL_ID = ASM.MATERIAL_ID
-    WHERE ASO.SALE_ORDER_STATUS IN (2,4)
+    WHERE ASO.SALE_ORDER_STATUS IN (1,2,4)
     AND ASOM.ISSUE_STATUS IS NULL
     AND ADSO.CARRIER_ID IS NULL
     AND ASO.DELETED = 0
+    AND ASM.DELETED IS NULL
+    <if test="oneDate != null">
+      and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt; = ASO.INSERT_TIME
+    </if>
+    <if test="startDate != null">
+      and to_date(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;=  ASO.INSERT_TIME
+      and to_date(#{endDate}, 'yyyy-mm-dd hh24:mi:ss') >=  ASO.INSERT_TIME
+    </if>
     <if test="con != null" >
       AND RCO.CONSIGNEE_COMPANY_NAME LIKE #{con}
     </if>
@@ -2982,7 +3013,7 @@
     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, '财务已审批')
+    DECODE(ASO.SALE_ORDER_STATUS,1,'订单已上报',2, '销售已提交',4, '财务已审批')
     AS "approvalStatus",
     ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
     RSH.SHIPPER_NAME AS "shipperName",
@@ -3026,6 +3057,14 @@
     AND ADSO.DISPATCH_TYPE = 2
     AND OO.ORDER_ID IS NULL
     AND ASO.DELETED = 0
+    AND ASM.DELETED IS NULL
+    <if test="oneDate != null">
+      and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt; = ASO.INSERT_TIME
+    </if>
+    <if test="startDate != null">
+      and to_date(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;=  ASO.INSERT_TIME
+      and to_date(#{endDate}, 'yyyy-mm-dd hh24:mi:ss') >=  ASO.INSERT_TIME
+    </if>
     ) "NOCAR"
     <where>
       <if test="con != null" >
@@ -3165,7 +3204,7 @@
     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, '财务已审批')
+    DECODE(ASO.SALE_ORDER_STATUS,1,'订单已上报',2, '销售已提交',4, '财务已审批')
     AS "approvalStatus",
     ASOM.SALE_ORDER_CONSIGNEE_TEL AS "saleOrderConsigneeTel",
     RSH.SHIPPER_NAME AS "shipperName",
@@ -3216,6 +3255,7 @@
     AND OO.ORDER_ID IS NOT NULL
     AND OO.ORDER_STATUS IN (4,5)
     AND ASO.DELETED != 2
+    AND ASM.DELETED IS NULL
     <if test="oneDate != null">
       and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt; = ASOM.INSERT_TIME
     </if>
@@ -3401,7 +3441,8 @@
     RRA.ADDRESS_PROVINCE "addressProvince",
     RRA.ADDRESS_DISTRICT "addressDistrict",
     RRA.ADDRESS_TOWN "addressTown",
-    ASOM.SALE_ORDER_CONSIGNEE_TEL "saleOrderConsigneeTel"
+    ASOM.SALE_ORDER_CONSIGNEE_TEL "saleOrderConsigneeTel",
+    RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN || RRP.ADDRESS_DELIVERY_ADDRESS "addressPlace"
     FROM AMS_SALE_ORDER ASO
     LEFT JOIN AMS_SALE_ORDER_MATERIAL ASOM
     ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
@@ -3413,9 +3454,6 @@
     AND RRP.PLACE_ID IS NOT NULL
     ORDER BY ASOM.SALE_ORDER_MATERIAL_ID DESC
     )
-    WHERE rownum <![CDATA[
-    <
-    ]]> 2
   </select>
 
   <select id="getSalerByReceiveId" parameterType="DECIMAL" resultType="java.util.Map" >
@@ -4161,4 +4199,230 @@
                      ON RRP.PLACE_ID = ACTP.PLACE_ID
     WHERE RRP.ADDRESS_ID = #{addressId}
   </select>
+
+  <select id="getSaleCokeOrder" 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",
+    RM.MATERIAL_NAME "materialName",
+    ASM.MATERIAL_NUMBER "materialNumber",
+    ASM.SALE_WAREHOUSE "saleWareHouse",
+    a_s_order.DELETED "deleted",
+    a_s_order.SHIPPER_ID "shipperId",
+    a_s_order.RECEIVE_ID "receiveId",
+    a_s_order.SALE_ORDER_ISSELF_MENTION "isSelfMention"
+    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_MATERIAL ASM
+    ON ASM.SALE_ORDER_ID = a_s_order.SALE_ORDER_ID
+    LEFT JOIN RMS_MATERIAL RM
+    ON RM.MATERIAL_ID = ASM.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 ASM.DELETED IS NULL
+    <if test="con != null">
+      and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0 or instr(RM.MATERIAL_NAME, #{con}) > 0 )
+    </if>
+    <if test="oneDate != null">
+      and to_date(#{oneDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;= a_s_order.UPDATE_TIME
+    </if>
+    <if test="startDate != null">
+      and to_date(#{startDate}, 'yyyy-mm-dd hh24:mi:ss') &lt;= a_s_order.UPDATE_TIME
+      and to_date(#{endDate}, 'yyyy-mm-dd hh24:mi:ss') >= a_s_order.UPDATE_TIME
+    </if>
+    <if test="shipperId != null">
+      and a_s_order.SHIPPER_ID = #{shipperId}
+    </if>
+    <if test="consigneeSsoId != null">
+      and r_consignee.CONSIGNEE_SSO_ID = #{consigneeSsoId}
+    </if>
+    <if test="saleType == null">
+      and a_s_order.SALE_TYPE is null
+    </if>
+    ORDER BY a_s_order.UPDATE_TIME DESC
+    )
+    <where>
+      <if test="saleNumber != null">
+        <foreach collection="saleNumber" item="item" open="(" separator="or" close=")">
+          "saleNumber" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="materialName != null">
+        <foreach collection="materialName" item="item" open="(" separator="or" close=")">
+          "materialName" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="materialSpecification != null">
+        <foreach collection="materialSpecification" item="item" open="(" separator="or" close=")">
+          "materialSpecification" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="materialModel != null">
+        <foreach collection="materialModel" item="item" open="(" separator="or" close=")">
+          "materialModel" 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=")">
+          "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>
+  </select>
+
+  <select id="findStatus" parameterType="DECIMAL" resultType="java.lang.Integer" >
+    SELECT ASO.SALE_ORDER_STATUS AS "saleStatus"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+           LEFT JOIN AMS_SALE_ORDER ASO
+                     ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
+
+  <select id="getPlaceId" parameterType="DECIMAL" resultType="DECIMAL" >
+    SELECT ASOM.SALE_SHIPPING_ADDRESS_ID "placeId"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
+
+  <select id="getAddressPriceList" parameterType="java.util.Map" resultType="java.util.Map" >
+    SELECT ACTP.PRICE_ID AS "priceId"
+    FROM AMS_CONTRACT_TRANSPORT_PRICE ACTP
+           LEFT JOIN RMS_RECEIVE_PLACE RRP
+                     ON RRP.PLACE_ID = ACTP.PLACE_ID
+    WHERE ACTP.CARRIER_ID = #{carrierId}
+      AND RRP.ADDRESS_ID = #{addressId}
+      ORDER BY ACTP.PRICE_ID DESC
+  </select>
+
+  <select id="findSelfMention" parameterType="DECIMAL" resultType="java.lang.String" >
+    SELECT ASO.SALE_ORDER_ISSELF_MENTION AS "selfMention"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+           LEFT JOIN AMS_SALE_ORDER ASO
+                     ON ASO.SALE_ORDER_ID = ASOM.SALE_ORDER_ID
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
+
+  <select id="findReceiveId" parameterType="java.lang.String" resultType="DECIMAL" >
+    SELECT RC.CONSIGNEE_ID AS "receiveId"
+    FROM RMS_CONSIGNEE RC
+    WHERE RC.CONSIGNEE_COMPANY_NAME = #{receiveName}
+  </select>
+
+  <select id="findSalerId" parameterType="java.lang.String" resultType="DECIMAL" >
+    SELECT RS.SALER_ID AS "salerId"
+    FROM RMS_SALER RS
+    WHERE RS.SALER_NAME = #{salerName}
+  </select>
+
+  <select id="findMaterialId" parameterType="java.util.Map" resultType="DECIMAL">
+    SELECT RM.MATERIAL_ID AS "materialId"
+    FROM RMS_MATERIAL RM
+    WHERE RM.MATERIAL_NAME = #{name}
+    AND RM.MATERIAL_SPECIFICATION = #{specification}
+    <if test="model != null">
+      AND RM.MATERIAL_MODEL = #{model}
+    </if>
+  </select>
+
+  <select id="findAddressId" parameterType="java.util.Map" resultType="DECIMAL" >
+
+  </select>
 </mapper>