package com.glxp.mipsdl.client.phxyy;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.exceptions.ExceptionUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.glxp.mipsdl.client.CommonHttpClient;
import com.glxp.mipsdl.config.ThirdSysConfig;
import com.glxp.mipsdl.constant.ConstantType;
import com.glxp.mipsdl.constant.Constants;
import com.glxp.mipsdl.dao.auth.AuthWarehouseDao;
import com.glxp.mipsdl.dao.basic.BasicBussinessTypeDao;
import com.glxp.mipsdl.dao.basic.BasicCorpDao;
import com.glxp.mipsdl.dao.basic.BasicUdirelDao;
import com.glxp.mipsdl.dao.inout.IoCodeDao;
import com.glxp.mipsdl.dao.inout.IoOrderDao;
import com.glxp.mipsdl.dao.inout.IoOrderDetailBizDao;
import com.glxp.mipsdl.dao.thrsys.*;
import com.glxp.mipsdl.entity.auth.AuthWarehouseEntity;
import com.glxp.mipsdl.entity.basic.BasicBussinessTypeEntity;
import com.glxp.mipsdl.entity.basic.BasicCorpEntity;
import com.glxp.mipsdl.entity.basic.BasicUdirelEntity;
import com.glxp.mipsdl.entity.inout.*;
import com.glxp.mipsdl.entity.thrsys.*;
import com.glxp.mipsdl.http.HttpClient;
import com.glxp.mipsdl.req.base.*;
import com.glxp.mipsdl.req.phxyy.PhBusTypeRequest;
import com.glxp.mipsdl.req.phxyy.PhOrderRequest;
import com.glxp.mipsdl.req.phxyy.PhProductRequest;
import com.glxp.mipsdl.req.phxyy.PhUnitRequest;
import com.glxp.mipsdl.req.post.PostFileThrOrderRequest;
import com.glxp.mipsdl.req.post.PostThrCorpRequest;
import com.glxp.mipsdl.req.post.PostThrInvProductsRequest;
import com.glxp.mipsdl.req.post.PostThrProductsRequest;
import com.glxp.mipsdl.res.BaseResponse;
import com.glxp.mipsdl.service.auth.AuthWarehouseService;
import com.glxp.mipsdl.service.order.OrderUploadLogService;
import com.glxp.mipsdl.service.thrsys.ThrCorpService;
import com.glxp.mipsdl.service.thrsys.ThrSystemDetailService;
import com.glxp.mipsdl.util.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 平和县医院对接物资系统Client
 */
@Slf4j
@Service(value = "100005HttpClient") //bean注册名称，使用编码 + HttpClient，文件接口加 FileClient
public class PhxyyClient extends CommonHttpClient {

    @Resource
    private ThrSystemDetailService thrSystemDetailService;
    @Resource
    private HttpClient httpClient;
    @Resource
    private ThrBustypeOriginDao thrBustypeOriginDao;
    @Resource
    private IoOrderDao orderDao;
    @Resource
    private ThrSystemBusApiDao thrSystemBusApiDao;
    @Resource
    private BasicBussinessTypeDao basicBussinessTypeDao;
    @Resource
    private BasicCorpDao basicCorpDao;
    @Resource
    private IoCodeDao codeDao;
    @Resource
    private AuthWarehouseDao authWarehouseDao;
    @Resource
    private ThrInvWarehouseDao thrInvWarehouseDao;
    @Resource
    private AuthWarehouseService authWarehouseService;
    @Resource
    private ThirdSysConfig thirdSysConfig;
    @Resource
    private ThrCorpService thrCorpService;
    @Resource
    private IoOrderDetailBizDao orderDetailBizDao;
    @Resource
    private SubmitOrderUtil submitOrderUtil;
    @Resource
    private BasicUdirelDao basicUdirelDao;
    @Resource
    ThrProductsDao thrProductsDao;
    @Resource
    private OrderUploadLogService orderUploadLogService;
    @Resource
    private ThrOrderUploadBustypesMapper thrOrderUploadBustypesMapper;

