package com.prolog.rdc.tms.rmi.feign;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;

import com.prolog.framework.common.message.RestMessage;
import com.prolog.framework.core.pojo.Page;
import com.prolog.rdc.tms.model.dto.DeviceByOneDTO;
import com.prolog.rdc.tms.model.dto.ExpensePopDTO;
import com.prolog.rdc.tms.model.dto.IntfErrorLogDTO;
import com.prolog.rdc.tms.model.dto.LmsTmsZoneDTO;
import com.prolog.rdc.tms.model.dto.LmsTmsZoneMinDTO;
import com.prolog.rdc.tms.model.dto.SettlementTypeDTO;
import com.prolog.rdc.tms.model.dto.SySParameterDTO;
import com.prolog.rdc.tms.model.dto.TmsBaseParameterDTO;
import com.prolog.rdc.tms.model.dto.VehicleCheckDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.ShipbillFitBusinessFlowDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.ShipbillMatchCarrierDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.ShipbillMatchLineDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.SignconfigPopDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.StandardTemplateDetailsListDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.StrategyBusinessMatchingDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.StrategySplitMatchingDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.StrategyTransferMatchingDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.SysAlertConfigurationQueryDTO;
import com.prolog.rdc.tms.model.dto.basicConfigure.SysAlertUsersQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.ApprovalLogDTO;
import com.prolog.rdc.tms.model.dto.basicData.ApprovalNodeSelDTO;
import com.prolog.rdc.tms.model.dto.basicData.BaseFeeDTO;
import com.prolog.rdc.tms.model.dto.basicData.BranchByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.BranchByNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.CargoOwnerPageDTO;
import com.prolog.rdc.tms.model.dto.basicData.CarrierCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.CarriersByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.CustomerByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.CustomerCarrierDTO;
import com.prolog.rdc.tms.model.dto.basicData.ImportMatchingDataDTO;
import com.prolog.rdc.tms.model.dto.basicData.ItemByEncodingNameDTO;
import com.prolog.rdc.tms.model.dto.basicData.ItemCategoryCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.ItemCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.ItemPagingQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.LineByCustomerQueryDTO;
import com.prolog.rdc.tms.model.dto.basicData.LineShipperConsigneeDTO;
import com.prolog.rdc.tms.model.dto.basicData.ProviderCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.ProviderShipperCheckDTO;
import com.prolog.rdc.tms.model.dto.basicData.StationDistanceDTO;
import com.prolog.rdc.tms.model.dto.basicData.StationViewDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsArriverDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseBranchApTimeDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseBranchDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseCarportDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseCustomerDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseCustomerReceiverNewDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsBaseTranslineViewDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsCarrierDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsLineMapDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsShipperDTO;
import com.prolog.rdc.tms.model.dto.basicData.TmsTransferStationByViewDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.ContainerDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DriverCheckDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.DriverPopupDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.VehicleAndDriverDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.VehiclePopupDTO;
import com.prolog.rdc.tms.model.dto.fleetManagement.VehicleTypeCheckDTO;
import com.prolog.rdc.tms.model.dto.intelligent.BranchDTO;
import com.prolog.rdc.tms.model.dto.intelligent.ConsigneeDTO;
import com.prolog.rdc.tms.model.dto.intelligent.CustomerDTO;
import com.prolog.rdc.tms.model.dto.intelligent.VehicleDTO;
import com.prolog.rdc.tms.model.dto.intelligent.VehicleTypeDTO;
import com.prolog.rdc.tms.model.dto.message.SendMessageDTO;
import com.prolog.rdc.tms.model.entity.LmsTmsZoneModel;
import com.prolog.rdc.tms.model.entity.SysParamConfigModel;
import com.prolog.rdc.tms.model.entity.SysRefdatadModel;
import com.prolog.rdc.tms.model.vo.ImportLogUpdateVO;
import com.prolog.rdc.tms.model.vo.IntfCargoOwnerSaveVO;
import com.prolog.rdc.tms.model.vo.IntfCustomerConsigneeSaveVO;
import com.prolog.rdc.tms.model.vo.IntfCustomerSaveVO;
import com.prolog.rdc.tms.model.vo.IntfItemSaveVO;
import com.prolog.rdc.tms.model.vo.IntfProviderSaveVO;
import com.prolog.rdc.tms.model.vo.IntfProviderShipperSaveVO;
import com.prolog.rdc.tms.model.vo.ItemCategorySaveVO;
import com.prolog.rdc.tms.model.vo.LmsTmsZoneQueryVO;
import com.prolog.rdc.tms.model.vo.LmsTmsZoneVO;
import com.prolog.rdc.tms.model.vo.SysRefdatadSearchVO;
import com.prolog.rdc.tms.model.vo.TmsBaseParameterConditionVO;
import com.prolog.rdc.tms.model.vo.UpdateLatitudeAndLongitudeVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.AlertMessageAddVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.AlertMessageIsExistVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ApprovalBusinessNodeVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ApprovalOpenVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.BusinessFlowShipbillVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ImportLogAddVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ShipbillMatchCarrierVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.ShipbillMatchLineVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.SignconfigPopVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.StrategyBusinessMatchingVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.StrategySplitMatchingVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.StrategyTransferMatchingVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.SysAlertConfigurationQueryVO;
import com.prolog.rdc.tms.model.vo.basicConfigure.SysAlertUsersQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.AppointTimeQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.BranchByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.BranchByNameVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.CargoOwnerPageVO;
import com.prolog.rdc.tms.model.vo.basicData.CarriersByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.CustomerByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.CustomerCarrierVO;
import com.prolog.rdc.tms.model.vo.basicData.ImportMatchingDataVO;
import com.prolog.rdc.tms.model.vo.basicData.ItemByEncodingNameVO;
import com.prolog.rdc.tms.model.vo.basicData.ItemCategoryCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.ItemCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.ItemPagingQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.LineByCustomerQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.ProviderCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.ProviderShipperCheckVO;
import com.prolog.rdc.tms.model.vo.basicData.SettlementTypeVO;
import com.prolog.rdc.tms.model.vo.basicData.StationDistanceVO;
import com.prolog.rdc.tms.model.vo.basicData.StationQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.SysRefdatadQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsArriverVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsBaseBranchQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsBaseTranslineVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsCarrierViewVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsLineShipperQueryVO;
import com.prolog.rdc.tms.model.vo.basicData.TmsTransferStationVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DriverCheckVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.DriverPopupVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.VehicleAndVehicleVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.VehicleCheckVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.VehicleGpsSaveVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.VehiclePopupVO;
import com.prolog.rdc.tms.model.vo.fleetManagement.VehicleTypeCheckVO;
import com.prolog.rdc.tms.rmi.hystrix.MaindataHystrix;

