Redeem 1 năm trước cách đây
mục cha
commit
126f801986

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

@@ -1041,6 +1041,9 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
     @PostMapping("/updateTruckNoCarrier")
     public RESTfulResult updateTruckNoCarrier(@RequestBody Map<String,Object> mapValue) {
         int result = amsSaleOrderService.updateTruckNoCarrier(mapValue);
+        if (mapValue.containsKey("oYeFlag")) {
+            return success(result);
+        }
         try {
             List<Map<String,Object>> mapList = new ArrayList<>();
             mapList.add(mapValue);
@@ -1383,6 +1386,7 @@ public class AmsSaleOrderController<RedisTemplate> extends BaseRESTfulController
         Map<String, Object> result = new HashMap<>();
         try{
             result = amsSaleOrderService.updateCapacityNumberInFactory(mapValue);
+
         }catch (Exception e){
             e.printStackTrace();
             if(e.getMessage()==null || e.getMessage().contains("Exception")){

+ 144 - 0
src/main/java/com/steerinfo/dil/controller/OyeWarehouseController.java

@@ -0,0 +1,144 @@
+package com.steerinfo.dil.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.steerinfo.dil.mapper.RmsReceivePlaceMapper;
+import com.steerinfo.dil.model.RmsReceivePlace;
+import com.steerinfo.dil.service.impl.OyeWarehouseServiceImpl;
+import com.steerinfo.dil.util.BaseRESTfulController;
+import com.steerinfo.dil.util.ColumnDataUtil;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.PageListAdd;
+import com.steerinfo.framework.controller.RESTfulResult;
+import com.steerinfo.framework.service.pagehelper.PageHelper;
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/${api.version}/OyeWarehouse")
+public class OyeWarehouseController extends BaseRESTfulController {
+
+    private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+
+    @Resource
+    RmsReceivePlaceMapper rmsReceivePlaceMapper;
+
+    @Resource
+    ColumnDataUtil columnDataUtil;
+
+    @Resource
+    OyeWarehouseServiceImpl oyeWarehouseService;
+
+    @ApiOperation("新增欧冶具体库房")
+    @PostMapping("/insertOyeWarehouse")
+    public RESTfulResult insertOyeWarehouse(@RequestBody Map<String,Object> map) {
+        RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
+        rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
+        rmsReceivePlace.setAddressId(new BigDecimal(3));
+        rmsReceivePlace.setAddressDeliveryAddress(map.get("warehouseName").toString());
+        rmsReceivePlaceMapper.insertSelective(rmsReceivePlace);
+        return success("新增成功");
+    }
+
+    @ApiOperation("查询欧冶库具体库房信息")
+    @PostMapping("getOyeWarehouse")
+    public RESTfulResult getOyeWarehouse(@RequestBody(required = false) Map<String,Object> mapValue,
+                                         Integer pageNum,
+                                         Integer pageSize,
+                                         Integer apiId) {
+
+        PageHelper.startPage(pageNum,pageSize);
+        //分页数据
+        List<Map<String, Object>> mapList = rmsReceivePlaceMapper.getOyeWarehouse(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,mapList);
+        return success(pageList);
+    }
+
+
+    @ApiModelProperty(value = "新增欧冶转运计划")
+    @PostMapping("/addTransPlan")
+    public RESTfulResult addTransPlan(@RequestBody Map<String,Object> mapValue){
+        JSONObject jsonObject = new JSONObject(mapValue);
+        System.out.println(new Date() + "=======================");
+        System.out.println(jsonObject);
+        System.out.println(new Date() + "=======================");
+        try {
+            // 成功
+            int result = oyeWarehouseService.addTransPlan(mapValue);
+            return success(result);
+        } catch (Exception e) {
+            // 失败
+            return failed(e.getMessage());
+        }
+    }
+
+    @ApiOperation("批量新增欧冶转运计划")
+    @PostMapping("addTransPlanList")
+    @Transactional(rollbackFor = Exception.class)
+    public RESTfulResult addTransPlanList(@RequestBody List<Map<String,Object>> mapList) throws Exception {
+        int count = 0;
+        String saleOrderNo = null;
+        System.out.println("------新增欧冶转运计划Excel导入-----" + new Date());
+        try {
+            Map<String, Object> logMap = new HashMap<>();
+            logMap.put("mapList",mapList);
+            JSONObject jsonObject = new JSONObject(logMap);
+            System.out.println(jsonObject);
+        }catch (Exception e){
+            e.printStackTrace();
+        }
+        System.out.println("------销售订单批量导入Excel导入-----" + new Date());
+        try {
+            for (Map<String,Object> map:mapList
+            ) {
+                saleOrderNo = map.get("saleOrderNo").toString();
+                count++;
+                oyeWarehouseService.addTransPlan(map);
+            }
+        } catch (Exception e) {
+            System.out.println(e);
+            throw new Exception("销售订单编号为:" + saleOrderNo + e.getMessage());
+        }
+        return success(count);
+    }
+
+
+
+    @ApiOperation("查询转运计划")
+    @PostMapping("/getTransPlan")
+    public RESTfulResult getTransPlan(@RequestBody(required=false) Map<String,Object> mapValue,
+                                      Integer apiId,
+                                      Integer pageNum,
+                                      Integer pageSize,
+                                      String startTime,
+                                      String endTime){
+        DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
+        PageHelper.startPage(pageNum,pageSize);
+        List<Map<String, Object>> mapList = oyeWarehouseService.getTransPlan(mapValue);
+        PageListAdd pageList = columnDataUtil.tableColumnData5(apiId, null,mapList);
+        return success(pageList);
+    }
+
+    @ApiOperation("审核转运计划")
+    @PostMapping("approveTransPlan")
+    public RESTfulResult approveTransPlan(@RequestBody Map<String,Object> map) {
+        int i = oyeWarehouseService.approveTransPlan(map);
+        return success();
+    }
+
+
+
+}

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

@@ -52,4 +52,10 @@ public interface AmsSaleMaterialMapper extends IBaseMapper<AmsSaleMaterial, BigD
 
     int getSaleMaterialDeleteBySaleMaterialId(BigDecimal saleMaterialId);
 
+    List<BigDecimal> getRealTimeInventory(Map<String, Object> searchMap);
+
+    BigDecimal getRealTimeUnloadNumber(BigDecimal inventoryId);
+
+    BigDecimal getRealTimeMaterialNumber(BigDecimal inventoryId);
+
 }

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

@@ -229,4 +229,15 @@ public interface AmsSaleOrderMapper extends IBaseMapper<AmsSaleOrder, BigDecimal
 
     int getTransOrderIds();
 
+    BigDecimal findReceiveIdByOye(Object receiveName);
+
+
+    List<Map<String, Object>> getTransPlan(Map<String, Object> mapValue);
+
+    int approveTransPlan(Map<String, Object> approveMap);
+
+    String selectPlaceRemark(String place);
+
+    String getPlaceAddress(BigDecimal saleOrderMaterialId);
+
 }

+ 9 - 3
src/main/java/com/steerinfo/dil/mapper/RmsReceivePlaceMapper.java

@@ -2,12 +2,13 @@ package com.steerinfo.dil.mapper;
 
 import com.steerinfo.dil.model.RmsReceivePlace;
 import com.steerinfo.framework.mapper.IBaseMapper;
-import java.math.*;
-import java.util.Map;
-
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Select;
 
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
 @Mapper
 public interface RmsReceivePlaceMapper extends IBaseMapper<RmsReceivePlace, BigDecimal> {
     // 得到具体地址主键id
@@ -15,4 +16,9 @@ public interface RmsReceivePlaceMapper extends IBaseMapper<RmsReceivePlace, BigD
 
     @Select("select seq_RMS_RECEIVE_PLACE.nextval from dual")
     BigDecimal selectMaxId();
+
+    List<Map<String, Object>> getOyeWarehouse(Map<String, Object> mapValue);
+
+    String getAddressType(BigDecimal shippingAddressId);
+
 }

+ 4 - 0
src/main/java/com/steerinfo/dil/service/IOyeWarehouseService.java

@@ -0,0 +1,4 @@
+package com.steerinfo.dil.service;
+
+public interface IOyeWarehouseService {
+}

+ 48 - 10
src/main/java/com/steerinfo/dil/service/impl/AmsSaleOrderServiceImpl.java

@@ -11,7 +11,6 @@ import com.steerinfo.dil.util.*;
 import com.steerinfo.framework.utils.base.StringUtils;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -723,8 +722,12 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 String truckRemark = (String) (map.get("truckRemark"));
                 String place = (String) (map.get("place"));
                 if (place != null && !"null".equals(place)) {
+                    String addressType = rmsReceivePlaceMapper.getAddressType(shippingAddressId);
                     List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
                     if (placeIdList == null || placeIdList.size() == 0) {
+                        if ("厂外库".equals(addressType)) {
+                            throw new Exception("您输入的具体库房名称,不存在!请去维护");
+                        }
                         RmsReceivePlace rmsReceivePlace = new RmsReceivePlace();
                         rmsReceivePlace.setPlaceId(rmsReceivePlaceMapper.selectMaxId());
                         rmsReceivePlace.setAddressId(shippingAddressId);
@@ -755,10 +758,16 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                     }
                 }
                 if (isSelfMention.equals("是")) {
+                    BigDecimal carrierId = null;
                     // 根据收货单位id查询出收货单位名称
-                    String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
+                    if (place != null && place.contains("欧冶")) {
+                        String placeRemark = amsSaleOrderMapper.selectPlaceRemark(place);
+                        carrierId = amsSaleOrderMapper.selectCarrierId(placeRemark);
+                    }else{
+                        String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
+                        carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
+                    }
                     // 根据收货单位名称查询承运商id
-                    BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
                     List<Map<String, Object>> list = new ArrayList<>();
                     Map<String,Object> map1 = new HashMap<>();
                     // 传入车序号主键和承运商id
@@ -941,7 +950,6 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         //判断该车序号对应的分录是否全部关闭
         Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(stringObjectMap.get("saleOrderMaterialId")));
         if(flCount == 0 && !"取消".equals(stringObjectMap.get("capacityNumber")) &&  !"待定".equals(stringObjectMap.get("capacityNumber"))) {
-
             throw new Exception("该运单下所有分录被关闭,无法派车");
         }
         if (orderMap != null) {
@@ -987,8 +995,23 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
             if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
                 throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
             }
+            // 得到车序号表主键
+            BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+            //判断是欧冶
+            String placeAddress = amsSaleOrderMapper.getPlaceAddress(saleOrderMaterialId);
+            if (placeAddress != null && placeAddress.contains("欧冶")) {
+                Map<String,Object> data=null;
+                try{
+                    data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNumber).getData();
+                }catch (Exception e){
+                    throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
+                }
+                if(data==null || !"1001".equals(""+data.get("status"))){
+                    throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
+                }
+            }
             //非自提,单次校验且全局校验,且车不允许无GPS
-            int isGPS=amsSaleOrderMapper.isGPS(capacityNumber);
+            int isGPS = amsSaleOrderMapper.isGPS(capacityNumber);
             if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
                 Map<String,Object> data=null;
                 try{
@@ -1001,9 +1024,10 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 }
             }
             //校验结束,上传金蝶
