hujg пре 2 година
родитељ
комит
646510b48c

+ 24 - 4
src/main/java/com/steerinfo/dil/controller/AmsSaleOrderController.java

@@ -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 = "展示销售订单下的车序号和物资")
@@ -1216,7 +1222,7 @@ public class AmsSaleOrderController extends BaseRESTfulController {
         head.put("closeWlEntryId",closeWlEntryId);
         head.put("status",status);
         Map<String,Object> input = new HashMap<>();
-        Map<String, Object> totalMap = easDeleteUtil.getTotalMap();
+        Map<String, Object> totalMap = easTestUtil.getTotalMap();
         input.put("head",head);
         totalMap.put("input",input);
         // 调用金蝶关闭接口
@@ -1261,4 +1267,18 @@ public class AmsSaleOrderController extends BaseRESTfulController {
         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);
+    }
 }

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

@@ -27,4 +27,6 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
     int updateOrderMaterialToClose(Map<String, Object> mapValue);
 
     int deleteWmspOutResult(Map<String, Object> mapValue);
+    // 开启所有的分录
+    int openAllSaleMaterial(BigDecimal saleOrderId);
 }

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

@@ -137,4 +137,18 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
 
     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);
 }

+ 5 - 1
src/main/java/com/steerinfo/dil/service/IAmsSaleOrderService.java

@@ -99,7 +99,7 @@ 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);
@@ -165,4 +165,8 @@ public interface IAmsSaleOrderService {
     int closeSteelMaterialId(Map<String, Object> mapValue);
     // 展示已审核化产焦炭销售订单列表
     List<Map<String, Object>> getSaleCokeOrder(Map<String, Object> mapValue);
+    // 反关闭金蝶单个分录
+    int adverseCloseSaleMaterial(BigDecimal saleMaterialId);
+    // 反关闭整个销售订单
+    int adverseCloseSaleOrder(BigDecimal saleOrderId);
 }

+ 143 - 1
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -508,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");
         // 备注
@@ -522,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;
         // 销售订单
@@ -569,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"));
@@ -647,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);
@@ -729,6 +771,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     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("订单未审核,无法派车!");
         }
@@ -743,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"));
             // 司机电话号码
@@ -1649,6 +1709,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
      * @return
      */
     @Override
+    @Transactional
     public int closeSteelMaterialId(Map<String, Object> mapValue) {
         int result = 0;
         Object orderId = mapValue.get("orderId");
@@ -1699,4 +1760,85 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         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;
+    }
+
+
 }

+ 3 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsContractTruckPriceMapper.xml

@@ -904,6 +904,9 @@
                  LEFT JOIN RMS_OIL_TYPE r_o_type
                            ON a_t_price.OIL_TYPE_ID = r_o_type.OIL_TYPE_ID
         where TYPE in (2,5,6))
+        <if test="deleted != null">
+          and a_t_price.deleted = #{deleted}
+        </if>
   </select>
     <select id="selectInwardPrice" resultType="java.util.LinkedHashMap" parameterType="java.util.Map">
       select * from (select

+ 7 - 1
src/main/resources/com/steerinfo/dil/mapper/AmsSaleMaterialMapper.xml

@@ -557,7 +557,7 @@
     DELETE
     FROM WMSP_OUTBOUND_RESULT_MATERIAL WORM
     WHERE WORM.OUTBOUND_RESULT_ID =
-          (SELECT
+          (SELECT WOR.RESULT_ID
            FROM WMSP_OUTBOUND_RESULT WOR
                   LEFT JOIN OMSTRUCK_ORDER OO
                             ON OO.ORDER_ID = WOR.BILL_LADING_ID
@@ -569,4 +569,10 @@
            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>

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

@@ -2242,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
@@ -2269,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
@@ -2282,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
@@ -2298,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
@@ -2306,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}
@@ -4374,4 +4375,54 @@
                      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>