import io.swagger.annotations.ApiOperation;

/**
 * 
 *
 * 基础数据服务调用
 *
 * @className :MaindataFeign
 * @author :fanzw
 * @creationTime :2022/05/17
 * @description :
 *
 * @modifier :fanzw
 * @modifyTime :2022/05/17
 * @reviseRemarks:
 *
 * @version :1.0.0
 *
 */
@FeignClient(value = "${prolog.rdc.services.tms.maindata.name}", url = "${prolog.rdc.services.tms.maindata.url}", fallbackFactory = MaindataHystrix.class)
public interface MaindataFeign {

	@PostMapping("/codes/one")
	RestMessage<String> getCodeNumberByCode(@RequestParam(value = "code") String code, @RequestParam(value = "codetype") String codetype);

	@PostMapping("/codes/many")
	RestMessage<List<String>> getCodeNumberByCodes(@RequestParam(value = "code") String code, @RequestParam(value = "codetype") String codetype, @RequestParam(value = "codenum") Integer codenum);

	@PostMapping("/refdata/dtl/dd-list/get")
	RestMessage<List<Map<String, Object>>> getDropDownById(@RequestParam(value = "objectcode") String objectcode, @RequestParam(value = "groupcode1") String groupcode1, @RequestParam(value = "groupcode2") String groupcode2, @RequestParam(value = "code") String code);

	/**
	 * 数据字典批量翻译
	 * 
	 * @return
	 */
	@PostMapping("/dtl/dd-list")
	RestMessage<Map<String, Object>> ListDropDownExecute(@RequestBody List<Map<String, Object>> param);

	@PostMapping("/tmsBaseCustomer/parse_address")
	RestMessage<String> parseCustomerConsigneeAddress(@RequestParam(value = "id") Long id, @RequestParam(value = "longitude") BigDecimal longitude, @RequestParam(value = "latitude") BigDecimal latitude, @RequestParam(value = "address") String address);

	@PostMapping("/tmsBaseBranch/parse_address")
	RestMessage<String> parseBranchAddress(@RequestParam(value = "id") Long id, @RequestParam(value = "longitude") BigDecimal longitude, @RequestParam(value = "latitude") BigDecimal latitude, @RequestParam(value = "address") String address);

