mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-07-01 04:28:02 +08:00
Merge branch 'dev-new' into dev
This commit is contained in:
@@ -14,7 +14,6 @@ import com.jsowell.common.response.RestApiResponse;
|
|||||||
import com.jsowell.common.util.StringUtils;
|
import com.jsowell.common.util.StringUtils;
|
||||||
import com.jsowell.common.util.poi.ExcelUtil;
|
import com.jsowell.common.util.poi.ExcelUtil;
|
||||||
import com.jsowell.pile.domain.PileStationInfo;
|
import com.jsowell.pile.domain.PileStationInfo;
|
||||||
import com.jsowell.pile.domain.ThirdPartySettingInfo;
|
|
||||||
import com.jsowell.pile.domain.ThirdpartyParkingConfig;
|
import com.jsowell.pile.domain.ThirdpartyParkingConfig;
|
||||||
import com.jsowell.pile.dto.FastCreateStationDTO;
|
import com.jsowell.pile.dto.FastCreateStationDTO;
|
||||||
import com.jsowell.pile.dto.PushStationInfoDTO;
|
import com.jsowell.pile.dto.PushStationInfoDTO;
|
||||||
@@ -48,74 +47,74 @@ import java.util.stream.Collectors;
|
|||||||
@RestController
|
@RestController
|
||||||
@RequestMapping("/pile/station")
|
@RequestMapping("/pile/station")
|
||||||
public class PileStationInfoController extends BaseController {
|
public class PileStationInfoController extends BaseController {
|
||||||
@Autowired
|
@Autowired
|
||||||
private PileStationInfoService pileStationInfoService;
|
private PileStationInfoService pileStationInfoService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PileService pileService;
|
private PileService pileService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ThirdPartySettingInfoService thirdPartySettingInfoService;
|
private ThirdPartySettingInfoService thirdPartySettingInfoService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private CommonService commonService;
|
private CommonService commonService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private AMapService aMapService;
|
private AMapService aMapService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ThirdPartyStationRelationService thirdPartyStationRelationService;
|
private ThirdPartyStationRelationService thirdPartyStationRelationService;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private ThirdPartyParkingConfigService parkingConfigService;
|
private ThirdPartyParkingConfigService parkingConfigService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询充电站信息列表NEW
|
* 查询充电站信息列表NEW
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo list(QueryStationDTO queryStationDTO) {
|
public TableDataInfo list(QueryStationDTO queryStationDTO) {
|
||||||
startPage();
|
startPage();
|
||||||
// List<PileStationInfo> list = pileStationInfoService.selectPileStationInfoList(pileStationInfo);
|
// List<PileStationInfo> list = pileStationInfoService.selectPileStationInfoList(pileStationInfo);
|
||||||
List<PileStationVO> list = pileStationInfoService.queryStationInfos(queryStationDTO);
|
List<PileStationVO> list = pileStationInfoService.queryStationInfos(queryStationDTO);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询充电站下拉列表
|
* 查询充电站下拉列表
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
||||||
@GetMapping("/StationSelectList")
|
@GetMapping("/StationSelectList")
|
||||||
public TableDataInfo getStationSelectList(QueryStationDTO dto) {
|
public TableDataInfo getStationSelectList(QueryStationDTO dto) {
|
||||||
logger.info("dto:{}", JSON.toJSONString(dto));
|
logger.info("dto:{}", JSON.toJSONString(dto));
|
||||||
startPage();
|
startPage();
|
||||||
List<PileStationVO> list = pileStationInfoService.getStationSelectList(dto);
|
List<PileStationVO> list = pileStationInfoService.getStationSelectList(dto);
|
||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 快速建站接口
|
* 快速建站接口
|
||||||
*/
|
*/
|
||||||
// @PreAuthorize("@ss.hasPermi('pile:station:add')")
|
// @PreAuthorize("@ss.hasPermi('pile:station:add')")
|
||||||
@PostMapping("/fastCreateStation")
|
@PostMapping("/fastCreateStation")
|
||||||
public AjaxResult fastCreateStation(@RequestBody FastCreateStationDTO dto) {
|
public AjaxResult fastCreateStation(@RequestBody FastCreateStationDTO dto) {
|
||||||
logger.info("快速建站接口 param:{}", JSON.toJSONString(dto));
|
logger.info("快速建站接口 param:{}", JSON.toJSONString(dto));
|
||||||
int i = 0;
|
int i = 0;
|
||||||
try {
|
try {
|
||||||
i = pileStationInfoService.fastCreateStation(dto);
|
i = pileStationInfoService.fastCreateStation(dto);
|
||||||
} catch (BusinessException e) {
|
} catch (BusinessException e) {
|
||||||
logger.warn("快速建站接口 warn", e);
|
logger.warn("快速建站接口 warn", e);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
logger.error("快速建站接口 error", e);
|
logger.error("快速建站接口 error", e);
|
||||||
}
|
}
|
||||||
return toAjax(i);
|
return toAjax(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询充电站信息列表
|
* 查询充电站信息列表
|
||||||
*/
|
*/
|
||||||
/*@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
/*@PreAuthorize("@ss.hasPermi('pile:station:list')")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo list(PileStationInfo pileStationInfo) {
|
public TableDataInfo list(PileStationInfo pileStationInfo) {
|
||||||
@@ -124,272 +123,278 @@ public class PileStationInfoController extends BaseController {
|
|||||||
return getDataTable(list);
|
return getDataTable(list);
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出充电站信息列表
|
* 导出充电站信息列表
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:export')")
|
@PreAuthorize("@ss.hasPermi('pile:station:export')")
|
||||||
@Log(title = "充电站信息", businessType = BusinessType.EXPORT)
|
@Log(title = "充电站信息", businessType = BusinessType.EXPORT)
|
||||||
@PostMapping("/export")
|
@PostMapping("/export")
|
||||||
public void export(HttpServletResponse response, PileStationInfo pileStationInfo) {
|
public void export(HttpServletResponse response, PileStationInfo pileStationInfo) {
|
||||||
List<PileStationInfo> list = pileStationInfoService.selectPileStationInfoList(pileStationInfo);
|
List<PileStationInfo> list = pileStationInfoService.selectPileStationInfoList(pileStationInfo);
|
||||||
ExcelUtil<PileStationInfo> util = new ExcelUtil<PileStationInfo>(PileStationInfo.class);
|
ExcelUtil<PileStationInfo> util = new ExcelUtil<PileStationInfo>(PileStationInfo.class);
|
||||||
util.exportExcel(response, list, "充电站信息数据");
|
util.exportExcel(response, list, "充电站信息数据");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取充电站信息详细信息
|
* 获取充电站信息详细信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
||||||
@GetMapping(value = "/{id}")
|
@GetMapping(value = "/{id}")
|
||||||
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
public AjaxResult getInfo(@PathVariable("id") Long id) {
|
||||||
return AjaxResult.success(pileStationInfoService.selectPileStationInfoById(id));
|
return AjaxResult.success(pileStationInfoService.selectPileStationInfoById(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 后管站点基本资料页面
|
* 后管站点基本资料页面
|
||||||
* @return
|
*
|
||||||
*/
|
* @return
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
*/
|
||||||
@GetMapping(value = "/getStationInfo/{stationId}")
|
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
||||||
public AjaxResult getStationInfo(@PathVariable("stationId") String stationId) {
|
@GetMapping(value = "/getStationInfo/{stationId}")
|
||||||
return AjaxResult.success(pileStationInfoService.getStationInfo(stationId));
|
public AjaxResult getStationInfo(@PathVariable("stationId") String stationId) {
|
||||||
}
|
return AjaxResult.success(pileStationInfoService.getStationInfo(stationId));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增充电站信息
|
* 新增充电站信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:add')")
|
@PreAuthorize("@ss.hasPermi('pile:station:add')")
|
||||||
@Log(title = "充电站信息", businessType = BusinessType.INSERT)
|
@Log(title = "充电站信息", businessType = BusinessType.INSERT)
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public AjaxResult add(@RequestBody PileStationInfo pileStationInfo) {
|
public AjaxResult add(@RequestBody PileStationInfo pileStationInfo) {
|
||||||
return toAjax(pileStationInfoService.insertPileStationInfo(pileStationInfo));
|
return toAjax(pileStationInfoService.insertPileStationInfo(pileStationInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改充电站信息
|
* 修改充电站信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
||||||
@Log(title = "充电站信息", businessType = BusinessType.UPDATE)
|
@Log(title = "充电站信息", businessType = BusinessType.UPDATE)
|
||||||
@PutMapping
|
@PutMapping
|
||||||
public AjaxResult edit(@RequestBody PileStationInfo pileStationInfo) {
|
public AjaxResult edit(@RequestBody PileStationInfo pileStationInfo) {
|
||||||
logger.info("修改充电站信息 param:{}", pileStationInfo.toString());
|
logger.info("修改充电站信息 param:{}", pileStationInfo.toString());
|
||||||
return toAjax(pileStationInfoService.updatePileStationInfo(pileStationInfo));
|
return toAjax(pileStationInfoService.updatePileStationInfo(pileStationInfo));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改对接高德标识
|
* 修改对接高德标识
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
||||||
@Log(title = "修改对接高德标识", businessType = BusinessType.UPDATE)
|
@Log(title = "修改对接高德标识", businessType = BusinessType.UPDATE)
|
||||||
@PostMapping("/editAmapFlag")
|
@PostMapping("/editAmapFlag")
|
||||||
public AjaxResult editAmapFlag(@RequestBody EditAmapFlagDTO dto) {
|
public AjaxResult editAmapFlag(@RequestBody EditAmapFlagDTO dto) {
|
||||||
logger.info("修改对接高德标识 param:{}", JSON.toJSONString(dto));
|
logger.info("修改对接高德标识 param:{}", JSON.toJSONString(dto));
|
||||||
return toAjax(pileStationInfoService.updateAmapFlag(dto.getStationId(), dto.getAmapFlag()));
|
return toAjax(pileStationInfoService.updateAmapFlag(dto.getStationId(), dto.getAmapFlag()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 高德地图商家推送静态信息状态
|
* 高德地图商家推送静态信息状态
|
||||||
* @param dto
|
*
|
||||||
* @return
|
* @param dto
|
||||||
*/
|
* @return
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
*/
|
||||||
@PostMapping("/pushAMapStationStatus")
|
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
||||||
public RestApiResponse<?> pushAMapStationStatus(EditAmapFlagDTO dto) {
|
@PostMapping("/pushAMapStationStatus")
|
||||||
RestApiResponse<?> response = null;
|
public RestApiResponse<?> pushAMapStationStatus(EditAmapFlagDTO dto) {
|
||||||
try {
|
RestApiResponse<?> response = null;
|
||||||
String result = aMapService.pushStationInfo(Lists.newArrayList(dto.getStationId()), dto.getAmapFlag());
|
try {
|
||||||
response = new RestApiResponse<>(result);
|
String result = aMapService.pushStationInfo(Lists.newArrayList(dto.getStationId()), dto.getAmapFlag());
|
||||||
} catch (Exception e) {
|
response = new RestApiResponse<>(result);
|
||||||
logger.error("高德地图商家推送静态信息状态 error", e);
|
} catch (Exception e) {
|
||||||
response = new RestApiResponse<>(e);
|
logger.error("高德地图商家推送静态信息状态 error", e);
|
||||||
}
|
response = new RestApiResponse<>(e);
|
||||||
logger.info("高德地图商家推送静态信息状态 result:{}", response);
|
}
|
||||||
return response;
|
logger.info("高德地图商家推送静态信息状态 result:{}", response);
|
||||||
}
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除充电站信息
|
* 删除充电站信息
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:remove')")
|
@PreAuthorize("@ss.hasPermi('pile:station:remove')")
|
||||||
@Log(title = "充电站信息", businessType = BusinessType.DELETE)
|
@Log(title = "充电站信息", businessType = BusinessType.DELETE)
|
||||||
@DeleteMapping("/{ids}")
|
@DeleteMapping("/{ids}")
|
||||||
public AjaxResult remove(@PathVariable Long[] ids) {
|
public AjaxResult remove(@PathVariable Long[] ids) {
|
||||||
return toAjax(pileStationInfoService.deletePileStationInfoByIds(ids));
|
return toAjax(pileStationInfoService.deletePileStationInfoByIds(ids));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据运营商id获取充电站列表
|
* 根据运营商id获取充电站列表
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
||||||
@PostMapping(value = "/selectStationListByMerchantId")
|
@PostMapping(value = "/selectStationListByMerchantId")
|
||||||
public AjaxResult selectStationListByMerchantId(@RequestBody QueryStationDTO dto) {
|
public AjaxResult selectStationListByMerchantId(@RequestBody QueryStationDTO dto) {
|
||||||
return AjaxResult.success(pileStationInfoService.selectStationListByMerchantIdWithAuth(Long.valueOf(dto.getMerchantId())));
|
return AjaxResult.success(pileStationInfoService.selectStationListByMerchantIdWithAuth(Long.valueOf(dto.getMerchantId())));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改站点二维码前缀
|
* 修改站点二维码前缀
|
||||||
* @param dto
|
*
|
||||||
* @return
|
* @param dto
|
||||||
*/
|
* @return
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
*/
|
||||||
@PostMapping("/updateStationQRCodePrefix")
|
@PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
||||||
public AjaxResult updateStationQRCodePrefix(@RequestBody QueryStationDTO dto) {
|
@PostMapping("/updateStationQRCodePrefix")
|
||||||
// 校验入参
|
public AjaxResult updateStationQRCodePrefix(@RequestBody QueryStationDTO dto) {
|
||||||
if (StringUtils.isBlank(dto.getStationId()) || StringUtils.isBlank(dto.getQrcodePrefix())) {
|
// 校验入参
|
||||||
return AjaxResult.error(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR.getValue());
|
if (StringUtils.isBlank(dto.getStationId()) || StringUtils.isBlank(dto.getQrcodePrefix())) {
|
||||||
}
|
return AjaxResult.error(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR.getValue());
|
||||||
return AjaxResult.success(pileService.updateStationQRCodePrefix(dto));
|
}
|
||||||
}
|
return AjaxResult.success(pileService.updateStationQRCodePrefix(dto));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询站点互联互通配置
|
* 查询站点互联互通配置
|
||||||
* @param id
|
*
|
||||||
* @return
|
* @param id
|
||||||
*/
|
* @return
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
*/
|
||||||
@GetMapping("/getRelationByStationId/{stationId}")
|
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
||||||
public TableDataInfo getSettingByStationId(@PathVariable("stationId") Long id) {
|
@GetMapping("/getRelationByStationId/{stationId}")
|
||||||
List<ThirdPartyStationRelationVO> list = thirdPartyStationRelationService.getRelationInfoList(String.valueOf(id));
|
public TableDataInfo getSettingByStationId(@PathVariable("stationId") Long id) {
|
||||||
for (ThirdPartyStationRelationVO vo : list) {
|
List<ThirdPartyStationRelationVO> list = thirdPartyStationRelationService.getRelationInfoList(String.valueOf(id));
|
||||||
vo.setThirdPartyType(ThirdPlatformTypeEnum.getTypeLabelByTypeCode(vo.getThirdPartyType()));
|
for (ThirdPartyStationRelationVO vo : list) {
|
||||||
}
|
vo.setThirdPartyType(ThirdPlatformTypeEnum.getTypeLabelByTypeCode(vo.getThirdPartyType()));
|
||||||
return getDataTable(list);
|
}
|
||||||
}
|
return getDataTable(list);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询第三方平台配置信息
|
* 查询第三方平台配置信息
|
||||||
* @param info
|
* @param info
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PreAuthorize("@ss.hasPermi('pile:station:query')")
|
// @PreAuthorize("@ss.hasPermi('pile:station:query')")
|
||||||
@PostMapping("/getSettingInfo")
|
// @PostMapping("/getSettingInfo")
|
||||||
public TableDataInfo getSettingInfo(@RequestBody ThirdPartySettingInfo info) {
|
// public TableDataInfo getSettingInfo(@RequestBody ThirdPartySettingInfo info) {
|
||||||
List<ThirdPartySettingInfo> infos = thirdPartySettingInfoService.selectThirdPartySettingInfoList(info);
|
// List<ThirdPartySettingInfo> infos = thirdPartySettingInfoService.selectThirdPartySettingInfoList(info);
|
||||||
return getDataTable(infos);
|
// return getDataTable(infos);
|
||||||
// return AjaxResult.success(thirdPartySettingInfoService.selectSettingInfo(info));
|
// // return AjaxResult.success(thirdPartySettingInfoService.selectSettingInfo(info));
|
||||||
}
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改站点互联互通配置信息
|
* 修改站点互联互通配置信息
|
||||||
* @param info
|
* @param info
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
// @PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
// @PreAuthorize("@ss.hasPermi('pile:station:edit')")
|
||||||
// @PostMapping("/updateSettingByStationId")
|
// @PostMapping("/updateSettingByStationId")
|
||||||
// public AjaxResult updateSettingByStationId(@RequestBody ThirdPartySettingInfo info) {
|
// public AjaxResult updateSettingByStationId(@RequestBody ThirdPartySettingInfo info) {
|
||||||
// return AjaxResult.success(thirdPartySettingInfoService.updateStationSettingInfo(info));
|
// return AjaxResult.success(thirdPartySettingInfoService.updateStationSettingInfo(info));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增站点互联互通配置信息
|
* 新增站点互联互通配置信息
|
||||||
* @param info
|
* @param info
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
// @PreAuthorize("@ss.hasPermi('pile:station:add')")
|
// @PreAuthorize("@ss.hasPermi('pile:station:add')")
|
||||||
// @PostMapping("/insertSettingInfo")
|
// @PostMapping("/insertSettingInfo")
|
||||||
// public AjaxResult insertSettingInfo(ThirdPartySettingInfo info) {
|
// public AjaxResult insertSettingInfo(ThirdPartySettingInfo info) {
|
||||||
// return AjaxResult.success(thirdPartySettingInfoService.insertThirdPartySettingInfo(info));
|
// return AjaxResult.success(thirdPartySettingInfoService.insertThirdPartySettingInfo(info));
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 推送充电站信息 notification_stationInfo
|
||||||
|
* http://localhost:8080/LianLian/pushStationInfo
|
||||||
|
*
|
||||||
|
* @param dto
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@PostMapping("/pushStationInfo")
|
||||||
|
public RestApiResponse<?> pushStationInfo(@RequestBody PushStationInfoDTO dto) {
|
||||||
|
logger.info("推送第三方平台充电站信息 params:{}", JSON.toJSONString(dto));
|
||||||
|
RestApiResponse<?> response = null;
|
||||||
|
Long stationId = dto.getStationId();
|
||||||
|
List<String> types = dto.getThirdPartyTypes();
|
||||||
|
// 先查到该站点推送过的类型
|
||||||
|
List<ThirdPartyStationRelationVO> infoList = thirdPartyStationRelationService.getRelationInfoList(String.valueOf(stationId));
|
||||||
|
List<String> typeList = infoList.stream()
|
||||||
|
.map(ThirdPartyStationRelationVO::getThirdPartyType)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
// 对types去重,可获取到需要新推送的第三方平台类型
|
||||||
|
types.removeAll(typeList);
|
||||||
|
dto.setThirdPartyTypes(types);
|
||||||
|
try {
|
||||||
|
if (StringUtils.isBlank(String.valueOf(stationId))) {
|
||||||
|
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
|
||||||
|
}
|
||||||
|
String result = commonService.commonPushStation(dto);
|
||||||
|
response = new RestApiResponse<>(result);
|
||||||
|
} catch (BusinessException e) {
|
||||||
|
logger.error("推送第三方平台充电站信息 error", e);
|
||||||
|
response = new RestApiResponse<>(e.getCode(), e.getMessage());
|
||||||
|
} catch (Exception e) {
|
||||||
|
logger.error("推送第三方平台充电站信息 error", e);
|
||||||
|
response = new RestApiResponse<>("推送失败,请联系管理员");
|
||||||
|
// 有报错,所有的都必须删除
|
||||||
|
thirdPartyStationRelationService.updateRelationDelFlag(String.valueOf(stationId), types);
|
||||||
|
}
|
||||||
|
logger.info("推送第三方平台充电站信息 result:{}", response);
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 推送充电站信息 notification_stationInfo
|
* 绑定停车平台(停车充电下发优惠券)
|
||||||
* http://localhost:8080/LianLian/pushStationInfo
|
*
|
||||||
* @param dto
|
* @param dto
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/pushStationInfo")
|
@PostMapping("/bindParkingPlatform")
|
||||||
public RestApiResponse<?> pushStationInfo(@RequestBody PushStationInfoDTO dto) {
|
public RestApiResponse<?> bindParkingPlatform(@RequestBody BindParkingPlatformDTO dto) {
|
||||||
logger.info("推送第三方平台充电站信息 params:{}", JSON.toJSONString(dto));
|
logger.info("绑定停车平台 params:{}", JSON.toJSONString(dto));
|
||||||
RestApiResponse<?> response = null;
|
RestApiResponse<?> response = null;
|
||||||
Long stationId = dto.getStationId();
|
try {
|
||||||
List<String> types = dto.getThirdPartyTypes();
|
int i = pileStationInfoService.bindParkingPlatform(dto);
|
||||||
// 先查到该站点推送过的类型
|
response = new RestApiResponse<>(i);
|
||||||
List<ThirdPartyStationRelationVO> infoList = thirdPartyStationRelationService.getRelationInfoList(String.valueOf(stationId));
|
} catch (BusinessException e) {
|
||||||
List<String> typeList = infoList.stream()
|
logger.error("绑定停车平台 error,", e);
|
||||||
.map(ThirdPartyStationRelationVO::getThirdPartyType)
|
response = new RestApiResponse<>(e.getCode(), e.getMessage());
|
||||||
.collect(Collectors.toList());
|
} catch (Exception e) {
|
||||||
// 对types去重,可获取到需要新推送的第三方平台类型
|
logger.error("绑定停车平台 error", e);
|
||||||
types.removeAll(typeList);
|
response = new RestApiResponse<>(e);
|
||||||
dto.setThirdPartyTypes(types);
|
}
|
||||||
try {
|
logger.info("绑定停车平台 result:{}", response);
|
||||||
if (StringUtils.isBlank(String.valueOf(stationId))) {
|
return response;
|
||||||
throw new BusinessException(ReturnCodeEnum.CODE_PARAM_NOT_NULL_ERROR);
|
}
|
||||||
}
|
|
||||||
String result = commonService.commonPushStation(dto);
|
|
||||||
response = new RestApiResponse<>(result);
|
|
||||||
}catch (BusinessException e) {
|
|
||||||
logger.error("推送第三方平台充电站信息 error",e);
|
|
||||||
response = new RestApiResponse<>(e.getCode(), e.getMessage());
|
|
||||||
}catch (Exception e) {
|
|
||||||
logger.error("推送第三方平台充电站信息 error", e);
|
|
||||||
response = new RestApiResponse<>("推送失败,请联系管理员");
|
|
||||||
// 有报错,所有的都必须删除
|
|
||||||
thirdPartyStationRelationService.updateRelationDelFlag(String.valueOf(stationId), types);
|
|
||||||
}
|
|
||||||
logger.info("推送第三方平台充电站信息 result:{}", response);
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绑定停车平台(停车充电下发优惠券)
|
* 获取停车平台列表
|
||||||
* @param dto
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("/bindParkingPlatform")
|
@GetMapping("/getParkingInfoList")
|
||||||
public RestApiResponse<?> bindParkingPlatform(@RequestBody BindParkingPlatformDTO dto) {
|
public RestApiResponse<?> getParkingInfoList() {
|
||||||
logger.info("绑定停车平台 params:{}", JSON.toJSONString(dto));
|
// logger.info("获取停车平台列表");
|
||||||
RestApiResponse<?> response = null;
|
RestApiResponse<?> response = null;
|
||||||
try {
|
try {
|
||||||
int i = pileStationInfoService.bindParkingPlatform(dto);
|
startPage();
|
||||||
response = new RestApiResponse<>(i);
|
List<ThirdpartyParkingConfig> list = parkingConfigService.selectInfoList();
|
||||||
}catch (BusinessException e) {
|
response = new RestApiResponse<>(list);
|
||||||
logger.error("绑定停车平台 error,", e);
|
} catch (Exception e) {
|
||||||
response = new RestApiResponse<>(e.getCode(), e.getMessage());
|
logger.error("获取停车平台列表 error,", e);
|
||||||
} catch (Exception e) {
|
response = new RestApiResponse<>(e);
|
||||||
logger.error("绑定停车平台 error", e);
|
}
|
||||||
response = new RestApiResponse<>(e);
|
logger.info("获取停车平台列表 result:{}", response);
|
||||||
}
|
return response;
|
||||||
logger.info("绑定停车平台 result:{}", response);
|
}
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取停车平台列表
|
* 更新站点与第三方平台关系
|
||||||
* @return
|
*/
|
||||||
*/
|
@PostMapping("/updateThirdPartyStationRelation")
|
||||||
@GetMapping("/getParkingInfoList")
|
public AjaxResult updateThirdPartyStationRelation(@RequestBody ThirdPartyStationRelationDTO dto) {
|
||||||
public RestApiResponse<?> getParkingInfoList() {
|
AjaxResult result;
|
||||||
// logger.info("获取停车平台列表");
|
try {
|
||||||
RestApiResponse<?> response = null;
|
// startPage();
|
||||||
try {
|
thirdPartyStationRelationService.updateThirdPartyStationRelation(dto);
|
||||||
startPage();
|
result = AjaxResult.success();
|
||||||
List<ThirdpartyParkingConfig> list = parkingConfigService.selectInfoList();
|
} catch (Exception e) {
|
||||||
response = new RestApiResponse<>(list);
|
logger.error("更新站点与第三方平台关系error,", e);
|
||||||
} catch (Exception e) {
|
result = AjaxResult.error(e.getMessage());
|
||||||
logger.error("获取停车平台列表 error,", e);
|
}
|
||||||
response = new RestApiResponse<>(e);
|
return result;
|
||||||
}
|
}
|
||||||
logger.info("获取停车平台列表 result:{}", response);
|
|
||||||
return response;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 更新站点与第三方平台关系
|
|
||||||
*/
|
|
||||||
@PostMapping("/updateThirdPartyStationRelation")
|
|
||||||
public AjaxResult updateThirdPartyStationRelation(@RequestBody ThirdPartyStationRelationDTO dto) {
|
|
||||||
AjaxResult result;
|
|
||||||
try {
|
|
||||||
// startPage();
|
|
||||||
thirdPartyStationRelationService.updateThirdPartyStationRelation(dto);
|
|
||||||
result = AjaxResult.success();
|
|
||||||
} catch (Exception e) {
|
|
||||||
logger.error("更新站点与第三方平台关系error,", e);
|
|
||||||
result = AjaxResult.error(e.getMessage());
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.jsowell.common.core.domain.parking;
|
|||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -38,4 +39,13 @@ public class ParkingCommonParam {
|
|||||||
* 请求签名
|
* 请求签名
|
||||||
*/
|
*/
|
||||||
private String sign;
|
private String sign;
|
||||||
|
|
||||||
|
public Map<String, String> getPublicParams() {
|
||||||
|
Map<String, String> publicParams = new HashMap<>();
|
||||||
|
publicParams.put("service", service);
|
||||||
|
publicParams.put("version", version);
|
||||||
|
publicParams.put("msgId", msgId);
|
||||||
|
publicParams.put("orgId", orgId);
|
||||||
|
return publicParams;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.jsowell.common.util;
|
package com.jsowell.common.util;
|
||||||
|
|
||||||
|
import com.jsowell.common.core.domain.parking.ParkingCommonParam;
|
||||||
import com.jsowell.common.util.sign.MD5Util;
|
import com.jsowell.common.util.sign.MD5Util;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -35,6 +36,14 @@ public class ParkingUtil {
|
|||||||
return MD5Util.MD5Encode(stringC).toLowerCase();
|
return MD5Util.MD5Encode(stringC).toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置sign
|
||||||
|
*/
|
||||||
|
public static void generateAndSetSign(ParkingCommonParam param, String secretKey) {
|
||||||
|
String sign = generateSign(param.getPublicParams(), param.getData(), secretKey);
|
||||||
|
param.setSign(sign);
|
||||||
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
// 模拟公共请求参数
|
// 模拟公共请求参数
|
||||||
Map<String, String> publicParams = new HashMap<>();
|
Map<String, String> publicParams = new HashMap<>();
|
||||||
|
|||||||
@@ -57,7 +57,8 @@
|
|||||||
"vue-qr": "^4.0.9",
|
"vue-qr": "^4.0.9",
|
||||||
"vue-router": "3.4.9",
|
"vue-router": "3.4.9",
|
||||||
"vuedraggable": "2.24.3",
|
"vuedraggable": "2.24.3",
|
||||||
"vuex": "3.6.0"
|
"vuex": "3.6.0",
|
||||||
|
"xlsx": "^0.18.5"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "4.4.6",
|
"@vue/cli-plugin-babel": "4.4.6",
|
||||||
|
|||||||
@@ -121,14 +121,6 @@ export function getRelationByStationId(id) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询站点互联互通配置
|
|
||||||
export function getSettingInfo(data) {
|
|
||||||
return request({
|
|
||||||
url: "/pile/station/getSettingInfo",
|
|
||||||
method: "post",
|
|
||||||
data: data,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 修改站点互联互通配置
|
// 修改站点互联互通配置
|
||||||
export function updateSettingByStationId(data) {
|
export function updateSettingByStationId(data) {
|
||||||
|
|||||||
@@ -1,35 +1,70 @@
|
|||||||
|
import * as XLSX from 'xlsx';
|
||||||
|
import { saveAs } from 'file-saver';
|
||||||
|
|
||||||
export function barDataView(titleName, fileName) {
|
export function barDataView(titleName, fileName) {
|
||||||
var dataView = {
|
var dataView = {
|
||||||
show: true,
|
show: true,
|
||||||
readOnly: false,
|
readOnly: false,
|
||||||
lang: ['数据视图', '关闭', '刷新'],
|
lang: ['数据视图', '关闭', '导出Excel'],
|
||||||
optionToContent: function(opt) {
|
optionToContent: function (opt) {
|
||||||
var axisData = opt.xAxis[0].data // 坐标数据
|
var axisData = opt.xAxis[0].data; // 坐标数据
|
||||||
var series = opt.series // 折线图数据
|
var series = opt.series; // 折线图数据
|
||||||
var tdHeads = ''
|
var tdHeads = '';
|
||||||
for (let index = 0; index < titleName.length; index++) {
|
for (let index = 0; index < titleName.length; index++) {
|
||||||
// 样式
|
tdHeads += '<td style="height:30px;text-align: center;">' + titleName[index] + '</td>';
|
||||||
tdHeads += '<td style="height:30px;text-align: center;">' + titleName[index] + '</td>'
|
|
||||||
}
|
}
|
||||||
var tdBodys = '' // 表数据
|
var tdBodys = ''; // 表数据
|
||||||
var table = '<table id="tableExcel_Day" border="1" class="table-bordered table-striped" style="width:100%;text-align:centerborder:1px solid #ccc;border-collapse:collapse;" ><tbody><tr>' + tdHeads + ' </tr>'
|
var tableId = 'tableExcel_' + new Date().getTime(); // 动态表格ID
|
||||||
// 组装表数据
|
var table = `<table id="${tableId}" border="1" class="table-bordered table-striped" style="width:100%;text-align:center;border:1px solid #ccc;border-collapse:collapse;"><tbody><tr>${tdHeads}</tr>`;
|
||||||
|
|
||||||
for (var i = 0, l = axisData.length; i < l; i++) {
|
for (var i = 0, l = axisData.length; i < l; i++) {
|
||||||
|
tdBodys = '<td style="height:30px;text-align: center;">' + axisData[i] + '</td>'; // 添加坐标轴数据
|
||||||
for (var j = 0; j < series.length; j++) {
|
for (var j = 0; j < series.length; j++) {
|
||||||
var temp = series[j].data[i]
|
var temp = series[j].data[i];
|
||||||
if (temp != null && temp !== undefined) {
|
if (temp != null && temp !== undefined) {
|
||||||
tdBodys += '<td>' + temp + '</td>'
|
tdBodys += '<td>' + temp + '</td>';
|
||||||
} else {
|
} else {
|
||||||
tdBodys += '<td></td>'
|
tdBodys += '<td></td>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 样式
|
table += '<tr>' + tdBodys + '</tr>';
|
||||||
table += '<tr style="height:30px;text-align: center;"><td >' + axisData[i] + '</td>' + tdBodys + '</tr>'
|
|
||||||
tdBodys = ''
|
|
||||||
}
|
}
|
||||||
table += '</tbody></table>'
|
table += '</tbody></table>';
|
||||||
return table
|
return table;
|
||||||
}
|
},
|
||||||
}
|
contentToOption: function (html, opt) {
|
||||||
return dataView
|
console.log('HTMLDomElement:', html); // 调试信息
|
||||||
|
if (!html || !html.tagName) {
|
||||||
|
console.error('Invalid HTML element passed to contentToOption');
|
||||||
|
return opt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取表格元素
|
||||||
|
let tableElement = html.querySelector('table');
|
||||||
|
|
||||||
|
if (!tableElement) {
|
||||||
|
console.error('Table element not found within the provided HTML element');
|
||||||
|
return opt;
|
||||||
|
}
|
||||||
|
|
||||||
|
let et = XLSX.utils.table_to_book(tableElement);
|
||||||
|
let etout = XLSX.write(et, {
|
||||||
|
bookType: "xlsx",
|
||||||
|
bookSST: true,
|
||||||
|
type: "array",
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
saveAs(
|
||||||
|
new Blob([etout], { type: "application/octet-stream" }),
|
||||||
|
`${fileName}-${new Date().toLocaleString().replace(/[:\/]/g, '-')}.xlsx`
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
console.error("Export failed:", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return opt; // 返回原始选项,因为这里没有修改图表的配置
|
||||||
|
},
|
||||||
|
};
|
||||||
|
return dataView;
|
||||||
}
|
}
|
||||||
@@ -1,61 +1,65 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="app-container">
|
<div class="app-container">
|
||||||
<h1>概况 (自2023-01-01起)</h1>
|
<h1>概况 (自2023-01-01起)</h1>
|
||||||
<hr />
|
<hr />
|
||||||
<div style="display: flex;justify-content: space-between;margin-top: 10px;flex-wrap: wrap;">
|
<div
|
||||||
<div class="box" style="background-color: #ffba00;">
|
style="
|
||||||
<el-image class="box-image" :src="require('@/assets/images/lightning.png')" />
|
display: flex;
|
||||||
<div class="flex1">
|
justify-content: space-between;
|
||||||
<div class="box-h1">{{ generalSituation.totalChargingDegree }}</div>
|
margin-top: 10px;
|
||||||
<div>总充电电量(度)</div>
|
flex-wrap: wrap;
|
||||||
</div>
|
"
|
||||||
|
>
|
||||||
</div>
|
<div class="box" style="background-color: #ffba00">
|
||||||
<div class="box" style="background-color: #c74542;">
|
<el-image class="box-image" :src="require('@/assets/images/lightning.png')" />
|
||||||
<el-image class="box-image" :src="require('@/assets/images/zongfeiyong.png')" />
|
<div class="flex1">
|
||||||
<div class="flex1">
|
<div class="box-h1">{{ generalSituation.totalChargingDegree }}</div>
|
||||||
<div class="box-h1">{{ generalSituation.totalChargingAmount }}</div>
|
<div>总充电电量(度)</div>
|
||||||
<div>总充电费用(元)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="box" style="background-color: #12ce65;">
|
|
||||||
<el-image class="box-image" :src="require('@/assets/images/dingdan.png')" />
|
|
||||||
<div class="flex1">
|
|
||||||
<div class="box-h1">{{ generalSituation.totalChargingQuantity }}</div>
|
|
||||||
<div>总充电订单数(笔)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="box" style="background-color: #909399;">
|
|
||||||
<el-image class="box-image" :src="require('@/assets/images/shebei.png')" />
|
|
||||||
<div class="flex1">
|
|
||||||
<div class="box-h1">{{ generalSituation.totalPileQuantity }}</div>
|
|
||||||
<div>总充电设备数量(座)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- <div class="box" v-hasRole="['admin', 'common']" style="background-color: #ff4949;">-->
|
|
||||||
<!-- <el-image-->
|
|
||||||
<!-- class="box-image"-->
|
|
||||||
<!-- :src="require('@/assets/images/yue.png')"-->
|
|
||||||
<!-- ></el-image>-->
|
|
||||||
<!-- <div class="flex1">-->
|
|
||||||
<!-- <div class="box-h1">{{ generalSituation.totalMemberAmount }}</div>-->
|
|
||||||
<!-- <div>总客户余额(元)</div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
<!-- </div>-->
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<h1>订单</h1>
|
</div>
|
||||||
<hr />
|
<div class="box" style="background-color: #c74542">
|
||||||
<el-button style="background-color: #1ab394; color: #ffffff">最近30天
|
<el-image class="box-image" :src="require('@/assets/images/zongfeiyong.png')" />
|
||||||
</el-button>
|
<div class="flex1">
|
||||||
<div ref="chart" :style="{ width: '100%', height: '500px' }"></div>
|
<div class="box-h1">{{ generalSituation.totalChargingAmount }}</div>
|
||||||
<hr />
|
<div>总充电费用(元)</div>
|
||||||
<!-- <h1>启动充电渠道</h1> -->
|
</div>
|
||||||
<!-- <div ref="chartDom" :style="{ width: '50%', height: '550px' }"></div> -->
|
</div>
|
||||||
<!-- <hr /> -->
|
<div class="box" style="background-color: #12ce65">
|
||||||
<!-- <hr /> -->
|
<el-image class="box-image" :src="require('@/assets/images/dingdan.png')" />
|
||||||
<!-- <h1>设备</h1> -->
|
<div class="flex1">
|
||||||
|
<div class="box-h1">{{ generalSituation.totalChargingQuantity }}</div>
|
||||||
|
<div>总充电订单数(笔)</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="box" style="background-color: #909399">
|
||||||
|
<el-image class="box-image" :src="require('@/assets/images/shebei.png')" />
|
||||||
|
<div class="flex1">
|
||||||
|
<div class="box-h1">{{ generalSituation.totalPileQuantity }}</div>
|
||||||
|
<div>总充电设备数量(座)</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<!-- <div class="box" v-hasRole="['admin', 'common']" style="background-color: #ff4949;">-->
|
||||||
|
<!-- <el-image-->
|
||||||
|
<!-- class="box-image"-->
|
||||||
|
<!-- :src="require('@/assets/images/yue.png')"-->
|
||||||
|
<!-- ></el-image>-->
|
||||||
|
<!-- <div class="flex1">-->
|
||||||
|
<!-- <div class="box-h1">{{ generalSituation.totalMemberAmount }}</div>-->
|
||||||
|
<!-- <div>总客户余额(元)</div>-->
|
||||||
|
<!-- </div>-->
|
||||||
|
<!-- </div>-->
|
||||||
</div>
|
</div>
|
||||||
|
<h1>订单</h1>
|
||||||
|
<hr />
|
||||||
|
<el-button style="background-color: #1ab394; color: #ffffff">最近30天 </el-button>
|
||||||
|
<div ref="chart" :style="{ width: '100%', height: '500px' }"></div>
|
||||||
|
<hr />
|
||||||
|
<!-- <h1>启动充电渠道</h1> -->
|
||||||
|
<!-- <div ref="chartDom" :style="{ width: '50%', height: '550px' }"></div> -->
|
||||||
|
<!-- <hr /> -->
|
||||||
|
<!-- <hr /> -->
|
||||||
|
<!-- <h1>设备</h1> -->
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import Echarts from "echarts";
|
import Echarts from "echarts";
|
||||||
@@ -63,275 +67,287 @@ import { barDataView } from "./echarts";
|
|||||||
import { getGeneralSituation, getOrderInfo } from "@/api/index";
|
import { getGeneralSituation, getOrderInfo } from "@/api/index";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
chart: null,
|
chart: null,
|
||||||
generalSituation: {},
|
generalSituation: {},
|
||||||
orderInfo: [],
|
orderInfo: [],
|
||||||
tableData: [{
|
tableData: [
|
||||||
pileSn: '9527',
|
{
|
||||||
stationName: '万车充充电桩',
|
pileSn: "9527",
|
||||||
stationAddress: '昆山市黄埔江南路',
|
stationName: "万车充充电桩",
|
||||||
type: '直流',
|
stationAddress: "昆山市黄埔江南路",
|
||||||
power: '2131',
|
type: "直流",
|
||||||
degree: '215',
|
power: "2131",
|
||||||
electricityPrice: '565',
|
degree: "215",
|
||||||
servicePrice: '9274',
|
electricityPrice: "565",
|
||||||
chargingNumber: '624',
|
servicePrice: "9274",
|
||||||
|
chargingNumber: "624",
|
||||||
}]
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}, //图表实例
|
||||||
|
created() {
|
||||||
|
this.getGeneral();
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.init();
|
||||||
|
// this.rose();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async getGeneral() {
|
||||||
|
const { obj } = await getGeneralSituation({});
|
||||||
|
console.log("首页信息", obj);
|
||||||
|
this.generalSituation = obj;
|
||||||
|
},
|
||||||
|
async getOrder() {
|
||||||
|
const { obj, resCode } = await getOrderInfo({});
|
||||||
|
console.log("订单信息", obj, resCode);
|
||||||
|
if (resCode === "00100000") {
|
||||||
|
this.orderInfo = obj;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async init() {
|
||||||
|
await this.getOrder();
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.chart = Echarts.init(this.$refs.chart);
|
||||||
|
console.log("柱状图", this.orderInfo);
|
||||||
|
let str = this.orderInfo.map((item) => {
|
||||||
|
return item.date;
|
||||||
|
});
|
||||||
|
console.log(str);
|
||||||
|
let option = {
|
||||||
|
tooltip: {
|
||||||
|
trigger: "axis",
|
||||||
|
axisPointer: {
|
||||||
|
type: "shadow",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
toolbox: {
|
||||||
|
feature: {
|
||||||
|
dataView: { show: true, readOnly: false },
|
||||||
|
magicType: { show: true, type: ["line", "bar"] },
|
||||||
|
restore: { show: true },
|
||||||
|
saveAsImage: { show: true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
legend: {
|
||||||
|
data: [
|
||||||
|
"总订单金额",
|
||||||
|
"尖时段总用电量",
|
||||||
|
"峰时段总用电量",
|
||||||
|
"平时段总用电量",
|
||||||
|
"谷时段总用电量",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
dataZoom: {
|
||||||
|
show: false,
|
||||||
|
start: 0,
|
||||||
|
end: 100,
|
||||||
|
},
|
||||||
|
grid: {
|
||||||
|
left: "3%",
|
||||||
|
right: "4%",
|
||||||
|
bottom: "3%",
|
||||||
|
containLabel: true,
|
||||||
|
},
|
||||||
|
xAxis: [
|
||||||
|
{
|
||||||
|
type: "category",
|
||||||
|
boundaryGap: true,
|
||||||
|
data: str,
|
||||||
|
axisLine: { onZero: false },
|
||||||
|
},
|
||||||
|
],
|
||||||
|
animation: true,
|
||||||
|
animationDuration: 2000,
|
||||||
|
yAxis: [
|
||||||
|
{
|
||||||
|
type: "value",
|
||||||
|
name: "电费",
|
||||||
|
position: "left",
|
||||||
|
alignTicks: true,
|
||||||
|
axisLabel: {
|
||||||
|
formatter: "{value} ¥",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type: "value",
|
||||||
|
name: "电量",
|
||||||
|
position: "right",
|
||||||
|
alignTicks: true,
|
||||||
|
axisLabel: {
|
||||||
|
formatter: "{value} kwh",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
series: [
|
||||||
|
{
|
||||||
|
name: "总用电量",
|
||||||
|
type: "line",
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalElectricity;
|
||||||
|
}),
|
||||||
|
symbolSize: 1,
|
||||||
|
symbol: "circle",
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "rgba(252,120,48,0)",
|
||||||
|
barBorderRadius: 0,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "总订单金额",
|
||||||
|
type: "line",
|
||||||
|
yAxisIndex: 0,
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalOrderAmount;
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "尖时段总用电量",
|
||||||
|
type: "bar",
|
||||||
|
yAxisIndex: 1,
|
||||||
|
stack: "one",
|
||||||
|
emphasis: {
|
||||||
|
focus: "series",
|
||||||
|
blurScope: "coordinateSystem",
|
||||||
|
},
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalSharpUsedElectricity;
|
||||||
|
}),
|
||||||
|
barWidth: "35%", //柱子宽度
|
||||||
|
// barGap: 1, //柱子之间间距
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#ff4949",
|
||||||
|
opacity: 1,
|
||||||
|
barBorderRadius: 1, //柱子菱角
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "峰时段总用电量",
|
||||||
|
type: "bar",
|
||||||
|
yAxisIndex: 1,
|
||||||
|
stack: "one",
|
||||||
|
emphasis: {
|
||||||
|
focus: "series",
|
||||||
|
blurScope: "coordinateSystem",
|
||||||
|
},
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalPeakUsedElectricity;
|
||||||
|
}),
|
||||||
|
barWidth: "35%",
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#ffba00",
|
||||||
|
opacity: 1,
|
||||||
|
barBorderRadius: 1, //柱子菱角
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "平时段总用电量",
|
||||||
|
type: "bar",
|
||||||
|
yAxisIndex: 1,
|
||||||
|
stack: "one",
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalFlatUsedElectricity;
|
||||||
|
}),
|
||||||
|
emphasis: {
|
||||||
|
focus: "series",
|
||||||
|
blurScope: "coordinateSystem",
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#12ce65",
|
||||||
|
opacity: 1,
|
||||||
|
barBorderRadius: 1, //柱子菱角
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "谷时段总用电量",
|
||||||
|
type: "bar",
|
||||||
|
yAxisIndex: 1,
|
||||||
|
stack: "one",
|
||||||
|
data: this.orderInfo.map((item) => {
|
||||||
|
return item.totalValleyUsedElectricity;
|
||||||
|
}),
|
||||||
|
emphasis: {
|
||||||
|
focus: "series",
|
||||||
|
blurScope: "coordinateSystem",
|
||||||
|
},
|
||||||
|
itemStyle: {
|
||||||
|
normal: {
|
||||||
|
color: "#909399",
|
||||||
|
opacity: 1,
|
||||||
|
barBorderRadius: 1, //柱子菱角
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
};
|
};
|
||||||
}, //图表实例
|
option.toolbox.feature.dataView = barDataView(
|
||||||
created() {
|
[
|
||||||
this.getGeneral();
|
"时间/日期",
|
||||||
|
"总用电量",
|
||||||
|
"总订单金额",
|
||||||
|
"尖时段总用电量",
|
||||||
|
"峰时段总用电量",
|
||||||
|
"平时段总用电量",
|
||||||
|
"谷时段总用电量",
|
||||||
|
],
|
||||||
|
"电量电费"
|
||||||
|
);
|
||||||
|
this.chart.setOption(option);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
mounted() {
|
rose() {
|
||||||
this.init();
|
this.$nextTick(() => {
|
||||||
// this.rose();
|
this.chartDom = Echarts.init(this.$refs.chartDom);
|
||||||
},
|
let option = {
|
||||||
methods: {
|
legend: {
|
||||||
async getGeneral() {
|
top: "bottom",
|
||||||
const { obj } = await getGeneralSituation({});
|
},
|
||||||
console.log("首页信息", obj);
|
toolbox: {
|
||||||
this.generalSituation = obj;
|
show: true,
|
||||||
},
|
feature: {
|
||||||
async getOrder() {
|
mark: { show: true },
|
||||||
const { obj, resCode } = await getOrderInfo({});
|
dataView: { show: true, readOnly: false },
|
||||||
console.log("订单信息", obj, resCode);
|
restore: { show: true },
|
||||||
if (resCode === '00100000') {
|
saveAsImage: { show: true },
|
||||||
this.orderInfo = obj;
|
},
|
||||||
}
|
},
|
||||||
},
|
series: [
|
||||||
async init() {
|
{
|
||||||
await this.getOrder();
|
name: "Nightingale Chart",
|
||||||
this.$nextTick(() => {
|
type: "pie",
|
||||||
this.chart = Echarts.init(this.$refs.chart);
|
radius: [50, 250],
|
||||||
console.log("柱状图", this.orderInfo);
|
center: ["50%", "50%"],
|
||||||
let str = this.orderInfo.map((item) => {
|
roseType: "area",
|
||||||
return item.date;
|
itemStyle: {
|
||||||
});
|
borderRadius: 8,
|
||||||
console.log(str);
|
},
|
||||||
let option = {
|
data: [
|
||||||
tooltip: {
|
{ value: 40, name: "rose 1" },
|
||||||
trigger: "axis",
|
{ value: 38, name: "rose 2" },
|
||||||
axisPointer: {
|
{ value: 32, name: "rose 3" },
|
||||||
type: "shadow",
|
{ value: 30, name: "rose 4" },
|
||||||
},
|
{ value: 28, name: "rose 5" },
|
||||||
},
|
{ value: 26, name: "rose 6" },
|
||||||
toolbox: {
|
{ value: 22, name: "rose 7" },
|
||||||
feature: {
|
{ value: 18, name: "rose 8" },
|
||||||
dataView: { show: true, readOnly: false },
|
],
|
||||||
magicType: { show: true, type: ["line", "bar"] },
|
},
|
||||||
restore: { show: true },
|
],
|
||||||
saveAsImage: { show: true },
|
};
|
||||||
},
|
this.chartDom.setOption(option);
|
||||||
},
|
});
|
||||||
legend: {
|
|
||||||
data: [
|
|
||||||
"总订单金额",
|
|
||||||
"尖时段总用电量",
|
|
||||||
"峰时段总用电量",
|
|
||||||
"平时段总用电量",
|
|
||||||
"谷时段总用电量",
|
|
||||||
],
|
|
||||||
},
|
|
||||||
dataZoom: {
|
|
||||||
show: false,
|
|
||||||
start: 0,
|
|
||||||
end: 100,
|
|
||||||
},
|
|
||||||
grid: {
|
|
||||||
left: "3%",
|
|
||||||
right: "4%",
|
|
||||||
bottom: "3%",
|
|
||||||
containLabel: true,
|
|
||||||
},
|
|
||||||
xAxis: [
|
|
||||||
{
|
|
||||||
type: "category",
|
|
||||||
boundaryGap: true,
|
|
||||||
data: str,
|
|
||||||
axisLine: { onZero: false },
|
|
||||||
},
|
|
||||||
],
|
|
||||||
animation: true,
|
|
||||||
animationDuration: 2000,
|
|
||||||
yAxis: [
|
|
||||||
{
|
|
||||||
type: "value",
|
|
||||||
name: "电费",
|
|
||||||
position: "left",
|
|
||||||
alignTicks: true,
|
|
||||||
axisLabel: {
|
|
||||||
formatter: "{value} ¥",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
type: "value",
|
|
||||||
name: "电量",
|
|
||||||
position: "right",
|
|
||||||
alignTicks: true,
|
|
||||||
axisLabel: {
|
|
||||||
formatter: "{value} kwh",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: "总用电量",
|
|
||||||
type: "line",
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalElectricity;
|
|
||||||
}),
|
|
||||||
symbolSize: 1,
|
|
||||||
symbol: "circle",
|
|
||||||
itemStyle: {
|
|
||||||
normal: {
|
|
||||||
color: "rgba(252,120,48,0)",
|
|
||||||
barBorderRadius: 0,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "总订单金额",
|
|
||||||
type: "line",
|
|
||||||
yAxisIndex: 0,
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalOrderAmount;
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "尖时段总用电量",
|
|
||||||
type: "bar",
|
|
||||||
yAxisIndex: 1,
|
|
||||||
stack: "one",
|
|
||||||
emphasis: {
|
|
||||||
focus: "series",
|
|
||||||
blurScope: "coordinateSystem",
|
|
||||||
},
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalSharpUsedElectricity;
|
|
||||||
}),
|
|
||||||
barWidth: "35%", //柱子宽度
|
|
||||||
// barGap: 1, //柱子之间间距
|
|
||||||
itemStyle: {
|
|
||||||
normal: {
|
|
||||||
color: "#ff4949",
|
|
||||||
opacity: 1,
|
|
||||||
barBorderRadius: 1, //柱子菱角
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "峰时段总用电量",
|
|
||||||
type: "bar",
|
|
||||||
yAxisIndex: 1,
|
|
||||||
stack: "one",
|
|
||||||
emphasis: {
|
|
||||||
focus: "series",
|
|
||||||
blurScope: "coordinateSystem",
|
|
||||||
},
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalPeakUsedElectricity;
|
|
||||||
}),
|
|
||||||
barWidth: "35%",
|
|
||||||
itemStyle: {
|
|
||||||
normal: {
|
|
||||||
color: "#ffba00",
|
|
||||||
opacity: 1,
|
|
||||||
barBorderRadius: 1, //柱子菱角
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "平时段总用电量",
|
|
||||||
type: "bar",
|
|
||||||
yAxisIndex: 1,
|
|
||||||
stack: "one",
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalFlatUsedElectricity;
|
|
||||||
}),
|
|
||||||
emphasis: {
|
|
||||||
focus: "series",
|
|
||||||
blurScope: "coordinateSystem",
|
|
||||||
},
|
|
||||||
itemStyle: {
|
|
||||||
normal: {
|
|
||||||
color: "#12ce65",
|
|
||||||
opacity: 1,
|
|
||||||
barBorderRadius: 1, //柱子菱角
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "谷时段总用电量",
|
|
||||||
type: "bar",
|
|
||||||
yAxisIndex: 1,
|
|
||||||
stack: "one",
|
|
||||||
data: this.orderInfo.map((item) => {
|
|
||||||
return item.totalValleyUsedElectricity;
|
|
||||||
}),
|
|
||||||
emphasis: {
|
|
||||||
focus: "series",
|
|
||||||
blurScope: "coordinateSystem",
|
|
||||||
},
|
|
||||||
itemStyle: {
|
|
||||||
normal: {
|
|
||||||
color: "#909399",
|
|
||||||
opacity: 1,
|
|
||||||
barBorderRadius: 1, //柱子菱角
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
option.toolbox.feature.dataView = barDataView(['时间/日期', '总用电量', '总订单金额', '尖时段总用电量', '峰时段总用电量', '平时段总用电量', '谷时段总用电量'], '电量电费')
|
|
||||||
this.chart.setOption(option);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
rose() {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.chartDom = Echarts.init(this.$refs.chartDom);
|
|
||||||
let option = {
|
|
||||||
legend: {
|
|
||||||
top: "bottom",
|
|
||||||
},
|
|
||||||
toolbox: {
|
|
||||||
show: true,
|
|
||||||
feature: {
|
|
||||||
mark: { show: true },
|
|
||||||
dataView: { show: true, readOnly: false },
|
|
||||||
restore: { show: true },
|
|
||||||
saveAsImage: { show: true },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: "Nightingale Chart",
|
|
||||||
type: "pie",
|
|
||||||
radius: [50, 250],
|
|
||||||
center: ["50%", "50%"],
|
|
||||||
roseType: "area",
|
|
||||||
itemStyle: {
|
|
||||||
borderRadius: 8,
|
|
||||||
},
|
|
||||||
data: [
|
|
||||||
{ value: 40, name: "rose 1" },
|
|
||||||
{ value: 38, name: "rose 2" },
|
|
||||||
{ value: 32, name: "rose 3" },
|
|
||||||
{ value: 30, name: "rose 4" },
|
|
||||||
{ value: 28, name: "rose 5" },
|
|
||||||
{ value: 26, name: "rose 6" },
|
|
||||||
{ value: 22, name: "rose 7" },
|
|
||||||
{ value: 18, name: "rose 8" },
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
};
|
|
||||||
this.chartDom.setOption(option);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -340,43 +356,43 @@ export default {
|
|||||||
// overflow: scroll;
|
// overflow: scroll;
|
||||||
// }
|
// }
|
||||||
.box {
|
.box {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 15rem;
|
width: 15rem;
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 6.25rem;
|
height: 6.25rem;
|
||||||
padding: 0.8rem;
|
padding: 0.8rem;
|
||||||
/* font-size: 18px; */
|
/* font-size: 18px; */
|
||||||
color: #ffffff;
|
color: #ffffff;
|
||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
box-shadow: 0 15px 0.8rem -11px black;
|
box-shadow: 0 15px 0.8rem -11px black;
|
||||||
margin-right: 24px;
|
margin-right: 24px;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
.box-image {
|
.box-image {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 3.75rem;
|
width: 3.75rem;
|
||||||
height: 3.75rem;
|
height: 3.75rem;
|
||||||
// background-size: 100% 100%;
|
// background-size: 100% 100%;
|
||||||
// position: absolute;
|
// position: absolute;
|
||||||
// right: 0;
|
// right: 0;
|
||||||
// bottom: 0;
|
// bottom: 0;
|
||||||
// filter: drop-shadow(40px 0px gray);
|
// filter: drop-shadow(40px 0px gray);
|
||||||
}
|
}
|
||||||
|
|
||||||
.flex1 {
|
.flex1 {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
margin-left: 48px;
|
margin-left: 48px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-h1 {
|
.box-h1 {
|
||||||
/* margin-top: -14px; */
|
/* margin-top: -14px; */
|
||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-text {
|
.box-text {
|
||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -255,10 +255,8 @@ import stationWhiteList from "@/views/pile/station/stationWhiteList";
|
|||||||
import {
|
import {
|
||||||
getStationInfo,
|
getStationInfo,
|
||||||
updateStationQRCodePrefix,
|
updateStationQRCodePrefix,
|
||||||
getSettingByStationId,
|
|
||||||
updateSettingByStationId,
|
updateSettingByStationId,
|
||||||
pushStationInfo,
|
pushStationInfo,
|
||||||
getSettingInfo,
|
|
||||||
getParkingInfoList,
|
getParkingInfoList,
|
||||||
bindParkingPlatform,
|
bindParkingPlatform,
|
||||||
getRelationByStationId,
|
getRelationByStationId,
|
||||||
|
|||||||
Reference in New Issue
Block a user