-            pushCarNumberToEas(map);
-            // 得到车序号表主键
-            BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
+            if(!map.containsKey("oYeFlag")) {
+                pushCarNumberToEas(map);
+            }
+
             // 得到承运商
             BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
             // 查询到车序号的单价
@@ -2255,6 +2279,18 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
         if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
             throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
         }
+        String placeAddress = amsSaleOrderMapper.getPlaceAddress(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
+        if (placeAddress != null && placeAddress.contains("欧冶")) {
+            Map<String,Object> data=null;
+            try{
+                data= (Map<String,Object>)otmsFeign.getCurrentLocation(capacityNo).getData();
+            }catch (Exception e){
+                throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
+            }
+            if(data==null || !"1001".equals(""+data.get("status"))){
+                throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
+            }
+        }
         //非自提,单次校验且全局校验,且车辆不允许无GPS
         int isGPS=amsSaleOrderMapper.isGPS(capacityNo);
         if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
@@ -2268,7 +2304,9 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
                 throw new Exception("该车没有GPS定位信息,请联系销售公司物流部,申请是否可以派车。");
             }
         }
-        pushCarNumberToEas(mapValue);
+        if(!mapValue.containsKey("oYeFlag")) {
+            pushCarNumberToEas(mapValue);
+        }
         //try{
         //    //不为空且为新手机号,则修改电话号码
         //    if(driverTel!=null && !"".equals(driverTel) && !driverTel.equals(tel)){