	@PostMapping("/provider/parse_address_shipper")
	RestMessage<String> parseProviderShipperAddress(@RequestParam(value = "id") Long id, @RequestParam(value = "longitude") BigDecimal longitude, @RequestParam(value = "latitude") BigDecimal latitude, @RequestParam(value = "address") String address);

	@PostMapping("/device/getOne")
	RestMessage<DeviceByOneDTO> deviceGetOne(@RequestParam(value = "id") Long id);

	@PostMapping("/vehicle/check")
	RestMessage<VehicleCheckDTO> getVehicle(@RequestBody VehicleCheckVO vehicleCheckVO);

	@PostMapping(value = "/business_flow/shipbill_match_flow")
	RestMessage<ShipbillFitBusinessFlowDTO> shipbillMatchFlowQuery(@RequestBody BusinessFlowShipbillVO businessFlowShipbillVO);

	@PostMapping(value = "/line_match_strategy/shipbill_match_line")
	RestMessage<ShipbillMatchLineDTO> shipbillMatchLineExecute(@RequestBody ShipbillMatchLineVO matchLineVO);

	@PostMapping(value = "/line_match_strategy/shipbill_match_line_batch")
	RestMessage<Map<String, ShipbillMatchLineDTO>> shipbillMatchLineBatchExecute(@RequestBody List<ShipbillMatchLineVO> matchLineVOs);

	/**
	 * 标记配置查询
	 *
	 * @param signconfigPopVO
	 * @return
	 */
	@PostMapping("/signconfig/get_list")
	RestMessage<List<SignconfigPopDTO>> getSignConfig(@RequestBody SignconfigPopVO signconfigPopVO);

	/**
	 * 导入日志保存
	 * 
	 * @param importLogAddVO
	 * @return
	 */
	@PostMapping("/import_log/add")
	RestMessage<String> addImportLogExecute(@RequestBody ImportLogAddVO importLogAddVO);

	/**
	 * 导入日志更新
	 *
	 * @param updateVO
	 * @return
	 */
	@PostMapping("/import_log/update")
	RestMessage<String> updateImportLogData(@RequestBody ImportLogUpdateVO updateVO);

	/**
	 * 标准版模板详情查询
	 * 
	 * @param importObjNo
	 * @return
	 */
	@PostMapping("/sysimport/templet/template_details")
	RestMessage<List<StandardTemplateDetailsListDTO>> listStandardTemplateDetailsExecute(@RequestParam("importObjNo") String importObjNo);

	/**
	 * 根据货主编码名称查询货主资料
	 * 
	 * @param cargoOwnerByEncodingNameVO
	 * @return
	 */
	@PostMapping("/cargo_owner/by_encoding_name")
	RestMessage<CargoOwnerByEncodingNameDTO> getCargoOwnerByEncodingNameExecute(@RequestBody CargoOwnerByEncodingNameVO cargoOwnerByEncodingNameVO);

	/**
	 * 是否开启审批流程
	 *
	 * @param approvalOpenVO
	 * @return
	 */
	@PostMapping("/approval_business/open")
	RestMessage<Boolean> openExecute(@RequestBody ApprovalOpenVO approvalOpenVO);

	/**
	 * 审批流程节点审核
	 *
	 * @param approvalBusinessNodeVO
	 * @return
	 */
	@PostMapping("/approval_business/approval")
	RestMessage<Boolean> nodeApprovalExecute(@RequestBody ApprovalBusinessNodeVO approvalBusinessNodeVO);

	/**
	 * 审核作废
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	@PostMapping("/approval_business/invalid")
	RestMessage<Object> approvalInvalidExecute(@RequestParam("approvalBusinessId") String approvalBusinessId);

	/**
	 * 审核撤回
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	@PostMapping("/approval_business/retract")
	RestMessage<Object> approvalRetractExecute(@RequestParam("approvalBusinessId") String approvalBusinessId);

	/**
	 * 审核提交
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	@PostMapping("/approval_business/submit")
	RestMessage<Object> approvalSubmitExecute(@RequestParam("approvalBusinessId") String approvalBusinessId);

	/**
	 * 系统参数无权限查询
	 *
	 * @param tmsBaseParameterConditionVO
	 * @return
	 */
	@PostMapping("/sysParameter/queryByConditionNo")
	RestMessage<List<TmsBaseParameterDTO>> getBaseParameterByConditionNoExecute(@RequestBody TmsBaseParameterConditionVO tmsBaseParameterConditionVO);

	/**
	 * 通过参数编码查询参数对象
	 *
	 * @param code
	 * @return
	 */
	@PostMapping("/sysParamConfig/getValue")
	RestMessage<SysParamConfigModel> getValue(@RequestParam("code") String code);