    @Override
    public BaseResponse getUnit(UdiwmsUnitRequest udiwmsUnitRequest) {
        PhUnitRequest phUnitRequest = new PhUnitRequest();
        BeanUtil.copyProperties(udiwmsUnitRequest, phUnitRequest);
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_CORP_URL), phUnitRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse getProducts(UdiwmsProductRequest udiwmsProductRequest) {
        PhProductRequest phProductRequest = new PhProductRequest();
        BeanUtil.copyProperties(udiwmsProductRequest, phProductRequest);
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_PI_QUERY_URL), phProductRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse getOrderTypes(UdiwmsBusTypeRequest udiwmsBusTypeRequest) {
        PhBusTypeRequest phBusTypeRequest = new PhBusTypeRequest();
        BeanUtil.copyProperties(udiwmsBusTypeRequest, phBusTypeRequest);
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_BUS_TYPE_QUERY_URL), phBusTypeRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse getOrders(UdiwmsOrderQueryRequest udiwmsOrderQueryRequest) {
        if (StrUtil.isBlank(udiwmsOrderQueryRequest.getBillType())) {
            return ResultVOUtils.error(500, "单据类型不能为空");
        }
        //查询绑定的第三方单据类型
        String thirdAction = thrBustypeOriginDao.findThirdActionByBillType(udiwmsOrderQueryRequest.getBillType(), DictUtl.CURRENT_HOSP_CODE);
        udiwmsOrderQueryRequest.setBillType(thirdAction);
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_ORDER_QUERY_URL), udiwmsOrderQueryRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse submitOrders(UdiwmsOrderRequest udiwmsOrderRequest) {
        if (StrUtil.isBlank(udiwmsOrderRequest.getBillNo())) {
            return ResultVOUtils.error(500, "单据号不能为空");
        }

        PhOrderRequest phOrderRequest = new PhOrderRequest();
        BeanUtil.copyProperties(udiwmsOrderRequest, phOrderRequest);

        //查询单据和详情信息，组装第三方系统接口参数
        IoOrderEntity orderEntity = orderDao.selectOne(new LambdaQueryWrapper<IoOrderEntity>().eq(IoOrderEntity::getBillNo, udiwmsOrderRequest.getBillNo()).last("limit 1"));
        if (orderEntity.getAuditTime() == null)
            phOrderRequest.setBillDate(DateUtil.formatDateTime(orderEntity.getCreateTime()));
        else {
            phOrderRequest.setBillDate(DateUtil.formatDateTime(orderEntity.getAuditTime()));
        }
        //查询对应的第三方单据类型
        ThrSystemBusApiEntity thrSystemBusApiEntity = thrSystemBusApiDao.selectOne(new LambdaQueryWrapper<ThrSystemBusApiEntity>().eq(ThrSystemBusApiEntity::getCode, udiwmsOrderRequest.getBillType()));
        if (StrUtil.isBlank(thrSystemBusApiEntity.getUrl())) {
            return ResultVOUtils.error(500, "接口未配置，无法提交！");
        }
        phOrderRequest.setBillType(thrSystemBusApiEntity.getThirdBuyCode());

        //查询单据类型，设置往来单位信息
        BasicBussinessTypeEntity basicBussinessTypeEntity = basicBussinessTypeDao.selectByAction(udiwmsOrderRequest.getBillType());
        if (basicBussinessTypeEntity.getCorpType().equals(Constants.CORP_HOSPTIAL)) {
            //医院客户
            phOrderRequest.setCorpId(orderEntity.getFromCorp());
            //查询客户名称
            String corpName = basicCorpDao.selectNameByErpId(orderEntity.getFromCorp());
            phOrderRequest.setCorpName(corpName);
        } else if (basicBussinessTypeEntity.getCorpType().equals(Constants.CORP_INTTERNAL)) {
            //内部科室
            AuthWarehouseEntity warehouseEntity = authWarehouseDao.selectOne(new LambdaQueryWrapper<AuthWarehouseEntity>().eq(AuthWarehouseEntity::getCode, udiwmsOrderRequest.getCorpId()));
            try {
                //根据第三方系统标识，获取对应字段的值
                ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper<ThrInvWarehouseEntity>()
                        .eq(ThrInvWarehouseEntity::getCode, authWarehouseService.getThirdInvCode(warehouseEntity))
                        .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId()));

                phOrderRequest.setCorpId(thrInvWarehouseEntity.getCode());
                phOrderRequest.setCorpName(thrInvWarehouseEntity.getName());
            } catch (Exception e) {
                log.error("查询单据对应往来单位的第三方仓库信息异常", e);
            }
        } else {
            //供应商
            BasicCorpEntity basicCorpEntity = basicCorpDao.selectByErpId(orderEntity.getFromCorp());
            if (null != basicCorpEntity) {
                phOrderRequest.setCorpId(basicCorpEntity.getThirdId());
                phOrderRequest.setCorpName(basicCorpEntity.getName());
            } else {
                String msg = "查询单据对应的第三方往来单位信息异常";
                orderUploadLogService.updateLocalErr(orderEntity, msg);
                log.error("----单据提交-----" + orderEntity.getBillNo() + msg);
                return ResultVOUtils.error(500, msg);
            }
//            ThrCorpEntity thrCorp = thrCorpService.getThrCorp(udiwmsOrderRequest.getCorpId());
//            if (null != thrCorp) {
//                phOrderRequest.setCorpId(thrCorp.getUnitId());
//                phOrderRequest.setCorpName(thrCorp.getName());
//            } else {
//                String msg = "查询单据对应的第三方往来单位信息异常";
//                orderUploadLogService.updateLocalErr(orderEntity, msg);
//                log.error("----单据提交-----" + orderEntity.getBillNo() + msg);
//                return ResultVOUtils.error(500, msg);
//            }
        }

        //查询仓库信息
        AuthWarehouseEntity warehouseEntity = authWarehouseDao.selectOne(new LambdaQueryWrapper<AuthWarehouseEntity>().eq(AuthWarehouseEntity::getCode, orderEntity.getInvCode()));
        try {
            ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper<ThrInvWarehouseEntity>()
                    .eq(ThrInvWarehouseEntity::getCode, authWarehouseService.getThirdInvCode(warehouseEntity))
                    .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId()));
            if (thrInvWarehouseEntity != null) {
                phOrderRequest.setLocInvCode(thrInvWarehouseEntity.getCode());
                phOrderRequest.setLocInvName(thrInvWarehouseEntity.getName());

                phOrderRequest.setLocStorageCode(thrInvWarehouseEntity.getCode());
                phOrderRequest.setLocStorageName(thrInvWarehouseEntity.getName());
            } else {
                orderUploadLogService.updateLocalErr(orderEntity, "查询第三方系统仓库信息异常");
                return ResultVOUtils.error(500, "查询第三方系统仓库信息异常");
            }
        } catch (Exception e) {
            log.error("查询第三方系统仓库信息异常", ExceptionUtil.stacktraceToString(e));
            orderUploadLogService.updateLocalErr(orderEntity, "查询第三方系统仓库信息异常" + ExceptionUtil.stacktraceToString(e));
            return ResultVOUtils.error(500, "查询第三方系统仓库信息异常");
        }

        phOrderRequest.setBillFlag("1");

        if (StrUtil.nullToEmpty(thrSystemBusApiEntity.getUrl()).equals("useOut")) {
            phOrderRequest.setCorpId(phOrderRequest.getLocStorageCode());
            phOrderRequest.setCorpName(phOrderRequest.getLocStorageName());
            ThrInvWarehouseEntity thrInvWarehouseEntity = thrInvWarehouseDao.selectOne(new LambdaQueryWrapper<ThrInvWarehouseEntity>().eq(ThrInvWarehouseEntity::getCode, "29")
                    .eq(ThrInvWarehouseEntity::getThirdSysFk, thirdSysConfig.getThirdId()));
            phOrderRequest.setLocStorageCode("29");
            phOrderRequest.setLocStorageName(thrInvWarehouseEntity.getName());
        }


        //设置单据出入库类型
        if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT)) {
            phOrderRequest.setInoutType(1); //入库
        } else if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_OUT)) {
            phOrderRequest.setInoutType(2); //出库
        }

        phOrderRequest.setRemark("UDI单据：" + udiwmsOrderRequest.getBillNo()); //备注
        //组装单据明细数据
        List<IoCodeEntity> ioCodeEntities = codeDao.selectList(new LambdaQueryWrapper<IoCodeEntity>()
                .eq(IoCodeEntity::getOrderId, orderEntity.getBillNo())
        );

        List<UdiwmsOrderDetailRequest> items = new ArrayList<>();
        //查询业务单据详情
        List<IoOrderDetailBizEntity> detailBizEntities = orderDetailBizDao.selectList(new LambdaQueryWrapper<IoOrderDetailBizEntity>().eq(IoOrderDetailBizEntity::getOrderIdFk, orderEntity.getBillNo()));

//        setOrderDetailList(ioCodeEntities, items, detailBizEntities);
        List<IoOrderDetailBizEntity> stockOrderDetailEntities = transferSerList(detailBizEntities, orderEntity.getBillNo());
//        Collections.sort(stockOrderDetailEntities, (o1, o2) -> {
//            String o1Str = o1.getCoName() + o1.getSpec() + o1.getBatchNo() + o1.getSerialNo();
//            String o2Str = o2.getCoName() + o2.getSpec() + o2.getBatchNo() + o1.getSerialNo();
//            Integer cp = o1Str.compareTo(o2Str);
//            return cp;
//        });

        for (IoOrderDetailBizEntity stockOrderDetailEntity : stockOrderDetailEntities) {
            BasicUdirelEntity udiRelevanceEntity = basicUdirelDao.selectById(stockOrderDetailEntity.getBindRlFk());
//            if (StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) {
//                ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new QueryWrapper<ThrProductsEntity>().eq("code", udiRelevanceEntity.getMainId()).last("limit 1"));
//                if (thrProductsEntity != null && StrUtil.isNotEmpty(thrProductsEntity.getRegisterNo())) {
//                    stockOrderDetailEntity.setCertCode(thrProductsEntity.getRegisterNo());
//                }
//            }
            UdiwmsOrderDetailRequest item = new UdiwmsOrderDetailRequest();
            BeanUtil.copyProperties(stockOrderDetailEntity, item);
            item.setManufactory(stockOrderDetailEntity.getManufacturer());
            item.setProductDate(stockOrderDetailEntity.getProductDate());
            item.setExpireDate(stockOrderDetailEntity.getExpireDate());
            item.setBatchNo(stockOrderDetailEntity.getBatchNo());
            if (StrUtil.isNotEmpty(stockOrderDetailEntity.getProductDate())) {
//                item.setProductDate(com.glxp.mipsdl.admin.util.DateUtil.formatExpireTime("20" + stockOrderDetailEntity.getProductDate()));
            }
            if (StrUtil.isNotEmpty(stockOrderDetailEntity.getExpireDate())) {
//                item.setExpireDate(com.glxp.mipsdl.admin.util.DateUtil.formatExpireTime("20" + stockOrderDetailEntity.getExpireDate()));
            }
//            item.setMeasname(udiRelevanceEntity.getMeasname());
            item.setStandard(stockOrderDetailEntity.getSpec());
            item.setRegisterNo(stockOrderDetailEntity.getCertCode().replace(";", ""));
            IoOrderUploadLogEntity uploadLog = new IoOrderUploadLogEntity();
            try {
                item.setPrice(stockOrderDetailEntity.getPrice());
//                item.setFirstSalesInvNo(stockOrderDetailEntity.getFirstSalesInvNo());
//                item.setSecSalesInvNo(stockOrderDetailEntity.getSecSalesInvNo());
//                item.setInvoiceDate(stockOrderDetailEntity.getInvoiceDate());
//                item.setSecSalesListNo(stockOrderDetailEntity.getSecSalesListNo());
                item.setBillNo(orderEntity.getBillNo());
                String fphm = "";
                String fprq = null;
                List<IoOrderInvoiceEntity> invoiceList = IoOrderInvoiceEntity.builder().build()
                        .selectList(Wrappers.lambdaQuery(IoOrderInvoiceEntity.class).eq(IoOrderInvoiceEntity::getOrderIdFk, orderEntity.getBillNo())
                                .eq(IoOrderInvoiceEntity::getBindRlFk, stockOrderDetailEntity.getBindRlFk())
                                .eq(StrUtil.isNotEmpty(stockOrderDetailEntity.getBatchNo()), IoOrderInvoiceEntity::getBatchNo, stockOrderDetailEntity.getBatchNo()).
                                        groupBy(IoOrderInvoiceEntity::getInvoiceEncode));
                if (CollectionUtil.isNotEmpty(invoiceList)) {
                    fphm = invoiceList.stream().map(IoOrderInvoiceEntity::getInvoiceEncode).collect(Collectors.joining(","));
                    if (invoiceList.get(0).getInvoiceDate() != null)
                        fprq = DateUtil.formatDateTime(invoiceList.get(0).getInvoiceDate());
                }

                item.setFirstSalesInvNo(fphm);
                item.setSecSalesInvNo(fphm);
                item.setInvoiceDate(fprq);
                boolean isNeedFp = false;
                ThrOrderUploadBustypesEntity thrOrderUploadBustypesEntity = thrOrderUploadBustypesMapper.selectOne(new QueryWrapper<ThrOrderUploadBustypesEntity>().eq("action", basicBussinessTypeEntity.getAction()).last("limit 1"));
                if (thrOrderUploadBustypesEntity != null && IntUtil.value(thrOrderUploadBustypesEntity.getOrderStatus()) == 3) {
                    isNeedFp = true;
                }
                if (basicBussinessTypeEntity.getMainAction().equals(ConstantType.TYPE_PUT) && StrUtil.isEmpty(fphm) && isNeedFp) {
                    String errMsg = "提交失败，错误信息：" + stockOrderDetailEntity.getCoName() + "发票缺失,请补齐后重新提交";
                    orderUploadLogService.updateLocalErr(orderEntity, errMsg);
                    return ResultVOUtils.error(500, errMsg);
                }

                ThrProductsEntity thrProductsEntity = thrProductsDao.selectOne(new QueryWrapper<ThrProductsEntity>().eq("code", udiRelevanceEntity.getMainId()).last("limit 1"));
                if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) || thrProductsEntity == null || StrUtil.isEmpty(thrProductsEntity.getCode())) {
                    String errMsg = "提交失败，错误信息：" + "产品DI未关联第三方产品信息";
                    orderUploadLogService.updateLocalErr(orderEntity, errMsg);
                    return ResultVOUtils.error(500, errMsg);
                } else {
                    item.setProductId(thrProductsEntity.getCode());
                    item.setProductName(thrProductsEntity.getName());
                }
                items.add(item);
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                uploadLog.setStatus(3);
                String errMsg = "提交失败，错误信息：" + e.getMessage();
                uploadLog.setResult(errMsg);
                orderUploadLogService.insertOrUpdate(uploadLog);
                return ResultVOUtils.error(500, errMsg);
            }
        }
        Collections.reverse(items);
        phOrderRequest.setItem(items);

        return submitOrderUtil.submitOrder(orderEntity, phOrderRequest);
    }


    public List<IoOrderDetailBizEntity> transferSerList(List<IoOrderDetailBizEntity> stockOrderDetailEntities, String orderId) {
        List<IoOrderDetailBizEntity> resultList = new ArrayList<>();
        List<IoCodeEntity> ioCodeEntities = codeDao.selectList(new LambdaQueryWrapper<IoCodeEntity>()
                .eq(IoCodeEntity::getOrderId, orderId)
        );

        if (CollUtil.isNotEmpty(ioCodeEntities)) {
            for (IoCodeEntity codeDetaiEntity : ioCodeEntities) {
                if (CollUtil.isNotEmpty(stockOrderDetailEntities)) {
                    for (IoOrderDetailBizEntity stockOrderDetailEntity : stockOrderDetailEntities) {
                        if (IntUtil.value(codeDetaiEntity.getRelId()) == IntUtil.value(stockOrderDetailEntity.getBindRlFk())
                                && StrUtil.trimToEmpty(codeDetaiEntity.getBatchNo()).equals(StrUtil.trimToEmpty(stockOrderDetailEntity.getBatchNo()))) {
                            IoOrderDetailBizEntity item = new IoOrderDetailBizEntity();
                            BeanUtils.copyProperties(stockOrderDetailEntity, item);
                            item.setSerialNo(codeDetaiEntity.getSerialNo());
                            item.setCount(codeDetaiEntity.getReCount());
                            item.setReCount(codeDetaiEntity.getReCount());
                            resultList.add(item);
                            break;
                        }
                    }
                }
            }
        }
        return resultList;
    }


    @Override
    public BaseResponse getInvProducts(UdiwmsInvProductsRequest udiwmsInvProductsRequest) {
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_INV_PI_URL), udiwmsInvProductsRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse getWarehouse(UdiwmsWarehouseRequest udiwmsWarehouseRequest) {
        String response = httpClient.postJson(thrSystemDetailService.getUrl(Constants.URL_NAME_WAREHOUSE_QUERY_URL), udiwmsWarehouseRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse postProducts(PostThrProductsRequest postThrProductsRequest) {
        postThrProductsRequest.setUploadType("文件导入");
        String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostPiUrl(), postThrProductsRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse postCorps(PostThrCorpRequest postThrCorpRequest) {
        postThrCorpRequest.setUploadType("文件导入");
        String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostCorpUrl(), postThrCorpRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse postOrderDetail(PostFileThrOrderRequest postFileThrOrderRequest) {
        postFileThrOrderRequest.setUploadType("文件导入");
        String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostOrderUrl(), postFileThrOrderRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse postInvProducts(PostThrInvProductsRequest postThrInvProductsRequest) {
        String response = httpClient.postUDIWMSJson(thirdSysConfig.getPostInvPiUrl(), postThrInvProductsRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse testConnect() {
        UdiwmsUnitRequest udiwmsUnitRequest = new UdiwmsUnitRequest();
        udiwmsUnitRequest.setPage(1);
        udiwmsUnitRequest.setLimit(2);
        BaseResponse baseResponse = getUnit(udiwmsUnitRequest);
        if (baseResponse.getCode() == 20000) {
            return ResultVOUtils.success("连接第三方系统成功！");
        }
        return ResultVOUtils.success("连接第三方服务成功，连接第三方系统成功！");
    }

    @Override
    public BaseResponse queryUdiInvProducts(UdiwmsQueryUdiInvProductsRequest queryUdiInvProductsRequest) {
        String response = httpClient.postUDIWMSJson(thirdSysConfig.getQueryInvUrl(), queryUdiInvProductsRequest);
        BaseResponse baseResponse = JSONObject.parseObject(response, BaseResponse.class);
        return baseResponse;
    }

    @Override
    public BaseResponse submitProducts(UdiwmsAddProductsRequest udiwmsAddProductsRequest) {
        return null;
    }

    @Override
    public BaseResponse submitUnit(UdiwmsAddUnitRequest udiwmsAddUnitRequest) {
        return null;
    }

    @Override
    public BaseResponse submitPreInOrders(UdiwmsPreInOrderRequest udiwmsPreInOrderRequest) {
        return null;
    }
}