@@ -3241,7 +3279,7 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
     }
 
     @ApiOperation("定时获取制单日期")
-    @Scheduled(fixedRate = 20 * 60 * 1000)
+    //@Scheduled(fixedRate = 20 * 60 * 1000)
     public void getMakeDateTime() {
         Map<String, Object> Map = new HashMap<>();
         getEasPrimaryIds(Map);

+ 378 - 0
src/main/java/com/steerinfo/dil/service/impl/OyeWarehouseServiceImpl.java

@@ -0,0 +1,378 @@
+package com.steerinfo.dil.service.impl;
+
+import com.steerinfo.dil.feign.*;
+import com.steerinfo.dil.mapper.*;
+import com.steerinfo.dil.model.*;
+import com.steerinfo.dil.service.IOyeWarehouseService;
+import com.steerinfo.dil.util.DataChange;
+import com.steerinfo.dil.util.SaleLogUtil;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.*;
+
+
+@Service
+public class OyeWarehouseServiceImpl implements IOyeWarehouseService {
+
+    @Resource
+    private AmsSaleOrderMapper amsSaleOrderMapper;
+    @Resource
+    private AmsSaleOrderMaterialMapper amsSaleOrderMaterialMapper;
+
+    @Resource
+    private AmsSaleOrderServiceImpl amsSaleOrderService;
+
+
+    @Resource
+    private AmsSaleTrucknoMaterialMapper trucknoMaterialMapper;
+    @Resource
+    TmstruckLoadResult tmstruckLoadResult;
+    @Resource
+    TmstruckWeightResult tmstruckWeightResult;
+    @Resource
+    TmstruckWeightResultMapper tmstruckWeightResultMapper;
+    @Resource
+    TmstruckLoadResultMapper tmstruckLoadResultMapper;
+    @Resource
+    AmsDispatchSaleOrderMapper amsDispatchSaleOrderMapper;
+    @Resource
+    AmsSaleMaterialMapper amsSaleMaterialMapper;
+    @Resource
+    AmsSaleTrucknoMaterialMapper amsSaleTrucknoMaterialMapper;
+    @Resource
+    RmsReceivePlaceMapper rmsReceivePlaceMapper;
+    @Resource
+    JoinFeign joinFeign;
+    @Resource
+    OmstruckOrderMapper omstruckOrderMapper;
+    @Resource
+    OmstruckOrderMaterialMapper omstruckOrderMaterialMapper;
+    @Resource
+    AmsSaleOrderMaterialServiceImpl amsSaleOrderMaterialService;
+    @Resource
+    TmsTruckFeign tmsTruckFeign;
+
+
+    @Resource
+    RmsMaterialMapper rmsMaterialMapper;
+    @Resource
+    TmstrainPleaseApproveResultMapper tmstrainPleaseApproveResultMapper;
+
+    @Resource
+    WmspOutboundResultMaterialMapper wmspOutboundResultMaterialMapper;
+
+    @Resource
+    OtmsFeign otmsFeign;
+
+    @Resource
+    RmsFeign rmsFeign;
+
+    @Resource
+    BmstruckFeign bmstruckFeign;
+
+    @Resource
+    SaleLogUtil saleLogUtil;
+
+
+    @Transactional(rollbackFor = Exception.class)
+    public int addTransPlan(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.findReceiveIdByOye(mapValue.get("receiveName"));
+            if (receiveId == null) {
+                throw new Exception("下单客户不存在!!!或无入库至欧冶库");
+            }
+        }
+        // 是否自提
+        String isSelfMention = (String) mapValue.get("isSelfMention");
+        // 摘要
+        String saleRemark = (String) mapValue.get("saleRemark");
+        if (saleRemark == null) {
+            throw new Exception("片区不能为空");
+        }
+        //判断摘要与客户对应的摘要有没有在库存里
+        Map<String, Object> searchMap = new HashMap<>();
+        searchMap.put("consigneeId",receiveId);
+        searchMap.put("saleRemark",saleRemark);
+        List<BigDecimal> realTimeInventory = amsSaleMaterialMapper.getRealTimeInventory(searchMap);
+        if(realTimeInventory.size() == 0 || realTimeInventory.get(0) == null) {
+            throw new Exception("该客户所在片区无库存");
+        }
+        // 业务员
+        BigDecimal salerId = DataChange.dataToBigDecimal(mapValue.get("salerId"));
+        if (salerId == null || salerId.intValue() == 0) {
+            if(mapValue.get("salerName") == null) {
+                throw new Exception("您输入的业务员为空,请检查后再导入!!");
+            }
+            salerId = amsSaleOrderMapper.findSalerId(mapValue.get("salerName"));
+            if (salerId == null) {
+                throw new Exception("您输入的业务员:" + mapValue.get("salerName") +"不存在!!");
+            }
+        }
+        BigDecimal saleOrderId = amsSaleOrderMapper.selectMaxId();
+        int result = 0;
+        // 销售订单
+        AmsSaleOrder amsSaleOrder = new AmsSaleOrder();
+        amsSaleOrder.setReceiveId(receiveId);
+        amsSaleOrder.setSaleRemark(saleRemark);
+        amsSaleOrder.setShipperId(shipperId);
+        amsSaleOrder.setSaleOrderIsselfMention(isSelfMention);
+        amsSaleOrder.setSaleOrderId(saleOrderId);
+        amsSaleOrder.setSalerId(salerId);
+
+        // 设置钢材订单
+        amsSaleOrder.setSaleType(new BigDecimal(50));
+        amsSaleOrder.setSaleNumber(DataChange.generateEightDigitsNumber("WOYDD",saleOrderId.intValue(),"-"));
+        amsSaleOrder.setInsertTime(new Date());
+        amsSaleOrder.setInsertUpdateRemark("新增欧冶转运计划");
+        amsSaleOrder.setInsertUsername("物流");
+        amsSaleOrder.setUpdateTime(new Date());
+        amsSaleOrder.setDeleted(new BigDecimal(0));
+        amsSaleOrder.setSaleOrderStatus(new BigDecimal(0));
+        amsSaleOrder.setBusinessDate(new Date());
+        // 销售订单物资表
+        AmsSaleMaterial amsSaleMaterial = new AmsSaleMaterial();
+        // 车序号物资表
+        AmsSaleTrucknoMaterial amsSaleTrucknoMaterial = new AmsSaleTrucknoMaterial();
+        // 遍历每一行
+        for (Map<String, Object> map : mapList) {
+            if(!getRealTimeInfo(map)) {
+                throw new Exception("超出实时库存数量,请调整后再次输入");
+            }
+            /*
+             车序号表
+             */
+            // 得到车序号
+            BigDecimal truckNo = DataChange.dataToBigDecimal(map.get("cxh"));
+            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("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 (shippingAddressId == null) {
+                        throw new Exception("您输入的:" + province + district + town + "地址不存在!!");
+                    }
+                }
+                // 车号备注
+                String truckRemark = (String) (map.get("truckRemark"));
+                String place = (String) (map.get("place"));
+                if (place != null && !"null".equals(place)) {
+                    List<Map<String, Object>> placeIdList = amsSaleOrderMaterialMapper.getPlaceId(place,shippingAddressId);
+                    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"));
+                    }
+                }
+                if (amsSaleOrderMaterial.getSaleShippingAddressId() != null && isSelfMention.equals("否")) {
+                    // 自动匹配承运商
+                    List<Map<String, Object>> carrierList = amsSaleOrderService.getCarrierByAddress(amsSaleOrderMaterial.getSaleShippingAddressId());
+                    BigDecimal carrierCount = null;
+                    if(place != null && !"null".equals(place)){
+                        carrierCount = amsSaleOrderMapper.getMoreCarrier(place);
+                    }
+                    //根据收货地址id查询备注,判断是否需要匹配承运商
+                    String addressRemark = amsSaleOrderMaterialMapper.getAddressRemark(shippingAddressId);
+                    // 单一承运商才进行匹配
+                    if (carrierList != null && carrierList.size() == 1 && carrierList.get(0) != null  && carrierCount.intValue() == 0 && addressRemark == null) {
+                        List<Map<String, Object>> list = new ArrayList<>();
+                        Map<String, Object> map1 = carrierList.get(0);
+                        // 传入车序号主键和承运商id
+                        map1.put("saleOrderMaterialId", saleOrderMaterialId);
+                        list.add(map1);
+                        amsSaleOrderService.dispatchToCarrier(list);
+                    }
+                }
+                if (isSelfMention.equals("是")) {
+                    // 根据收货单位id查询出收货单位名称
+                    String consigneeName = amsSaleOrderMapper.selectConsigneeName(receiveId);
+                    // 根据收货单位名称查询承运商id
+                    BigDecimal carrierId = amsSaleOrderMapper.selectCarrierId(consigneeName);
+                    List<Map<String, Object>> list = new ArrayList<>();
+                    Map<String,Object> map1 = new HashMap<>();
+                    // 传入车序号主键和承运商id
+                    if (carrierId != null) {
+                        map1.put("saleOrderMaterialId", saleOrderMaterialId);
+                        map1.put("carrierId", carrierId);
+                        list.add(map1);
+                        amsSaleOrderService.dispatchToCarrier(list);
+                    }
+                }
+                // 收货方姓名
+                String consigneeName = String.valueOf(map.get("saleOrderConsignee"));
+                // 收货方电话
+                String consigneeTel = String.valueOf(map.get("saleOrderConsigneeTel"));
+                amsSaleOrderMaterial.setSaleOrderMaterialId(saleOrderMaterialId);
+                amsSaleOrderMaterial.setSaleDateOfReceipt(new Date());
+                amsSaleOrderMaterial.setSaleOrderId(saleOrderId);
+                amsSaleOrderMaterial.setTruckRemark(truckRemark);
+                amsSaleOrderMaterial.setSaleOrderMaterialTruckNo(truckNo);
+                if(map.get("orderNo") != null) {
+                    amsSaleOrderMaterial.setPreviousOrderNumber((String) map.get("orderNo"));
+                }
+                if (consigneeName != null && !consigneeName.equals("null")) {
+                    amsSaleOrderMaterial.setSaleOrderConsignee(consigneeName);
+                }
+                if (consigneeTel != null && !consigneeTel.equals("null")) {
+                    amsSaleOrderMaterial.setSaleOrderConsigneeTel(consigneeTel);
+                }
+                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"));
+            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);
+            if (materialCount == null) {
+                materialCount = new Integer(0);
+            }
+            rmsMaterial.setMaterialCount(new BigDecimal(materialCount + 1));
+            rmsMaterialMapper.updateByPrimaryKeySelective(rmsMaterial);
+            // 物资件数
+            BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
+            // 物资名称
+            Object materialName = map.get("materialName");
+            // 钢材米数
+            BigDecimal steelMeters = DataChange.dataToBigDecimal(map.get("steelMeters"));
+            // 判断物资是否是盘螺或盘元/盘圆
+            if (materialName != null && (materialName.toString().contains("盘螺") || materialName.toString().contains("盘元") || materialName.toString().contains("盘圆"))) {
+                amsSaleMaterial.setSteelMeter(null);
+            }
+            else {
+                amsSaleMaterial.setSteelMeter(steelMeters);
+            }
+            // 是否磅重销售(0:磅重;1:理重)
+            BigDecimal isPoundSale = DataChange.dataToBigDecimal(map.get("isPound"));
+
+            BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
+            //if (inventoryId == null || inventoryId.intValue() == 0) {
+            //    if (map.get("inboundWarehouseName") == null || "".equals(map.get("inboundWarehouseName"))) {
+            //        throw new Exception("库房名称为必填");
+            //    }
+            //    Map<Object, Object> excelMap = new HashMap<>();
+            //    excelMap.put("materialId",materialId);
+            //    excelMap.put("inboundWarehouseName",map.get("inboundWarehouseName"));
+            //    excelMap.put("meter",steelMeters);
+            //    excelMap.put("singleWeight",map.get())
+            //}
+            // 销售订单物资表主键
+            BigDecimal saleMaterialId = amsSaleMaterialMapper.selectMaxId();
+            amsSaleMaterial.setSaleMaterialId(saleMaterialId);
+            //amsSaleMaterial.setMaterialWeight();
+            amsSaleMaterial.setSaleOrderId(saleOrderId);
+            amsSaleMaterial.setMaterialId(materialId);
+            amsSaleMaterial.setMaterialNumber(materialNumber);
+            amsSaleMaterial.setMaterialPlanNumber(materialNumber);
+            amsSaleMaterial.setSaleWarehouse(inventoryId + "");
+            amsSaleMaterial.setSaleNo(amsSaleOrder.getSaleNumber());
+            try {
+                amsSaleMaterial.setTransferInOfWarehouse(saleRemark);
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+            amsSaleMaterial.setInsertTime(new Date());
+            amsSaleMaterial.setUpdateTime(new Date());
+            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 saleOrderId.intValue();
+
+    }
+
+    public List<Map<String, Object>> getTransPlan(Map<String, Object> mapValue) {
+        return amsSaleOrderMapper.getTransPlan(mapValue);
+    }
+
+    public int approveTransPlan(Map<String, Object> map) {
+        List<Map<String,Object>> mapList = (List<Map<String,Object>>) map.get("mapList");
+        int i = 0 ;
+        for (Map<String,Object> approveMap : mapList) {
+            i += amsSaleOrderMapper.approveTransPlan(approveMap);
+        }
+        return i;
+    }
+
+    //根据销售订单子表ID,判断待出库的一个数量
+    public synchronized Boolean getRealTimeInfo(Map<String,Object> map) throws Exception {
+        BigDecimal inventoryId = DataChange.dataToBigDecimal(map.get("inventoryId"));
+        BigDecimal materialNumber = DataChange.dataToBigDecimal(map.get("orderPlanWeight"));
+        //根据库存ID,统计所有未装但已制订计划的正常单据
+        BigDecimal unloadMaterialNumber = amsSaleMaterialMapper.getRealTimeUnloadNumber(inventoryId);
+        BigDecimal realTimeMaterialNumber = amsSaleMaterialMapper.getRealTimeMaterialNumber(inventoryId);
+        if (realTimeMaterialNumber.intValue() == 0) {
+            throw new Exception("该实时库存无数量,无法下单");
+        }
+        if (realTimeMaterialNumber.subtract(unloadMaterialNumber).compareTo(materialNumber) >= 0) {
+            return true;
+        }
+        return false;
+    }
+
+}

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

