|  | @@ -1113,6 +1113,31 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 | 
											
												
													
														|  |          return  result;
 |  |          return  result;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 钢材批量派车或改车
 | 
											
												
													
														|  | 
 |  | +     * @param mapList
 | 
											
												
													
														|  | 
 |  | +     * @return
 | 
											
												
													
														|  | 
 |  | +     * @throws Exception
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  | 
 |  | +    @Transactional(rollbackFor = Exception.class)
 | 
											
												
													
														|  | 
 |  | +    public int batchUpdateCapacity(List<Map<String, Object>> mapList) throws Exception {
 | 
											
												
													
														|  | 
 |  | +        //先派车
 | 
											
												
													
														|  | 
 |  | +        for(Map<String, Object> item:mapList){
 | 
											
												
													
														|  | 
 |  | +            String capacityIds=""+item.get("capacityIds");
 | 
											
												
													
														|  | 
 |  | +            if(capacityIds.equals("0")){
 | 
											
												
													
														|  | 
 |  | +                //钢材派车
 | 
											
												
													
														|  | 
 |  | +                dispatchSteelOrderNotPush(item);
 | 
											
												
													
														|  | 
 |  | +            }else{
 | 
											
												
													
														|  | 
 |  | +                //钢材改车
 | 
											
												
													
														|  | 
 |  | +                updateSteelOrderNotPush(item);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //再上传金蝶
 | 
											
												
													
														|  | 
 |  | +        batchPushCarNumberToEas(mapList);
 | 
											
												
													
														|  | 
 |  | +        return 0;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      public int continueSteelOrder(List<Map<String, Object>> mapList) throws Exception {
 |  |      public int continueSteelOrder(List<Map<String, Object>> mapList) throws Exception {
 | 
											
												
													
														|  |          int result = 0;
 |  |          int result = 0;
 | 
											
										
											
												
													
														|  | @@ -3047,4 +3072,409 @@ public class AmsSaleOrderServiceImpl implements IAmsSaleOrderService {
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          return 1;
 |  |          return 1;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 批量推送
 | 
											
												
													
														|  | 
 |  | +     * @param mapList
 | 
											
												
													
														|  | 
 |  | +     * @return
 | 
											
												
													
														|  | 
 |  | +     * @throws Exception
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    @Override
 | 
											
												
													
														|  | 
 |  | +    public int batchPushCarNumberToEas(List<Map<String, Object>> mapList) throws Exception {
 | 
											
												
													
														|  | 
 |  | +        Map<String,Object> input = joinFeign.findCarNumberByOrderList(mapList);
 | 
											
												
													
														|  | 
 |  | +        Map<String,Object> totalMap = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        totalMap.putAll(easCapacityTestUtil.getTotalMap());
 | 
											
												
													
														|  | 
 |  | +        totalMap.put("input",input);
 | 
											
												
													
														|  | 
 |  | +        Map<String,Object> s = joinFeign.pushCarNumberToEas(totalMap);
 | 
											
												
													
														|  | 
 |  | +        System.out.println(totalMap);
 | 
											
												
													
														|  | 
 |  | +        String json = JSONUtils.toJSONString(totalMap);
 | 
											
												
													
														|  | 
 |  | +        System.out.println(json);
 | 
											
												
													
														|  | 
 |  | +        totalMap.put("output",s);
 | 
											
												
													
														|  | 
 |  | +        try {
 | 
											
												
													
														|  | 
 |  | +            newFileTool.newFile("pushCarNumberToEas:"+totalMap,"金蝶通讯报文");
 | 
											
												
													
														|  | 
 |  | +        }catch (Exception e){
 | 
											
												
													
														|  | 
 |  | +            e.printStackTrace();
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        if (s == null || s.size() == 0) {
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("登录金蝶失败!请重试派车!");
 | 
											
												
													
														|  | 
 |  | +        }else{
 | 
											
												
													
														|  | 
 |  | +            try{
 | 
											
												
													
														|  | 
 |  | +                JSONObject result = new JSONObject(s);
 | 
											
												
													
														|  | 
 |  | +                //如果status不为1,抛出异常
 | 
											
												
													
														|  | 
 |  | +                if(!result.getJSONObject("res").getString("status").equals("1")){
 | 
											
												
													
														|  | 
 |  | +                    throw new Exception("上传金蝶失败!请重试派车:"+result.getJSONObject("requestException").getString("message"));
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +            }catch (Exception e){
 | 
											
												
													
														|  | 
 |  | +                e.printStackTrace();
 | 
											
												
													
														|  | 
 |  | +                //只抛出自定义异常
 | 
											
												
													
														|  | 
 |  | +                if(e.getMessage().contains("Exception")){
 | 
											
												
													
														|  | 
 |  | +                    throw new Exception("上传金蝶失败!请重试派车!");
 | 
											
												
													
														|  | 
 |  | +                }else{
 | 
											
												
													
														|  | 
 |  | +                    throw new Exception(e.getMessage());
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        return 1;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 钢材派车,不上传金蝶
 | 
											
												
													
														|  | 
 |  | +     * @param map
 | 
											
												
													
														|  | 
 |  | +     * @return
 | 
											
												
													
														|  | 
 |  | +     * @throws Exception
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    private int dispatchSteelOrderNotPush(Map<String, Object> map) throws Exception {
 | 
											
												
													
														|  | 
 |  | +        Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
 | 
											
												
													
														|  | 
 |  | +        Integer saleStatus = amsSaleOrderMapper.findStatus(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +        String selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +        //如果这个车序号下面有运单,则证明已经派了
 | 
											
												
													
														|  | 
 |  | +        Map<String,Object> orderMap = amsSaleOrderMapper.getSteelOrderMap(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +        //判断该车序号对应的分录是否全部关闭
 | 
											
												
													
														|  | 
 |  | +        Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(map.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +        if(flCount == 0) {
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该运单下所有分录被关闭,无法派车");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        if (orderMap != null) {
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该订单已派发,无法重复派车");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        if (saleStatus == 1) {
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("订单未审核,无法派车!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        int result = 0;
 | 
											
												
													
														|  | 
 |  | +        //得到此次是否校验GPS
 | 
											
												
													
														|  | 
 |  | +        boolean onceCheck = true;
 | 
											
												
													
														|  | 
 |  | +        try{
 | 
											
												
													
														|  | 
 |  | +            onceCheck = (boolean) map.get("isCheckGPS");
 | 
											
												
													
														|  | 
 |  | +        }catch (Exception e){
 | 
											
												
													
														|  | 
 |  | +            //取值失败不处理,默认校验GPS
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 得到车牌号
 | 
											
												
													
														|  | 
 |  | +        String capacityNumber = (String) map.get("capacityNumber");
 | 
											
												
													
														|  | 
 |  | +        // 得到运力id
 | 
											
												
													
														|  | 
 |  | +        BigDecimal capacityId = amsSaleOrderMaterialMapper.getCapacityId(capacityNumber);
 | 
											
												
													
														|  | 
 |  | +        //校验该车是否存在手机号
 | 
											
												
													
														|  | 
 |  | +        String tel=omstruckOrderMapper.getTelByCapacityId(capacityId);//数据库的手机号
 | 
											
												
													
														|  | 
 |  | +        String driverTel = (String) map.get("driverTel");//填写的手机号
 | 
											
												
													
														|  | 
 |  | +        if(tel==null || "".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //查询车牌号是否是黑名单
 | 
											
												
													
														|  | 
 |  | +        if(amsSaleOrderMapper.isBlackList(capacityNumber)>0){
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //非自提,单次校验且全局校验,且车不允许无GPS
 | 
											
												
													
														|  | 
 |  | +        int isGPS=amsSaleOrderMapper.isGPS(capacityNumber);
 | 
											
												
													
														|  | 
 |  | +        if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
 | 
											
												
													
														|  | 
 |  | +            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定位信息,请联系销售公司物流部,申请是否可以派车。");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 得到车序号表主键
 | 
											
												
													
														|  | 
 |  | +        BigDecimal saleOrderMaterialId = DataChange.dataToBigDecimal(map.get("saleOrderMaterialId"));
 | 
											
												
													
														|  | 
 |  | +        // 得到承运商
 | 
											
												
													
														|  | 
 |  | +        BigDecimal carrierId = DataChange.dataToBigDecimal(map.get("carrierId"));
 | 
											
												
													
														|  | 
 |  | +        // 查询到车序号的单价
 | 
											
												
													
														|  | 
 |  | +        BigDecimal priceId = amsSaleOrderMapper.getOrderPrice(map);
 | 
											
												
													
														|  | 
 |  | +        // 得到详细地址id
 | 
											
												
													
														|  | 
 |  | +        BigDecimal placeId = amsSaleOrderMapper.getPlaceId(saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +        // 如果已经设置单价则不覆盖,详细地址匹配不到单价,则匹配省市县内最高的一条单价(只给非自提的进行匹配)
 | 
											
												
													
														|  | 
 |  | +        if (priceId == null && placeId != null && selfMention.equals("否")) {
 | 
											
												
													
														|  | 
 |  | +            priceId = amsSaleOrderMapper.getPriceIdByPlaceId(placeId);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 运输线路id
 | 
											
												
													
														|  | 
 |  | +        BigDecimal lineId = DataChange.dataToBigDecimal(map.get("lineId"));
 | 
											
												
													
														|  | 
 |  | +        if(lineId==null || lineId.compareTo(BigDecimal.ZERO)==0){
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("线路异常!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        BigDecimal isSteel = new BigDecimal(1);
 | 
											
												
													
														|  | 
 |  | +        if (capacityId == null) {
 | 
											
												
													
														|  | 
 |  | +            return 0;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        List<Map<String, Object>> materialList = amsSaleOrderMaterialMapper.getMaterial(saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +        /*
 | 
											
												
													
														|  | 
 |  | +         定向派单表
 | 
											
												
													
														|  | 
 |  | +         */
 | 
											
												
													
														|  | 
 |  | +        // 通过车序号主键确认定向派单是否已存在
 | 
											
												
													
														|  | 
 |  | +        BigDecimal dispatchId0 = amsDispatchSaleOrderMapper.isDispatchExist(saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +        if (dispatchId0 == null || dispatchId0.toString().length() == 0) {
 | 
											
												
													
														|  | 
 |  | +            AmsDispatchSaleOrder amsDispatchSaleOrder = new AmsDispatchSaleOrder();
 | 
											
												
													
														|  | 
 |  | +            // 主键
 | 
											
												
													
														|  | 
 |  | +            BigDecimal dispatchId = amsDispatchSaleOrderMapper.selectOtherId();
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setDispatchId(dispatchId);
 | 
											
												
													
														|  | 
 |  | +            // 车序号表id
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setSaleOrderMaterialId(saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +            // 承运商id
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setCarrierId(carrierId);
 | 
											
												
													
														|  | 
 |  | +            // 派单时间和成交时间
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setDispatchTime(new Date());
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setDispatchDealTime(new Date());
 | 
											
												
													
														|  | 
 |  | +            // 成交类型
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setDispatchType(new BigDecimal(2));
 | 
											
												
													
														|  | 
 |  | +            // 车序号状态
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setDispatchStatus(new BigDecimal(2));
 | 
											
												
													
														|  | 
 |  | +            result += amsDispatchSaleOrderMapper.insertSelective(amsDispatchSaleOrder);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 如果已经匹配过承运商或者给某个承运商授权过,则派车时做修改承运商操作
 | 
											
												
													
														|  | 
 |  | +        else {
 | 
											
												
													
														|  | 
 |  | +            AmsDispatchSaleOrder amsDispatchSaleOrder = amsDispatchSaleOrderMapper.selectByPrimaryKey(dispatchId0);
 | 
											
												
													
														|  | 
 |  | +            amsDispatchSaleOrder.setCarrierId(carrierId);
 | 
											
												
													
														|  | 
 |  | +            result += amsDispatchSaleOrderMapper.updateByPrimaryKeySelective(amsDispatchSaleOrder);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        /*
 | 
											
												
													
														|  | 
 |  | +         运输订单
 | 
											
												
													
														|  | 
 |  | +         */
 | 
											
												
													
														|  | 
 |  | +        OmstruckOrder omstruckOrder = new OmstruckOrder();
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> map1 = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        map1.put("orderType", new BigDecimal(2));
 | 
											
												
													
														|  | 
 |  | +        map1.put("orderPlanId", saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +        List<OmstruckOrder> omstruckOrders = omstruckOrderMapper.selectByParameters(map1);
 | 
											
												
													
														|  | 
 |  | +        if (omstruckOrders == null || omstruckOrders.size() == 0) {
 | 
											
												
													
														|  | 
 |  | +            // 运输订单主键
 | 
											
												
													
														|  | 
 |  | +            BigDecimal orderId = omstruckOrderMapper.selectMaxId();
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderId(orderId);
 | 
											
												
													
														|  | 
 |  | +            // 车序号主键
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderPlanId(saleOrderMaterialId);
 | 
											
												
													
														|  | 
 |  | +            //添加承运商ID 和 运价ID
 | 
											
												
													
														|  | 
 |  | +//            Object priceId = map.get("priceId");
 | 
											
												
													
														|  | 
 |  | +            if (priceId != null) {
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setPriceId(priceId);
 | 
											
												
													
														|  | 
 |  | +            } else {
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setPriceId(new BigDecimal(0));
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setCarrierId(carrierId);
 | 
											
												
													
														|  | 
 |  | +            // 运输订单号
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", orderId.intValue()));
 | 
											
												
													
														|  | 
 |  | +            // 运力id
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setCapacityId(capacityId);
 | 
											
												
													
														|  | 
 |  | +            // 承运商
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setCarrierId(carrierId);
 | 
											
												
													
														|  | 
 |  | +            // 是否可作业
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setCanWork(new BigDecimal(0));
 | 
											
												
													
														|  | 
 |  | +            // 下发时间
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderIssueTime(new Date());
 | 
											
												
													
														|  | 
 |  | +            // 运单状态
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderStatus(new BigDecimal(4));
 | 
											
												
													
														|  | 
 |  | +            // 司机电话
 | 
											
												
													
														|  | 
 |  | +            if(tel != null && !"".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setDriverTel(tel);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            BigDecimal status;
 | 
											
												
													
														|  | 
 |  | +            // 钢材
 | 
											
												
													
														|  | 
 |  | +            if (isSteel != null && isSteel.intValue() == 1) {
 | 
											
												
													
														|  | 
 |  | +                status = new BigDecimal(1);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            // 非钢材(危化品,焦炭,副产品)
 | 
											
												
													
														|  | 
 |  | +            else {
 | 
											
												
													
														|  | 
 |  | +                status = new BigDecimal(2);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            // 订单类型
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setOrderType(status);
 | 
											
												
													
														|  | 
 |  | +            // 运输线路id
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setLineId(lineId);
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setInsertTime(new Date());
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder.setInsertUsername("");
 | 
											
												
													
														|  | 
 |  | +            result += omstruckOrderMapper.insertSelective(omstruckOrder);
 | 
											
												
													
														|  | 
 |  | +            //插入日志
 | 
											
												
													
														|  | 
 |  | +            saleLogUtil.logOrder(orderId,"普通派单",map,SaleLogUtil.INSERT);
 | 
											
												
													
														|  | 
 |  | +        } else {
 | 
											
												
													
														|  | 
 |  | +            omstruckOrder = omstruckOrders.get(0);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        for (Map<String, Object> materialMap : materialList) {
 | 
											
												
													
														|  | 
 |  | +            BigDecimal materialId = (BigDecimal) materialMap.get("materialId");
 | 
											
												
													
														|  | 
 |  | +            BigDecimal materialWeight = (BigDecimal) materialMap.get("materialWeight");
 | 
											
												
													
														|  | 
 |  | +            BigDecimal materialNumber = (BigDecimal) materialMap.get("materialNumber");
 | 
											
												
													
														|  | 
 |  | +            BigDecimal saleMaterialId = (BigDecimal) materialMap.get("saleMaterialId");
 | 
											
												
													
														|  | 
 |  | +            /*
 | 
											
												
													
														|  | 
 |  | +            运输订单物资子表
 | 
											
												
													
														|  | 
 |  | +            */
 | 
											
												
													
														|  | 
 |  | +            OmstruckOrderMaterial omstruckOrderMaterial = new OmstruckOrderMaterial();
 | 
											
												
													
														|  | 
 |  | +            // 主键
 | 
											
												
													
														|  | 
 |  | +            BigDecimal orderMaterialId = omstruckOrderMaterialMapper.selectMaxId();
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setOrderMaterialId(orderMaterialId);
 | 
											
												
													
														|  | 
 |  | +            // 运输订单id
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setOrderId(omstruckOrder.getOrderId());
 | 
											
												
													
														|  | 
 |  | +            // 物资id
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setMaterialId(materialId);
 | 
											
												
													
														|  | 
 |  | +            // 物资重量
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setOrderMaterialWeight(materialWeight);
 | 
											
												
													
														|  | 
 |  | +            // 物资件数
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setOrderMaterialNumber(materialNumber);
 | 
											
												
													
														|  | 
 |  | +            omstruckOrderMaterial.setSaleMaterialId(saleMaterialId);
 | 
											
												
													
														|  | 
 |  | +            // 新增运输订单子表
 | 
											
												
													
														|  | 
 |  | +            result += omstruckOrderMaterialMapper.insertSelective(omstruckOrderMaterial);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 调用websocket
 | 
											
												
													
														|  | 
 |  | +        Map<String, Object> orderIdMap = new HashMap<>();
 | 
											
												
													
														|  | 
 |  | +        orderIdMap.put("orderId", omstruckOrder.getOrderId());
 | 
											
												
													
														|  | 
 |  | +        try {
 | 
											
												
													
														|  | 
 |  | +            amsSaleOrderMaterialService.pushMesToWebsocket(orderIdMap);
 | 
											
												
													
														|  | 
 |  | +        } catch (Exception e) {
 | 
											
												
													
														|  | 
 |  | +            e.printStackTrace();
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        // 生成运输执行总实绩
 | 
											
												
													
														|  | 
 |  | +        result += tmsTruckFeign.addTotalResult(orderIdMap);
 | 
											
												
													
														|  | 
 |  | +        return  result;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +    /**
 | 
											
												
													
														|  | 
 |  | +     * 钢材改车,不上传金蝶
 | 
											
												
													
														|  | 
 |  | +     * @param mapValue
 | 
											
												
													
														|  | 
 |  | +     * @return
 | 
											
												
													
														|  | 
 |  | +     * @throws Exception
 | 
											
												
													
														|  | 
 |  | +     */
 | 
											
												
													
														|  | 
 |  | +    private int updateSteelOrderNotPush(Map<String, Object> mapValue) throws Exception {
 | 
											
												
													
														|  | 
 |  | +        Object lineSequence = mapValue.get("lineSequence");
 | 
											
												
													
														|  | 
 |  | +        int result = 0;
 | 
											
												
													
														|  | 
 |  | +        if (mapValue.get("orderId") == null) {
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("还未派车,不允许修改车牌号");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //判断该车序号对应的分录是否全部关闭
 | 
											
												
													
														|  | 
 |  | +        if(mapValue.get("saleOrderMaterialId") != null && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
 | 
											
												
													
														|  | 
 |  | +            Integer flCount = amsSaleMaterialMapper.getAbleFlcount(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +            if(flCount == 0) {
 | 
											
												
													
														|  | 
 |  | +                throw new Exception("该运单下所有分录被关闭,无法派车");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //查询输入进来的车牌号是否与原有车牌号一致,如果一致则退出
 | 
											
												
													
														|  | 
 |  | +        BigDecimal oldCapacityId = omstruckOrderMapper.getOldCapacityId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +        if(oldCapacityId.compareTo(DataChange.dataToBigDecimal(mapValue.get("capacityId"))) == 0) {
 | 
											
												
													
														|  | 
 |  | +            return 1;
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //校验该车是否存在手机号
 | 
											
												
													
														|  | 
 |  | +        String tel=omstruckOrderMapper.getTelByCapacityId(DataChange.dataToBigDecimal(mapValue.get("capacityId")));
 | 
											
												
													
														|  | 
 |  | +        String driverTel = (String) mapValue.get("driverTel");//填写的手机号
 | 
											
												
													
														|  | 
 |  | +        if(tel==null || "".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该车没有电话号码,无法派车!请去资源管理-运力维护该车的电话号码!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        Integer isCheckGps = amsSaleOrderMapper.getDispachSwitch();
 | 
											
												
													
														|  | 
 |  | +        String capacityNo = (String) mapValue.get("capacityNumber");
 | 
											
												
													
														|  | 
 |  | +        //得到此次是否校验GPS
 | 
											
												
													
														|  | 
 |  | +        boolean onceCheck = true;
 | 
											
												
													
														|  | 
 |  | +        //查询是否自提
 | 
											
												
													
														|  | 
 |  | +        String selfMention = "否";
 | 
											
												
													
														|  | 
 |  | +        try{
 | 
											
												
													
														|  | 
 |  | +            selfMention = amsSaleOrderMapper.findSelfMention(DataChange.dataToBigDecimal(mapValue.get("saleOrderMaterialId")));
 | 
											
												
													
														|  | 
 |  | +            onceCheck = (boolean) mapValue.get("isCheckGPS");
 | 
											
												
													
														|  | 
 |  | +        }catch (Exception e){
 | 
											
												
													
														|  | 
 |  | +            //取值失败不处理,取默认值
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //查询车牌号是否是黑名单
 | 
											
												
													
														|  | 
 |  | +        if(amsSaleOrderMapper.isBlackList(capacityNo)>0){
 | 
											
												
													
														|  | 
 |  | +            throw new Exception("该车在黑名单中,无法派车!请联系销售公司!");
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        //非自提,单次校验且全局校验,且车辆不允许无GPS
 | 
											
												
													
														|  | 
 |  | +        int isGPS=amsSaleOrderMapper.isGPS(capacityNo);
 | 
											
												
													
														|  | 
 |  | +        if((selfMention==null || selfMention.equals("否")) && onceCheck && (isCheckGps!=null && isCheckGps==0) && isGPS <= 0){
 | 
											
												
													
														|  | 
 |  | +            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定位信息,请联系销售公司物流部,申请是否可以派车。");
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        saleLogUtil.logOrder(DataChange.dataToBigDecimal(mapValue.get("orderId")),"修改车牌号",mapValue,SaleLogUtil.UPDATE);
 | 
											
												
													
														|  | 
 |  | +        if (lineSequence == null || "0".equals(lineSequence.toString()) || "1".equals(lineSequence.toString()) || "2".equals(lineSequence.toString())) {
 | 
											
												
													
														|  | 
 |  | +            String capacityids="";
 | 
											
												
													
														|  | 
 |  | +            Integer capacityid1= (Integer) mapValue.get("capacityIds");
 | 
											
												
													
														|  | 
 |  | +            Integer capacityid2= (Integer) mapValue.get("capacityId");
 | 
											
												
													
														|  | 
 |  | +            if (capacityid1!=null && !("".equals(capacityid1))){
 | 
											
												
													
														|  | 
 |  | +                capacityids=capacityid1+","+capacityid2;
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            mapValue.put("capacityids",capacityids);
 | 
											
												
													
														|  | 
 |  | +            //这是修改车牌号
 | 
											
												
													
														|  | 
 |  | +            //取消是新车牌号,那么不删除排队信息,不删除实绩信息,将运单状态变为7
 | 
											
												
													
														|  | 
 |  | +            if (DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(new BigDecimal(35128)) != 0) {
 | 
											
												
													
														|  | 
 |  | +                //根据订单id查询车牌号改动记录
 | 
											
												
													
														|  | 
 |  | +                String oldCpacityIds = omstruckOrderMapper.getOrderCapacityHistory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                BigDecimal oldOldCapacityId = null;
 | 
											
												
													
														|  | 
 |  | +                if(oldCpacityIds != null) {
 | 
											
												
													
														|  | 
 |  | +                    oldOldCapacityId = DataChange.dataToBigDecimal(oldCpacityIds.split(",")[0]);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                //如果旧车号是取消,且取消的前一个车与该车相等,那么就将状态还原
 | 
											
												
													
														|  | 
 |  | +                if (oldOldCapacityId != null && oldCapacityId != null && oldCapacityId.compareTo(new BigDecimal(35128)) == 0 && DataChange.dataToBigDecimal(mapValue.get("capacityId")).compareTo(oldOldCapacityId) == 0 ) {
 | 
											
												
													
														|  | 
 |  | +                    //判断该订单下有没有子实绩
 | 
											
												
													
														|  | 
 |  | +                    BigDecimal  resultId = amsSaleOrderMaterialMapper.selectEnFactory(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                    if(resultId == null) {
 | 
											
												
													
														|  | 
 |  | +                        OmstruckOrder omstruckOrder = new OmstruckOrder();
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setOrderStatus(new BigDecimal(4));
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setOrderLineSequence(new BigDecimal(0));
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
 | 
											
												
													
														|  | 
 |  | +                        if(tel != null && !"".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +                            omstruckOrder.setDriverTel(tel);
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                        /*omstruckOrder.set*/
 | 
											
												
													
														|  | 
 |  | +                        result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
 | 
											
												
													
														|  | 
 |  | +                    }else{
 | 
											
												
													
														|  | 
 |  | +                        OmstruckOrder omstruckOrder = new OmstruckOrder();
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setOrderStatus(new BigDecimal(5));
 | 
											
												
													
														|  | 
 |  | +                        if(tel != null && !"".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +                            omstruckOrder.setDriverTel(tel);
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setInsertUpdateRemark("将取消改回来原来的车状态不变!");
 | 
											
												
													
														|  | 
 |  | +                        /*omstruckOrder.set*/
 | 
											
												
													
														|  | 
 |  | +                        result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +
 | 
											
												
													
														|  | 
 |  | +                }else{
 | 
											
												
													
														|  | 
 |  | +                    //将排队信息删掉
 | 
											
												
													
														|  | 
 |  | +                    Map<String, Object> isSpellingMap = omstruckOrderMapper.getSteelIsSpelling(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                    if(isSpellingMap != null && isSpellingMap.get("listId") != null){
 | 
											
												
													
														|  | 
 |  | +                        int isSpelling = DataChange.dataToBigDecimal(isSpellingMap.get("isSpelling")).intValue();
 | 
											
												
													
														|  | 
 |  | +                        if(isSpelling == 1 ){
 | 
											
												
													
														|  | 
 |  | +                            result += omstruckOrderMapper.deleteSpellingList(isSpellingMap.get("listId"));
 | 
											
												
													
														|  | 
 |  | +                        }else{
 | 
											
												
													
														|  | 
 |  | +                            result += omstruckOrderMapper.deleteQueueList(isSpellingMap.get("listId"));
 | 
											
												
													
														|  | 
 |  | +                        }
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                    //若是接单之后还需要删除实绩且将状态变为4
 | 
											
												
													
														|  | 
 |  | +                    //查询运输订单的状态和总实绩ID
 | 
											
												
													
														|  | 
 |  | +                    Map<String, Object> orderMesMap = amsSaleOrderMapper.getOrderMes(mapValue);
 | 
											
												
													
														|  | 
 |  | +                    BigDecimal resultTotalId = DataChange.dataToBigDecimal(orderMesMap.get("resultTotalId"));
 | 
											
												
													
														|  | 
 |  | +                    //删除排队实绩
 | 
											
												
													
														|  | 
 |  | +                    if (resultTotalId !=null && !("".equals(resultTotalId))){
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrderMapper.deleteQueuingPerformance(resultTotalId);
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                    OmstruckOrder omstruckOrder = new OmstruckOrder();
 | 
											
												
													
														|  | 
 |  | +                    omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                    // 设置新的运输订单号
 | 
											
												
													
														|  | 
 |  | +                    omstruckOrder.setOrderNumber(DataChange.generateEightDigitsNumber("WYSDD", omstruckOrderMapper.selectMaxId().intValue()));
 | 
											
												
													
														|  | 
 |  | +                    omstruckOrder.setOrderStatus(new BigDecimal(4));
 | 
											
												
													
														|  | 
 |  | +                    omstruckOrder.setOrderLineSequence(new BigDecimal(0));
 | 
											
												
													
														|  | 
 |  | +                    if(tel != null && !"".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +                        omstruckOrder.setDriverTel(tel);
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                    /*omstruckOrder.set*/
 | 
											
												
													
														|  | 
 |  | +                    result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
 | 
											
												
													
														|  | 
 |  | +                    //插入日志
 | 
											
												
													
														|  | 
 |  | +                    result += omstruckOrderMapper.deleteEnResult(resultTotalId);
 | 
											
												
													
														|  | 
 |  | +                    result += omstruckOrderMapper.deleteWeightResult(resultTotalId);
 | 
											
												
													
														|  | 
 |  | +                    result += omstruckOrderMapper.deleteLoadResult(resultTotalId);
 | 
											
												
													
														|  | 
 |  | +                    result += omstruckOrderMapper.deleteLeaveResult(resultTotalId);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +            }else{
 | 
											
												
													
														|  | 
 |  | +                OmstruckOrder omstruckOrder = new OmstruckOrder();
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setOrderId(DataChange.dataToBigDecimal(mapValue.get("orderId")));
 | 
											
												
													
														|  | 
 |  | +                if(tel != null && !"".equals(tel)){
 | 
											
												
													
														|  | 
 |  | +                    omstruckOrder.setDriverTel(tel);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setOrderStatus(new BigDecimal(7));
 | 
											
												
													
														|  | 
 |  | +                omstruckOrder.setInsertUpdateRemark("取消车牌号,保留实绩将状态变为7");
 | 
											
												
													
														|  | 
 |  | +                result += omstruckOrderMapper.updateByPrimaryKeySelective(omstruckOrder);
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +            result += amsSaleOrderMapper.updateCapacityNumberInFactory(mapValue);
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +        return result;
 | 
											
												
													
														|  | 
 |  | +    }
 | 
											
												
													
														|  |  }
 |  |  }
 |