	/**
	 * 后端字典翻译通用查询
	 *
	 * @param vo
	 * @return
	 */
	@PostMapping("/refdata/getSysRefdatadDatas")
	RestMessage<List<SysRefdatadModel>> getSysRefdatadDatas(@RequestBody SysRefdatadQueryVO vo);

	/**
	 * 线路-承运方查看
	 *
	 * @param tmsCarrierViewVO
	 * @return
	 */
	@PostMapping("/line/tmsCarrierView")
	RestMessage<List<TmsCarrierDTO>> tmsCarrierView(@RequestBody TmsCarrierViewVO tmsCarrierViewVO);

	/**
	 * 获取日志信息
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	@PostMapping("/approval_business/get_bus_log")
	RestMessage<List<ApprovalLogDTO>> getBusLog(@RequestParam("approvalBusinessId") String approvalBusinessId);

	/**
	 * 获取节点信息
	 *
	 * @param approvalBusinessId
	 * @return
	 */
	@PostMapping("/approval_business/get_bus_detail")
	RestMessage<List<ApprovalNodeSelDTO>> getBusDetail(@RequestParam("approvalBusinessId") String approvalBusinessId);

	/**
	 * 获取高级查询配置
	 *
	 * @param bizType
	 * @return
	 */
	@PostMapping("/sysQueryConfiguration/getQueryConfiguration/v1.0")
	RestMessage<String> getQueryConfiguration(@RequestParam("bizType") String bizType);

	/**
	 * 线路-收货方查询
	 *
	 * @param vo
	 * @return
	 */
	@PostMapping("/line/tmsArriverPage")
	RestMessage<Page<TmsArriverDTO>> tmsArriverPage(@RequestBody TmsArriverVO vo);

	/**
	 * 仓库查看
	 *
	 * @param id
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/viewBranch")
	RestMessage<TmsBaseBranchDTO> viewBranch(@RequestParam(value = "id") Long id);

	/**
	 * 根据客户查询线路
	 * 
	 * @param lineByCustomerQueryVO
	 * @return
	 */
	@PostMapping("/line/byCustomer")
	RestMessage<LineByCustomerQueryDTO> getLineByCustomerExecute(@RequestBody LineByCustomerQueryVO lineByCustomerQueryVO);

	/**
	 * 车位查询
	 *
	 */
	@PostMapping("/tmsBaseBranch/queryCarport")
	RestMessage<List<TmsBaseCarportDTO>> queryCarport(@RequestParam(value = "branchid") Long branchid, @RequestParam(value = "userId") String userId);

	/**
	 * 车位列表查询
	 *
	 */
	@PostMapping("/tmsBaseBranch/queryCarport_list")
	RestMessage<List<TmsBaseCarportDTO>> queryCarportList(@RequestParam(value = "branchid") Long branchid);

	/**
	 * 仓库可预约时间段查询
	 *
	 */
	@PostMapping("/tmsBaseBranch/queryAppointTime")
	RestMessage<List<TmsBaseBranchApTimeDTO>> queryAppointTime(@RequestBody AppointTimeQueryVO vo);

	/**
	 * 预警配置查询
	 *
	 */
	@PostMapping("/alertConfiguration/alert_cfg_query")
	RestMessage<List<SysAlertConfigurationQueryDTO>> listAlertConfigurationExecute(@RequestBody SysAlertConfigurationQueryVO sysAlertConfigurationQueryVO);

	/**
	 * 预警配置用户查询
	 *
	 */
	@PostMapping("/alertConfiguration/usersQuery")
	RestMessage<List<SysAlertUsersQueryDTO>> listAlertUsersExecute(@RequestBody SysAlertUsersQueryVO sysAlertUsersQueryVO);

	/**
	 * 预警消息是否存在
	 *
	 */
	@PostMapping("/alertMessage/is_exist")
	RestMessage<Boolean> alertMessageIsExistExecute(@RequestBody AlertMessageIsExistVO alertMessageIsExistVO);

	/**
	 * 预警消息新增
	 *
	 */
	@PostMapping("/alertMessage/add")
	RestMessage<String> alertMessageAddExecute(@RequestBody List<AlertMessageAddVO> alertMessageAddVOs);

	/**
	 * 根据仓库名称查询仓库资料
	 * 
	 * @param branchByNameVO
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/by_name")
	RestMessage<BranchByNameDTO> getBranchByNameExecute(@RequestBody BranchByNameVO branchByNameVO);

	/**
	 * 根据商品编码名称查询商品资料
	 * 
	 * @param itemByEncodingNameVO
	 * @return
	 */
	@PostMapping("/item/by_encoding_name")
	RestMessage<ItemByEncodingNameDTO> getItemByEncodingNameExecute(@RequestBody ItemByEncodingNameVO itemByEncodingNameVO);