@@ -931,4 +931,57 @@
     WHERE ASM.SALE_MATERIAL_ID = #{saleMaterialId}
     AND ASM.DELETED IS NULL
   </select>
+    <select id="getRealTimeInventory" resultType="java.math.BigDecimal">
+      SELECT ORI.SINGLE_WEIGHT "singleWeight",
+      ORI.METER    "meter",
+      ORI.MATERIAL_ID  "materialId",
+      ORI.MATERIAL_NUMBER  "materialNumber",
+      ORI.THEORY_WEIGHT    "theoryWeight",
+      ORI.NET_WEIGHT       "netWeight",
+      ORI.SALE_AREA        "saleArea",
+      ORI.INVENTORY_ID     "inventoryId",
+      ORI.INBOUND_WAREHOUSE "inboundWarehouse",
+      ORI.INBOUND_AREA     "inboundArea",
+      ORI.INSERT_TIME      "insertTime"
+      FROM OYE_REALTIME_INVENTORY ORI
+      <where>
+      <if test="saleArea != null and saleArea != ''">
+        AND ORI.SALE_AREA LIKE '%${saleArea}%'
+      </if>
+      <if test="inboundWarehouse != null and inboundWarehouse != ''">
+        AND ORI.INBOUND_WAREHOUSE LIKE '%${inboundWarehouse}%'
+      </if>
+      <if test="inboundArea != null and inboundArea != ''">
+        AND ORI.inbound_Area LIKE '%${inboundArea}%'
+      </if>
+      <if test="materialId != null and materialId != ''">
+        AND ORI.MATERIAL_ID = #{materialId}
+      </if>
+      <if test="meter != null and meter != ''">
+        AND ORI.meter = #{meter}
+      </if>
+      <if test="saleRemark != null and saleRemark != ''">
+        AND ORI.SALE_AREA = #{saleRemark}
+      </if>
+      <if test="consigneeId != null and consigneeId != ''">
+        AND ORI.CONSIGNEE_ID = #{consigneeId}
+      </if>
+      </where>
+    </select>
+    <select id="getRealTimeUnloadNumber" resultType="java.math.BigDecimal" parameterType="decimal">
+      SELECT NVL(SUM(ASM.MATERIAL_NUMBER),0) FROM AMS_SALE_MATERIAL ASM
+      LEFT JOIN AMS_SALE_ORDER ASO ON ASO.SALE_ORDER_ID = ASM.SALE_ORDER_ID
+      WHERE ASO.DELETED = 0
+      AND ASM.SALE_MATERIAL_ID IS NOT NULL
+      AND ASM.DELETED IS NULL
+      AND ASM.SALE_WAREHOUSE = to_char(#{inventoryId})
+      AND ASO.SALE_TYPE = 50
+      AND ASM.SALE_MATERIAL_ID NOT IN (
+          SELECT OOR.SALE_MATERIAL_ID FROM OYE_OUTBOUND_RESULT OOR WHERE OOR.INVENTORY_ID = #{inventoryId}
+      )
+    </select>
+  <select id="getRealTimeMaterialNumber" resultType="java.math.BigDecimal" parameterType="decimal">
+    SELECT NVL(SUM(ORI.MATERIAL_NUMBER),0) FROM OYE_REALTIME_INVENTORY ORI
+    WHERE ORI.INVENTORY_ID = #{inventoryId}
+  </select>
 </mapper>

+ 203 - 0
src/main/resources/com/steerinfo/dil/mapper/AmsSaleOrderMapper.xml

@@ -1728,6 +1728,7 @@
     WHERE a_s_order.SALE_ORDER_STATUS = 0
     AND a_s_order.DELETED = 0
     AND ASM.DELETED IS NULL
+    AND a_s_order.SALE_TYPE = 1
     <if test="con != null">
       and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
     </if>
@@ -1854,6 +1855,7 @@
     where a_s_order.SALE_ORDER_STATUS=1
     and a_s_order.DELETED = 0
     AND ASM.DELETED IS NULL
+    AND a_s_order.SALE_TYPE = 1
     <if test="con != null">
       and (instr(r_consignee.CONSIGNEE_COMPANY_NAME, #{con}) > 0 or instr(a_s_order.SALE_NUMBER, #{con}) > 0)
     </if>
@@ -2139,6 +2141,7 @@
     and a_s_order.CLOSE_STATUS is null
     and ASM.DELETED IS NULL
     and ASM.SALE_MATERIAL_ID IS NOT NULL
+    AND a_s_order.SALE_TYPE = 1
     <if test="con != null">
       and r_consignee.CONSIGNEE_COMPANY_NAME||a_s_order.SALE_NUMBER||rm.material_name||RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL like #{con}
     </if>
@@ -5050,5 +5053,205 @@
     and oo.ORDER_STATUS = 4
     and oo.order_type = 2)
   </update>
+  <select id="findReceiveIdByOye" resultType="java.math.BigDecimal">
+    SELECT RC.CONSIGNEE_ID AS "receiveId"
+    FROM RMS_CONSIGNEE RC
+    LEFT JOIN OYE_REALTIME_INVENTORY ORI
+    ON ORI.CONSIGNEE_ID = RC.CONSIGNEE_ID
+    WHERE RC.CONSIGNEE_COMPANY_NAME = #{receiveName}
+      AND RC.CONSIGNEE_CODE IS NOT NULL
+      AND RC.EAS_CONSIGNEE_ID IS NOT NULL
+      AND ORI.CONSIGNEE_ID IS NOT NULL
+      AND RC.DELETED = 0
+  </select>
+  <select id="getTransPlan" resultType="java.util.Map">
+    select * 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",
+    a_s_order.SALE_ORDER_ISSELF_MENTION "saleOrderIsselfMention",
+    a_s_order.SALE_REMARK "saleRemark",
+    a_s_order.INSERT_TIME "insertTime",
+    RM.MATERIAL_NAME "materialName",
+    RM.MATERIAL_SPECIFICATION "materialSpecification",
+    RM.MATERIAL_MODEL "materialModel",
+    ASM.MATERIAL_NUMBER "materialNumber",
+    RM.MATERIAL_SPECIFICATION || RM.MATERIAL_MODEL "specificationModel",
+    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",
+    ASOM.SALE_ORDER_MATERIAL_ID AS "saleOrderMaterialId",
+    decode(ASM.IS_POUND_SALE, 0, '是' , '否') "isPoundSale",
+    CASE WHEN
+        ASM.IS_POUND_SALE = 1
+        THEN ORI.SINGLE_WEIGHT * ASM.MATERIAL_NUMBER
+        ELSE null
+        END "materialWeight",
+    ASOM.TRUCK_REMARK "trucRemark",
+    ASOM.SALE_ORDER_CONSIGNEE_TEL "consigneeTel",
+    ASOM.SALE_ORDER_MATERIAL_TRUCK_NO "truckNo",
+    ORI.INBOUND_WAREHOUSE   "inventoryWarehouse",
+    ORI.MATERIAL_NUMBER "inventoryMaterialNumber",
+    ORI.THEORY_WEIGHT   "inventoryTheoryWeight",
+    ORI.SINGLE_WEIGHT   "singleWeight",
+    ORI.METER           "meter"
+    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 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_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
+    LEFT JOIN RMS_SALER R_SALER
+    ON R_SALER.SALER_ID = a_s_order.SALER_ID
+    LEFT JOIN OYE_REALTIME_INVENTORY ORI
+    ON ORI.INVENTORY_ID = ASM.SALE_WAREHOUSE
+    WHERE a_s_order.SALE_ORDER_STATUS = #{orderStatus}
+    AND a_s_order.DELETED = 0
+    AND ASM.DELETED IS NULL
+    AND a_s_order.SALE_TYPE = 50
+    <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="consigneeSsoId != null" >
+      and r_consignee.CONSIGNEE_SSO_ID = #{consigneeSsoId}
+    </if>
+    <if test="saler != null " >
+      and  R_SALER.INSERT_UPDATE_REMARK like  #{saler}
+    </if>
+    <if test="consigneeName != null">
+      and r_consignee.CONSIGNEE_COMPANY_NAME = #{consigneeName}
+    </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>
+    ORDER BY a_s_order.SALE_ORDER_ID DESC ,ASOM.SALE_ORDER_MATERIAL_TRUCK_NO asc
+    )
+    <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="specificationModel != null">
+        and
+        <foreach collection="specificationModel" item="item" open="(" separator="or" close=")">
+          "specificationModel" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="materialModel != null">
+        and
+        <foreach collection="materialModel" item="item" open="(" separator="or" close=")">
+          "materialModel" 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="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="materialTheoreticalWeight != null">
+        and
+        <foreach collection="materialTheoreticalWeight" item="item" open="(" separator="or" close=")">
+          "materialTheoreticalWeight" like '%${item}%'
+        </foreach>
+      </if>
+      <if test="saleOrderMaterialNumber != null">
+        and
+        <foreach collection="saleOrderMaterialNumber" item="item" open="(" separator="or" close=")">
+          "saleOrderMaterialNumber" 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="saleOrderIsselfMention != null">
+        and
+        <foreach collection="saleOrderIsselfMention" item="item" open="(" separator="or" close=")">
+          "saleOrderIsselfMention" 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>
+  <update id="approveTransPlan" parameterType="java.util.Map">
+    UPDATE AMS_SALE_ORDER ASO
+    SET ASO.SALE_ORDER_STATUS = #{orderStatus},
+        ASO.DELETED = #{deleted}
+    <if test="remark != null">
+      ,ASO.INSERT_UPDATE_REMARK = #{remark}
+    </if>
+    WHERE ASO.SALE_ORDER_ID = #{saleOrderId}
+  </update>
+  <select id="selectPlaceRemark" resultType="java.lang.String" parameterType="java.lang.String">
+    SELECT RRP.INSERT_UPDATE_REMARK FROM RMS_RECEIVE_PLACE RRP
+    WHERE RRP.ADDRESS_DELIVERY_ADDRESS = #{place}
+  </select>
+  <select id="getPlaceAddress" resultType="java.lang.String" parameterType="decimal">
+    SELECT RRP.ADDRESS_DELIVERY_ADDRESS "place"
+    FROM AMS_SALE_ORDER_MATERIAL ASOM
+    LEFT JOIN RMS_RECEIVE_PLACE RRP
+    ON RRP.PLACE_ID = ASOM.SALE_SHIPPING_ADDRESS_ID
+    WHERE ASOM.SALE_ORDER_MATERIAL_ID = #{saleOrderMaterialId}
+  </select>
+
 
 </mapper>

+ 12 - 0
src/main/resources/com/steerinfo/dil/mapper/RmsReceivePlaceMapper.xml

@@ -354,5 +354,17 @@
           AND RRP.ADDRESS_ID = #{addressId}
         FETCH NEXT 1 ROW ONLY
     </select>
+    <select id="getOyeWarehouse" resultType="java.util.Map">
+        SELECT RRA.ADDRESS_PROVINCE || RRA.ADDRESS_DISTRICT || RRA.ADDRESS_TOWN "warehouseArea",
+               RRP.ADDRESS_DELIVERY_ADDRESS "warehouseName",
+               RRP.INSERT_UPDATE_REMARK "remark"
+               FROM RMS_RECEIVE_ADDRESS RRA
+        LEFT JOIN RMS_RECEIVE_PLACE RRP ON RRP.ADDRESS_ID = RRA.ADDRESS_ID
+        WHERE RRA.INSERT_UPDATE_REMARK = '厂外库'
+    </select>
+    <select id="getAddressType" resultType="java.lang.String">
+        SELECT RRA.INSERT_UPDATE_REMARK FROM RMS_RECEIVE_ADDRESS RRA
+        WHERE RRA.ADDRESS_ID = #{shippingAddressId}
+    </select>
 
 </mapper>

+ 1 - 1
src/main/resources/log4j.properties

@@ -1,5 +1,5 @@
 ## LOG4J\u914D\u7F6E
-log4j.rootCategory=INFO,file,RUNNING,errorfile
+log4j.rootCategory=INFO,file,RUNNING,errorfile,stdout
 ## \u63A7\u5236\u53F0\u8F93\u51FA
 log4j.appender.stdout=org.apache.log4j.ConsoleAppender
 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout