GarCarServerImpl.java 9.22 KB
package com.trash.garbage.service.impl;

import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.trash.driver.domain.vo.DriverVo;
import com.trash.garbage.pojo.domain.GarOrderMatchHandler;
import com.trash.garbage.pojo.dto.GarCarInfoVo;
import com.trash.garbage.pojo.vo.DispatchDriverVo;
import com.trash.garbage.service.GarCarServer;
import com.trash.garbage.utils.HttpUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.FastDateFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import java.util.*;

@Service
public class GarCarServerImpl implements GarCarServer {
    private final Logger logger = LoggerFactory.getLogger(GarCarServerImpl.class);

    private final static FastDateFormat FAST_DATE_FORMAT = FastDateFormat.getInstance("yyyy-MM-dd");

    @Override
    public String requestStr(String companId) {
        Map<String, Object> params = new HashMap<>();
        if (Objects.nonNull(companId)) {
            if (StringUtils.length(companId) < 5) {
                params.put("companyID", "zxljqy" + companId);
            } else {
                params.put("companyID", companId);
            }
        }

        params.put("valid", 0);
        params.put("tag", 1);
        params.put("page", 1);
        params.put("size", 100);
        return HttpUtil.doPost("/api/gpsservice/cs/basevehicle/ledger/list", JSON.toJSONString(params));

    }

    @Override
    public List<GarCarInfoVo> requestGarCarInfoVo(String companId) {
        String json = requestStr(companId);
        if (StringUtils.isEmpty(json)) {
            return Collections.emptyList();
        }
        Map<String, Object> hash = JSON.parseObject(json, HashMap.class);
        if (Objects.nonNull(hash)) {
            if (Objects.nonNull(hash.get("code")) && StringUtils.equals(hash.get("code").toString(), "200")) {
                if (Objects.nonNull(hash.get("result")) && hash.get("result") instanceof JSONObject) {
                    JSONObject resultObj = (JSONObject) hash.get("result");
                    List<GarCarInfoVo> list = new ArrayList<>();
                    if (Objects.nonNull(resultObj) && Objects.nonNull(resultObj.get("list")) && resultObj.get("list") instanceof JSONArray) {
                        JSONArray jsonArray = (JSONArray) resultObj.get("list");
                        for (Object object : jsonArray) {
                            try {
                                JSONObject jsonObject = (JSONObject) object;

                                GarCarInfoVo vo = new GarCarInfoVo();
                                vo.setCarBrank(jsonObject.getString("brandName"));
                                vo.setCarCode(jsonObject.getString("licenseplateNo"));
                                vo.setCarColor(jsonObject.getString(""));
                                vo.setCarIdentification(jsonObject.getString("licenseplateNo"));
                                vo.setCarType(jsonObject.getString("energyTypeName"));
                                if (Objects.nonNull(jsonObject.getString("companyID"))) {
                                    vo.setCompanyId(StringUtils.replace(jsonObject.getString("companyID").toString(), "zxljqy", ""));
                                }
                                vo.setCompanyName(jsonObject.getString("companyName"));
                                vo.setContainerVolume(jsonObject.getString("containerVolume"));
                                vo.setEmissionStandard(jsonObject.getString("emissionStanName"));
                                vo.setFarmeNumber(jsonObject.getString("frmaeNo"));
                                vo.setId(StringUtils.replace(jsonObject.getString("id"), "zxljcl", ""));
                                vo.setStatus(jsonObject.getInteger("auditStatus"));
                                if (StringUtils.isNotEmpty(jsonObject.getString("transportCertValid"))) {
                                    vo.setRoadTransportDate(FAST_DATE_FORMAT.parse(jsonObject.getString("transportCertValid")));
                                }
                                if (StringUtils.isNotEmpty(jsonObject.getString("registerAt"))) {
                                    vo.setEnterDate(FAST_DATE_FORMAT.parse(jsonObject.getString("registerAt")));
                                }

                                if (Objects.nonNull(jsonObject.get("drivers")) && jsonObject.get("drivers") instanceof JSONArray) {
                                    JSONArray das = (JSONArray) jsonObject.get("drivers");
                                    int length = CollectionUtils.size(das);
                                    if (length > 0) {
                                        if (Objects.nonNull(das.get(0)) && das.get(0) instanceof JSONObject) {
                                            JSONObject dro = (JSONObject) das.get(0);
                                            vo.setDrivers(StringUtils.replace(dro.getString("driverId").toString(), "zxljjsy", ""));
                                            vo.setDriversName(dro.getString("driverName"));
                                        }

                                        Set<DriverVo> driverVoList = new HashSet<>();
                                        for (Object da : das) {
                                            JSONObject dro = (JSONObject) da;
                                            DriverVo driverVo = new DriverVo();
                                            driverVo.setName(dro.getString("driverName"));
                                            driverVo.setPhoneNo(dro.getString("driverPhone"));
                                            driverVo.setId(StringUtils.replace(dro.getString("driverId"), "zxljjsy", ""));
                                            driverVoList.add(driverVo);
                                        }
                                        vo.setDriverVoList(driverVoList);
                                    }
                                }


                                if (StringUtils.isNotEmpty(vo.getCarType())) {
                                    list.add(vo);
                                }
                            } catch (Exception e) {
                                logger.error("车辆信息转换异常", e);
                            }
                        }
                    }
                    return list;
                }
            }
        }
        return Collections.emptyList();
    }

    @Override
    public List<DispatchDriverVo> requestDispatchDriverVo(String companId) {
        String json = requestStr(companId);
        if (StringUtils.isEmpty(json)) {
            return Collections.emptyList();
        }
        Map<String, Object> hash = JSON.parseObject(json, HashMap.class);
        if (Objects.nonNull(hash)) {
            if (Objects.nonNull(hash.get("code")) && StringUtils.equals(hash.get("code").toString(), "200")) {
                if (Objects.nonNull(hash.get("result")) && hash.get("result") instanceof JSONObject) {
                    JSONObject resultObj = (JSONObject) hash.get("result");
                    if (Objects.nonNull(resultObj) && Objects.nonNull(resultObj.get("list")) && resultObj.get("list") instanceof JSONArray) {
                        JSONArray jsonArray = (JSONArray) resultObj.get("list");
                        List<DispatchDriverVo> voList = new ArrayList<>();
                        for (Object object : jsonArray) {
                            JSONObject jsonObject = (JSONObject) object;

                            DispatchDriverVo vo = new DispatchDriverVo();
                            vo.setContainerVolume(jsonObject.getString("energyTypeName"));
                            vo.setLicensePlateNumber(jsonObject.getString("licenseplateNo"));

                            if (Objects.nonNull(jsonObject.get("drivers")) && jsonObject.get("drivers") instanceof JSONArray) {
                                JSONArray das = (JSONArray) jsonObject.get("drivers");
                                int length = CollectionUtils.size(das);
                                if (length > 0) {
                                    Set<DispatchDriverVo.Personnel> personnelInfos = new LinkedHashSet<>();

                                    for (Object da : das) {
                                        JSONObject dro = (JSONObject) da;
                                        DispatchDriverVo.Personnel personnel = new DispatchDriverVo.Personnel();
                                        personnel.setName(dro.getString("driverName"));
                                        personnel.setTel(dro.getString("driverPhone"));

                                        personnel.setChecked(false);
                                        personnelInfos.add(personnel);
                                    }
                                    vo.setPersonnelInfo(personnelInfos);
                                }
                            }
                            voList.add(vo);
                        }
                        return voList;
                    }
                }
            }
        }
        return Collections.emptyList();
    }
}