	/**
	 * 根据商品编码名称查询商品资料(接口专用)
	 *
	 * @param itemByEncodingNameVO
	 * @return
	 */
	@PostMapping("/item/by_encoding_name_intf")
	RestMessage<ItemByEncodingNameDTO> getItemByEncodingNameExecuteIntf(@RequestBody ItemByEncodingNameVO itemByEncodingNameVO);

	/**
	 * 获取拆分策略
	 *
	 * @param strategySplitMatchingVO
	 * @return
	 */
	@PostMapping("/strategySplit/matching")
	RestMessage<List<StrategySplitMatchingDTO>> matchingExecute(@RequestBody StrategySplitMatchingVO strategySplitMatchingVO);

	/**
	 * 客户查看
	 *
	 * @param id
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/viewCustomer")
	RestMessage<TmsBaseCustomerDTO> viewCustomerExecute(@RequestParam(value = "id") Long id);

	/**
	 * 供应商查看
	 *
	 * @param providerCheckVO
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/check")
	RestMessage<ProviderCheckDTO> getProviderExecute(@RequestBody ProviderCheckVO providerCheckVO);

	/**
	 * 根据运单适配匹配承运方策略
	 *
	 * @param matchCarrierVOs
	 * @return
	 */
	@PostMapping(value = "/carrier_match_strategy/shipbill_match_carrier")
	RestMessage<Map<String, ShipbillMatchCarrierDTO>> shipbillMatchCarrierExecute(@RequestBody List<ShipbillMatchCarrierVO> matchCarrierVOs);

	/**
	 * 客户收货方匹配唯一承运方
	 *
	 * @param carrierVO
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/customer_carrier")
	RestMessage<CustomerCarrierDTO> customerCarrierExecute(@RequestBody CustomerCarrierVO carrierVO);

	/**
	 * 根据商品编码名称查询商品资料
	 *
	 * @param itemCheckVO
	 * @return
	 */
	@PostMapping("/item/check")
	RestMessage<ItemCheckDTO> getItem(@RequestBody ItemCheckVO itemCheckVO);

	/**
	 * 根据仓库ID查询仓库
	 *
	 * @param
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/getOneBranch")
	RestMessage<TmsBaseBranchDTO> getOneBranch(@RequestParam(value = "branchId") Long branchId);

	/**
	 * 司机车辆查询或新增
	 *
	 * @param
	 * @return
	 */
	@PostMapping("/vehicle/automatic")
	RestMessage<VehicleAndDriverDTO> vehicleAutomaticExecute(@RequestBody VehicleAndVehicleVO vehicleAndVehicleVO);

	/**
	 * 根据仓库编码名称查询仓库资料
	 * 
	 * @param branchByEncodingNameVO
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/by_encoding_name")
	RestMessage<BranchByEncodingNameDTO> getBranchByEncodingNameExecute(@RequestBody BranchByEncodingNameVO branchByEncodingNameVO);

	@PostMapping("/tmsBaseBranch/by_encoding_name_intf")
	RestMessage<BranchByEncodingNameDTO> getBranchByEncodingNameExecuteIntf(@RequestBody BranchByEncodingNameVO branchByEncodingNameVO);

	/**
	 * 根据客户编码名称查询客户资料
	 * 
	 * @param customerByEncodingNameVO
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/by_encoding_name")
	RestMessage<CustomerByEncodingNameDTO> getCustomerByEncodingNameExecute(@RequestBody CustomerByEncodingNameVO customerByEncodingNameVO);

	/**
	 * 司机资料查看
	 *
	 * @param driverCheckVO
	 * @return
	 */
	@PostMapping("/driver/check")
	RestMessage<DriverCheckDTO> getDriverExecute(@RequestBody DriverCheckVO driverCheckVO);

	/**
	 * 根据供应商编码查询计费费用类型
	 *
	 */
	@PostMapping("/carrier/getSettlement")
	RestMessage<List<SettlementTypeDTO>> getSettlementByCode(@RequestBody SettlementTypeVO settlementTypeVO);

	/**
	 * 根据供应商编码查询计费费用类型
	 *
	 */
	@PostMapping("/carrier/feeCode")
	RestMessage<List<BaseFeeDTO>> feeCode(@RequestBody SettlementTypeVO settlementTypeVO);

	@PostMapping("/carrier/findBaseFeePage")
	RestMessage<Page<BaseFeeDTO>> findBaseFeePage(@RequestBody ExpensePopDTO dto);

	@PostMapping("/SySParameter/queryParameter/v1.0")
	RestMessage<SySParameterDTO> queryParameter();

	@PostMapping("/vehicleGps/saveVehicleGps")
	RestMessage<Object> saveVehicleGps(VehicleGpsSaveVO vo);

	/**
	 * 司机资料查看
	 *
	 * @param lineShipperQueryVO
	 * @return
	 */
	@PostMapping("/line/shipper")
	RestMessage<List<TmsShipperDTO>> tmsLineShipperQuery(@RequestBody TmsLineShipperQueryVO lineShipperQueryVO);

	/**
	 * 客户接口转TMS
	 * 
	 * @param intfCustomerSaveVOs
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/save/interface")
	RestMessage<List<IntfErrorLogDTO>> saveCustomerInterfaceExecute(@RequestBody List<IntfCustomerSaveVO> intfCustomerSaveVOs);

	/**
	 * 供应商接口转TMS
	 * 
	 * @param intfProviderSaveVOs
	 * @return
	 */
	@PostMapping("/provider/save/interface")
	RestMessage<List<IntfErrorLogDTO>> saveProviderInterfaceExecute(@RequestBody List<IntfProviderSaveVO> intfProviderSaveVOs);

	/**
	 * 供应商发货方接口转TMS
	 *
	 * @param intfProviderShipperSaveVOs
	 * @return
	 */
	@PostMapping("/provider/save/shipper/interface")
	RestMessage<List<IntfErrorLogDTO>> saveProviderShipperInterfaceExecute(@RequestBody List<IntfProviderShipperSaveVO> intfProviderShipperSaveVOs);

	/**
	 * 商品接口转TMS
	 * 
	 * @param intfItemSaveVOs
	 * @return
	 */
	@PostMapping("/item/save/interface")
	RestMessage<List<IntfErrorLogDTO>> saveItemInterfaceExecute(@RequestBody List<IntfItemSaveVO> intfItemSaveVOs);

	/**
	 * 商品品类接口转TMS
	 *
	 * @param itemCategorySaveVOs
	 * @return
	 */
	@PostMapping("/item_category/save/interface")
	RestMessage<List<IntfErrorLogDTO>> saveItemCategoryInterfaceExecute(@RequestBody List<ItemCategorySaveVO> itemCategorySaveVOs);

	/**
	 * 客户收货方接口转主数据
	 *
	 * @param vos
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/saveConsignee/interface")
	RestMessage<List<IntfErrorLogDTO>> saveCustomerConsigneeInterfaceExecute(@RequestBody List<IntfCustomerConsigneeSaveVO> vos);

	@PostMapping("/line/line_sites")
	RestMessage<List<TmsLineMapDTO>> lineSites(@RequestBody List<Long> lineIds);

	/**
	 * 运单导入时匹配仓资料
	 * 
	 * @param importMatchingDataVO
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/shipbill/matching")
	RestMessage<ImportMatchingDataDTO> importMatchingBranchDataExecute(@RequestBody ImportMatchingDataVO importMatchingDataVO);

	/**
	 * 运单导入时匹配客户资料
	 * 
	 * @param importMatchingDataVO
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/shipbill/matching")
	RestMessage<ImportMatchingDataDTO> importMatchingCustomerDataExecute(@RequestBody ImportMatchingDataVO importMatchingDataVO);

	/**
	 * 运单导入时匹配供应商资料
	 * 
	 * @param importMatchingDataVO
	 * @return
	 */
	@PostMapping("/provider/shipbill/matching")
	RestMessage<ImportMatchingDataDTO> importMatchingProviderDataExecute(@RequestBody ImportMatchingDataVO importMatchingDataVO);

	/**
	 * 匹配中转策略
	 *
	 * @param transferMatchingVO
	 * @return
	 */
	@PostMapping("/strategyTransfer/matching")
	RestMessage<List<StrategyTransferMatchingDTO>> matchingTransferExecute(@RequestBody StrategyTransferMatchingVO transferMatchingVO);

	/**
	 * 业务规则策略匹配
	 *
	 */
	@PostMapping("/strategyBusiness/matching")
	RestMessage<List<StrategyBusinessMatchingDTO>> matchingBusinessExecute(@RequestBody StrategyBusinessMatchingVO businessMatchingVO);

	/**
	 * 中转站资料查看
	 *
	 */
	@PostMapping("/transferStation/view")
	RestMessage<TmsTransferStationByViewDTO> view(@RequestBody TmsTransferStationVO vo);

	/**
	 * 推送消息
	 *
	 * @param dto
	 * @return
	 */
	@PostMapping("/sendMessage/send")
	RestMessage<Object> sendMessage(@RequestBody SendMessageDTO dto);

	/**
	 * 根据名称/编码查询行政区域编码
	 *
	 * @param lmstmszonevo
	 * @return
	 */
	@PostMapping("/zone/get-by-conditions")
	RestMessage<Page<LmsTmsZoneModel>> getZoneByConditions(@RequestBody LmsTmsZoneVO lmstmszonevo);

	@PostMapping("/zone/get-by-name")
	RestMessage<List<LmsTmsZoneDTO>> getLmsTmsZoneByNameExecute(@RequestBody LmsTmsZoneQueryVO lmstmszonequeryvo);

	/**
	 * 车辆资料弹窗
	 * 
	 * @param vehiclePopupVO
	 * @return
	 */
	@PostMapping("/vehicle/popup")
	RestMessage<Page<VehiclePopupDTO>> popupVehicleExecute(@RequestBody VehiclePopupVO vehiclePopupVO);

	/**
	 * 货主接口转TMS
	 *
	 * @param intfCargoOwnerSaveVOs
	 * @return
	 */
	@PostMapping("/cargo_owner/save/interface")
	RestMessage<List<IntfErrorLogDTO>> saveCargoOwnerInterfaceExecute(@RequestBody List<IntfCargoOwnerSaveVO> intfCargoOwnerSaveVOs);

	/**
	 * 收货方查看
	 * 
	 * @param id
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/viewCustomerReceiver")
	RestMessage<TmsBaseCustomerReceiverNewDTO> viewCustomerReceiver(@RequestParam(value = "id") Long id);

	/**
	 * 发货方查看
	 * 
	 * @param providerShipperCheckVO
	 * @return
	 */
	@PostMapping("/provider/check_shipper")
	RestMessage<ProviderShipperCheckDTO> getShipperExecute(@RequestBody ProviderShipperCheckVO providerShipperCheckVO);

	/**
	 * 所有行政区域
	 * 
	 * @return
	 */
	@GetMapping("/zone/getAllZoneMin")
	RestMessage<List<LmsTmsZoneMinDTO>> getAllZoneMin();

	/**
	 * 货主资料分页查询
	 * 
	 * @param vo
	 * @return
	 */
	@PostMapping("/cargo_owner/paging_query")
	RestMessage<Page<CargoOwnerPageDTO>> pageCargoOwnerExecute(@RequestBody CargoOwnerPageVO vo);

	/**
	 * 商品资料分页查询
	 * 
	 * @param vo
	 * @return
	 */
	@PostMapping("/item/paging_query")
	RestMessage<Page<ItemPagingQueryDTO>> pageItemExecute(@RequestBody ItemPagingQueryVO vo);

	/**
	 * 仓库分页查询
	 * 
	 * @param vo
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/queryBranch")
	RestMessage<Page<TmsBaseBranchDTO>> queryBranch(@RequestBody TmsBaseBranchQueryVO vo);

	/**
	 * 更新仓库经纬度
	 *
	 * @param vo
	 * @return
	 */
	@PostMapping("/tmsBaseBranch/updateBranchLatitudeAndLongitude")
	RestMessage<Object> updateBranchLatitudeAndLongitude(@RequestBody UpdateLatitudeAndLongitudeVO vo);

	/**
	 * 更新收货方经纬度
	 *
	 * @param vo
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/updateConsigneeLatitudeAndLongitude")
	RestMessage<Object> updateConsigneeLatitudeAndLongitude(@RequestBody UpdateLatitudeAndLongitudeVO vo);

	/**
	 * 更新发货方经纬度
	 *
	 * @param vo
	 * @return
	 */
	@PostMapping("/provider/updateShipperLatitudeAndLongitude")
	RestMessage<Object> updateShipperLatitudeAndLongitude(@RequestBody UpdateLatitudeAndLongitudeVO vo);

	@PostMapping("/refdata/dtl/list-by-name")
	RestMessage<List<SysRefdatadModel>> getSysRefdatadByName(@RequestBody SysRefdatadSearchVO sysRefdatadSearchVO);

	/**
	 * 根据客户名称查询客户资料
	 *
	 * @param customerByEncodingNameVO
	 * @return
	 */
	@PostMapping("/tmsBaseCustomer/by_name")
	RestMessage<CustomerByEncodingNameDTO> getCustomerByNameExecute(@RequestBody CustomerByEncodingNameVO customerByEncodingNameVO);

	@PostMapping("/provider/by_name")
	RestMessage<ProviderCheckDTO> getProviderByNameExecute(@RequestBody ProviderCheckVO providerCheckVO);

	@ApiOperation(value = "根据货主名称返回货主资料", notes = "根据货主名称返回货主资料")
	@PostMapping("/cargo_owner/by_name")
	RestMessage<CargoOwnerCheckDTO> getCargoOwnerByNameExecute(@RequestBody CargoOwnerCheckVO cargoOwnerCheckVO);

	@PostMapping("/item/by_name")
	RestMessage<ItemCheckDTO> getItemByNameExecute(@RequestBody ItemCheckVO itemCheckVO);

	@ApiOperation(value = "根据商品品类名称查看商品品类资料", notes = "根据商品品类名称查看商品品类资料")
	@PostMapping("/item_category/by_name")
	RestMessage<ItemCategoryCheckDTO> getItemCategoryByNameExecute(@RequestBody ItemCategoryCheckVO itemCategoryCheckVO);

	@ApiOperation(value = "根据车型名称查看车型资料", notes = "根据车型名称查看车型资料")
	@PostMapping("/vehicle_type/by_name")
	RestMessage<VehicleTypeCheckDTO> getVehicleTypeByNameExecute(@RequestBody VehicleTypeCheckVO vehicleTypeCheckVO);

	@ApiOperation(value = "线路-收货方关联表查询", notes = "线路-收货方关联表查询")
	@PostMapping("/line/line_consignee")
	RestMessage<List<LineShipperConsigneeDTO>> queryLineConsignee(@RequestBody List<Long> lineIds);

	@ApiOperation(value = "根据主键查询模板详情", notes = "根据主键查询模板详情")
	@PostMapping("/sysimport/templet/templateDetail")
	RestMessage<List<StandardTemplateDetailsListDTO>> templateDetail(@RequestParam("templateId") String templateId);

	@ApiOperation(value = "站点距离查询", notes = "站点距离查询")
	@PostMapping("/station/query_distance")
	RestMessage<List<StationDistanceDTO>> queryStationDistanceExecute(@RequestBody List<StationDistanceVO> vos);

	@PostMapping("/carrier/check")
	RestMessage<CarrierCheckDTO> getCarrierExecute(@RequestParam(value = "id") Long id);

	/**
	 * findContainerByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/container/findByIdList")
	RestMessage<List<ContainerDTO>> findContainerByIdList(@RequestBody List<Long> idList);

	@PostMapping("/line/view_by_name")
	RestMessage<TmsBaseTranslineViewDTO> viewLineByName(@RequestBody TmsBaseTranslineVO vo);

	@PostMapping("/station/view_by_name")
	RestMessage<StationViewDTO> viewStationByNameExecute(@RequestBody StationQueryVO vo);


	/**
	 * findVehicleByPlateNumberList
	 * @param plateNumberList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findVehicleByPlateNumberList")
	RestMessage<List<VehicleDTO>> findVehicleByPlateNumberList(@RequestBody List<String> plateNumberList);

	/**
	 * findVehicleByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findVehicleByIdList")
	RestMessage<List<VehicleDTO>> findVehicleByIdList(@RequestBody List<Long> idList);

	/**
	 * findVehicleTypeByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findVehicleTypeByIdList")
	RestMessage<List<VehicleTypeDTO>> findVehicleTypeByIdList(@RequestBody List<Long> idList);

	/**
	 * findBranchByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findBranchByIdList")
	RestMessage<List<BranchDTO>> findBranchByIdList(@RequestBody List<Long> idList);

	/**
	 * findCustomerByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findCustomerByIdList")
	RestMessage<List<CustomerDTO>> findCustomerByIdList(@RequestBody List<Long> idList);

	/**
	 * findConsigneeByIdList
	 * @param idList
	 * @return
	 */
	@PostMapping("/intelligentVehicle/findConsigneeByIdList")
	RestMessage<List<ConsigneeDTO>> findConsigneeByIdList(@RequestBody List<Long> idList);

	@PostMapping("/driver/getDriverForCrriersAutoDis")
	RestMessage<DriverPopupDTO> getDriverForCarriersAutoDis(@RequestBody DriverPopupVO driverPopupVO);

	/**
	 * 根据承运商编码名称查询承运商
	 * 
	 * @param carriersByEncodingNameVO
	 * @return
	 */
	@PostMapping("/carrier/byEncodingName")
	RestMessage<CarriersByEncodingNameDTO> getCarriersByEncodingNameExecute(@RequestBody CarriersByEncodingNameVO carriersByEncodingNameVO);
}
