Browse Source

Merge remote-tracking branch 'origin/master'

zhongwei
yang_shj 1 year ago
parent
commit
69b54942cf
  1. 3
      hzims-service/assets/src/main/java/com/hnac/hzims/spare/mapper/WtSpBasicMapper.java
  2. 1
      hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/service/impl/EmInfoServiceImpl.java
  3. 2
      hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java
  4. 24
      hzims-service/operational/src/main/java/com/hnac/hzims/operational/station/controller/StationVideoTypeController.java
  5. 4
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java
  6. 11
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java
  7. 26
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketCountController.java
  8. 6
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/TicketCountQueryVo.java
  9. 5
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/IWorkTicketInfoService.java
  10. 11
      hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java

3
hzims-service/assets/src/main/java/com/hnac/hzims/spare/mapper/WtSpBasicMapper.java

@ -1,5 +1,6 @@
package com.hnac.hzims.spare.mapper; package com.hnac.hzims.spare.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hnac.hzims.spare.entity.SpTemporaryStockDetailEntity; import com.hnac.hzims.spare.entity.SpTemporaryStockDetailEntity;
import com.hnac.hzims.spare.entity.WtSpBasicEntity; import com.hnac.hzims.spare.entity.WtSpBasicEntity;
import com.hnac.hzims.spare.vo.WtSpBasicVO; import com.hnac.hzims.spare.vo.WtSpBasicVO;
@ -14,7 +15,7 @@ import java.util.Map;
* *
* @author Chill * @author Chill
*/ */
public interface WtSpBasicMapper extends UserDataScopeBaseMapper<WtSpBasicEntity> { public interface WtSpBasicMapper extends BaseMapper<WtSpBasicEntity> {
/** /**
* 备品备件基础信息列表 * 备品备件基础信息列表
* @param params * @param params

1
hzims-service/equipment/src/main/java/com/hnac/hzims/equipment/service/impl/EmInfoServiceImpl.java

@ -836,6 +836,7 @@ public class EmInfoServiceImpl extends BaseServiceImpl<EmInfoMapper, EmInfoEntit
dto.setModelSignage(emTreeInspect.getModelSignage()); dto.setModelSignage(emTreeInspect.getModelSignage());
dto.setAttrSignage(emTreeInspect.getModelAttrSignage()); dto.setAttrSignage(emTreeInspect.getModelAttrSignage());
dto.setAttrName(emTreeInspect.getModelAttrName()); dto.setAttrName(emTreeInspect.getModelAttrName());
dto.setCreateDept(emInfo.getDepartment());
dto.setId(null); dto.setId(null);
contentDTOList.add(dto); contentDTOList.add(dto);
} }

2
hzims-service/equipment/src/main/java/com/hnac/hzims/fdp/scheduled/ThreadTask.java

@ -205,7 +205,7 @@ public class ThreadTask {
faultAllReq.setStationId(fdpFaultEntity.getStationId()); faultAllReq.setStationId(fdpFaultEntity.getStationId());
DiagnoseFaultReq diagnoseFaultReq = new DiagnoseFaultReq(); DiagnoseFaultReq diagnoseFaultReq = new DiagnoseFaultReq();
diagnoseFaultReq.setTaskId(req.getId().toString()); diagnoseFaultReq.setTaskId(key);
diagnoseFaultReq.setFaultId(req.getFaultId()); diagnoseFaultReq.setFaultId(req.getFaultId());
diagnoseFaultReq.setConfidence(1.0); diagnoseFaultReq.setConfidence(1.0);
diagnoseFaultReq.setLifeTime(24*3);//设置有效期3天 diagnoseFaultReq.setLifeTime(24*3);//设置有效期3天

24
hzims-service/operational/src/main/java/com/hnac/hzims/operational/station/controller/StationVideoTypeController.java

@ -145,9 +145,6 @@ public class StationVideoTypeController extends BladeController {
@RequestMapping(value = "/getVideoMonitor", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getVideoMonitor", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 50) @ApiOperationSupport(order = 50)
@ApiOperation(value = "获取视频监测列表", notes = "获取视频监测列表") @ApiOperation(value = "获取视频监测列表", notes = "获取视频监测列表")
@OperationAnnotation(moduleName = "视频监控",title = "视频监控",operatorType = OperatorType.APPSYSTEMS,businessType =
BusinessType.GENCODE,
action = "获取视频监测列表")
public R<List<VideoMonitorVO>> getVideoMonitor() { public R<List<VideoMonitorVO>> getVideoMonitor() {
List<VideoMonitorVO> result = stationVideoTypeService.getVideoMonitor(); List<VideoMonitorVO> result = stationVideoTypeService.getVideoMonitor();
return R.data(result); return R.data(result);
@ -156,17 +153,17 @@ public class StationVideoTypeController extends BladeController {
@ApiLog @ApiLog
@RequestMapping(value = "/getById", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getById", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 60) @ApiOperationSupport(order = 60)
@OperationAnnotation(moduleName = "视频监控",title = "视频监控",operatorType = OperatorType.APPSYSTEMS,businessType = BusinessType.GENCODE,
action = "获取视频监测对象")
@ApiOperation(value = "获取视频监测对象", notes = "获取视频监测对象") @ApiOperation(value = "获取视频监测对象", notes = "获取视频监测对象")
public R<StationVideoTypeEntity> getById(@RequestParam Long id, @RequestParam int streamType) { public R<StationVideoTypeEntity> getById(@RequestParam Long id, @RequestParam int streamType) {
return R.data(stationVideoTypeService.getById(id, streamType)); return R.data(stationVideoTypeService.getById(id, streamType));
} }
@ApiLog @ApiLog
@RequestMapping(value = "/getHikVideo", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getHikVideo", method = {RequestMethod.GET, RequestMethod.POST})
public R<String> getHikVideo() { public R<String> getHikVideo() {
return R.data(stationVideoTypeService.getHikVideo()); return R.data(stationVideoTypeService.getHikVideo());
} }
@ApiLog @ApiLog
@RequestMapping(value = "/getStationsByVideo", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getStationsByVideo", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 70) @ApiOperationSupport(order = 70)
@ -174,6 +171,7 @@ public class StationVideoTypeController extends BladeController {
public R<List<StationEntity>> getStationsByVideo() { public R<List<StationEntity>> getStationsByVideo() {
return R.data(stationVideoTypeService.getStationsByVideo()); return R.data(stationVideoTypeService.getStationsByVideo());
} }
@ApiLog @ApiLog
@GetMapping("/getStationVideoOrderBySort") @GetMapping("/getStationVideoOrderBySort")
@ApiOperationSupport(order = 80) @ApiOperationSupport(order = 80)
@ -181,6 +179,7 @@ public class StationVideoTypeController extends BladeController {
public R<IPage> getStationVideoOrderBySort(StationVideoTypeDTO stationVideoTypeDTO, Query query) { public R<IPage> getStationVideoOrderBySort(StationVideoTypeDTO stationVideoTypeDTO, Query query) {
return R.data(stationVideoTypeService.getStationVideoOrderBySort(stationVideoTypeDTO, query)); return R.data(stationVideoTypeService.getStationVideoOrderBySort(stationVideoTypeDTO, query));
} }
@ApiLog @ApiLog
@RequestMapping(value = "/getVideoByIdsAndType", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getVideoByIdsAndType", method = {RequestMethod.GET, RequestMethod.POST})
@ApiOperationSupport(order = 90) @ApiOperationSupport(order = 90)
@ -188,6 +187,7 @@ public class StationVideoTypeController extends BladeController {
public R<List<StationVideoTypeEntity>> getVideoByIdsAndType(@RequestParam String ids, @RequestParam String type) { public R<List<StationVideoTypeEntity>> getVideoByIdsAndType(@RequestParam String ids, @RequestParam String type) {
return R.data(stationVideoTypeService.getVideoByIdsAndType(ids, type)); return R.data(stationVideoTypeService.getVideoByIdsAndType(ids, type));
} }
@ApiLog @ApiLog
@GetMapping("/getVideoByIds") @GetMapping("/getVideoByIds")
@ApiOperationSupport(order = 100) @ApiOperationSupport(order = 100)
@ -195,11 +195,13 @@ public class StationVideoTypeController extends BladeController {
public R<List<StationVideoTypeEntity>> getVideoByIds(@RequestParam String ids, @RequestParam String randomCode) { public R<List<StationVideoTypeEntity>> getVideoByIds(@RequestParam String ids, @RequestParam String randomCode) {
return R.data(stationVideoTypeService.getVideoByIds(ids, randomCode)); return R.data(stationVideoTypeService.getVideoByIds(ids, randomCode));
} }
@ApiLog @ApiLog
@RequestMapping(value = "/getVideoReviewerToken", method = {RequestMethod.GET, RequestMethod.POST}) @RequestMapping(value = "/getVideoReviewerToken", method = {RequestMethod.GET, RequestMethod.POST})
public R<String> getVideoReviewerToken() { public R<String> getVideoReviewerToken() {
return R.data(stationVideoTypeService.getVideoReviewerToken()); return R.data(stationVideoTypeService.getVideoReviewerToken());
} }
@ApiLog @ApiLog
@GetMapping("/getVideoMonitorByAgency") @GetMapping("/getVideoMonitorByAgency")
@ApiOperationSupport(order = 110) @ApiOperationSupport(order = 110)
@ -207,6 +209,7 @@ public class StationVideoTypeController extends BladeController {
public R<List<VideoMonitorVO>> getVideoMonitorByAgency(@RequestParam @ApiParam("视频分类") String type) { public R<List<VideoMonitorVO>> getVideoMonitorByAgency(@RequestParam @ApiParam("视频分类") String type) {
return R.data(stationVideoTypeService.getVideoMonitor(type)); return R.data(stationVideoTypeService.getVideoMonitor(type));
} }
@ApiLog @ApiLog
@GetMapping("/getHikVisionStations") @GetMapping("/getHikVisionStations")
@ApiOperationSupport(order = 120) @ApiOperationSupport(order = 120)
@ -214,6 +217,7 @@ public class StationVideoTypeController extends BladeController {
public R<List<JSONObject>> getHikVisionStations() { public R<List<JSONObject>> getHikVisionStations() {
return R.data(stationVideoTypeService.getHikVisionStations()); return R.data(stationVideoTypeService.getHikVisionStations());
} }
@ApiLog @ApiLog
@GetMapping("/getMonitorsByStation") @GetMapping("/getMonitorsByStation")
@ApiOperationSupport(order = 130) @ApiOperationSupport(order = 130)
@ -221,4 +225,14 @@ public class StationVideoTypeController extends BladeController {
public R<Map<HikDeviceResp, List<HikMonitorResp>>> getMonitorsByStation(@RequestParam String stationId) { public R<Map<HikDeviceResp, List<HikMonitorResp>>> getMonitorsByStation(@RequestParam String stationId) {
return R.data(stationVideoTypeService.getMonitorsByStation(stationId)); return R.data(stationVideoTypeService.getMonitorsByStation(stationId));
} }
@OperationAnnotation(moduleName = "视频监控", title = "视频监控", operatorType = OperatorType.APPSYSTEMS, businessType =
BusinessType.GENCODE,
action = "获取视频监测列表")
@GetMapping("/videoimages")
public R videoimages() {
return R.success("视频监控处理成功");
}
} }

4
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/IStandardTicketInfoService.java

@ -131,8 +131,10 @@ public interface IStandardTicketInfoService extends BaseService<StandardTicketIn
/** /**
* 查看操作票 * 查看操作票
*
* @param entityPage
* @param ticketCountQueryVo * @param ticketCountQueryVo
* @return * @return
*/ */
List<StandardTicketInfoEntity> listByOperationTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo); IPage<StandardTicketInfoEntity> listByOperationTicketWithKeyword(Page<StandardTicketInfoEntity> entityPage, TicketCountQueryVo ticketCountQueryVo);
} }

11
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/standardTicket/service/impl/StandardTicketInfoServiceImpl.java

@ -707,12 +707,14 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl<StandardTicke
/** /**
* 查看操作票 * 查看操作票
* *
* @param entityPage
* @param ticketCountQueryVo * @param ticketCountQueryVo
* @return * @return
*/ */
@Override @Override
public List<StandardTicketInfoEntity> listByOperationTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo) { public IPage<StandardTicketInfoEntity> listByOperationTicketWithKeyword(Page<StandardTicketInfoEntity> entityPage, TicketCountQueryVo ticketCountQueryVo) {
String flowTaskName = ticketCountQueryVo.getFlowTaskName(); String flowTaskName = ticketCountQueryVo.getFlowTaskName();
String dateTime = ticketCountQueryVo.getDateTime();
String type = ticketCountQueryVo.getType(); String type = ticketCountQueryVo.getType();
QueryWrapper<StandardTicketInfoEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<StandardTicketInfoEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(StringUtils.isNotBlank(type), StandardTicketInfoEntity::getTicketType, type); queryWrapper.lambda().eq(StringUtils.isNotBlank(type), StandardTicketInfoEntity::getTicketType, type);
@ -735,6 +737,11 @@ public class StandardTicketInfoServiceImpl extends BaseServiceImpl<StandardTicke
evaluateEntities.stream().map(TicketInfoEvaluateEntity::getTicketId).collect(Collectors.toList()); evaluateEntities.stream().map(TicketInfoEvaluateEntity::getTicketId).collect(Collectors.toList());
queryWrapper.lambda().in(BaseEntity::getId, idList); queryWrapper.lambda().in(BaseEntity::getId, idList);
} }
return baseMapper.selectList(queryWrapper);
if (StringUtils.isNotBlank(dateTime)) {
queryWrapper.apply("date_format(create_time,'%Y-%m') = {0}", dateTime);
}
return baseMapper.selectPages(entityPage,queryWrapper);
} }
} }

26
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/controller/TicketCountController.java

@ -1,6 +1,8 @@
package com.hnac.hzims.ticket.twoTicket.controller; package com.hnac.hzims.ticket.twoTicket.controller;
import cn.hutool.http.server.HttpServerResponse; import cn.hutool.http.server.HttpServerResponse;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hnac.hzims.ticket.standardTicket.entity.StandardTicketInfoEntity; import com.hnac.hzims.ticket.standardTicket.entity.StandardTicketInfoEntity;
import com.hnac.hzims.ticket.standardTicket.service.IStandardTicketInfoService; import com.hnac.hzims.ticket.standardTicket.service.IStandardTicketInfoService;
import com.hnac.hzims.ticket.standardTicket.service.OperationTicketService; import com.hnac.hzims.ticket.standardTicket.service.OperationTicketService;
@ -79,10 +81,14 @@ public class TicketCountController {
/** /**
* 查看工作票 * 查看工作票
*/ */
@GetMapping("/listByTicketWithKeyword") @GetMapping("/listByTicketWithKeyword/{page}/{size}")
public R listByTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo) { public R listByTicketWithKeyword(
List<WorkTicketInfoEntity> workTicketInfoEntities = @PathVariable Long page,
workTicketService.listByTicketWithKeyword(ticketCountQueryVo); @PathVariable Long size,
TicketCountQueryVo ticketCountQueryVo) {
Page<WorkTicketInfoEntity> entityPage = new Page<>(page,size);
IPage<WorkTicketInfoEntity> workTicketInfoEntities =
workTicketService.listByTicketWithKeyword(entityPage,ticketCountQueryVo);
return R.data(workTicketInfoEntities); return R.data(workTicketInfoEntities);
} }
@ -90,10 +96,14 @@ public class TicketCountController {
/** /**
* 查看操作票 * 查看操作票
*/ */
@GetMapping("/listByOperationTicketWithKeyword") @GetMapping("/listByOperationTicketWithKeyword/{page}/{size}")
public R listByOperationTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo) { public R listByOperationTicketWithKeyword(
List<StandardTicketInfoEntity> ticketInfoEntities = @PathVariable Long page,
standardTicketInfoService.listByOperationTicketWithKeyword(ticketCountQueryVo); @PathVariable Long size,
TicketCountQueryVo ticketCountQueryVo) {
Page<StandardTicketInfoEntity> entityPage = new Page<>(page,size);
IPage<StandardTicketInfoEntity> ticketInfoEntities =
standardTicketInfoService.listByOperationTicketWithKeyword(entityPage,ticketCountQueryVo);
return R.data(ticketInfoEntities); return R.data(ticketInfoEntities);
} }

6
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/twoTicket/vo/TicketCountQueryVo.java

@ -31,4 +31,10 @@ public class TicketCountQueryVo {
* 合格 * 合格
*/ */
private String qualified; private String qualified;
/**
* 时间
*/
private String dateTime;
} }

5
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/IWorkTicketInfoService.java

@ -2,7 +2,6 @@ package com.hnac.hzims.ticket.workTicket.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hnac.hzims.ticket.areamonthly.vo.AreaMonthlyVo;
import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo;
import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo;
import com.hnac.hzims.ticket.twoTicket.vo.TicketCountQueryVo; import com.hnac.hzims.ticket.twoTicket.vo.TicketCountQueryVo;
@ -173,8 +172,10 @@ public interface IWorkTicketInfoService extends BaseService<WorkTicketInfoEntity
/** /**
* 查看工作票 * 查看工作票
*
* @param entityPage
* @param ticketCountQueryVo * @param ticketCountQueryVo
* @return * @return
*/ */
List<WorkTicketInfoEntity> listByTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo); IPage<WorkTicketInfoEntity> listByTicketWithKeyword(Page<WorkTicketInfoEntity> entityPage, TicketCountQueryVo ticketCountQueryVo);
} }

11
hzims-service/ticket/src/main/java/com/hnac/hzims/ticket/workTicket/service/impl/WorkTicketInfoServiceImpl.java

@ -26,7 +26,6 @@ import com.hnac.hzims.ticket.areamonthly.vo.StandardTicketWithAreaVo;
import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo; import com.hnac.hzims.ticket.areamonthly.vo.StandardWorkVo;
import com.hnac.hzims.ticket.aspect.AroundFlow; import com.hnac.hzims.ticket.aspect.AroundFlow;
import com.hnac.hzims.ticket.constants.TicketConstants; import com.hnac.hzims.ticket.constants.TicketConstants;
import com.hnac.hzims.ticket.standardTicket.entity.StandardTicketInfoEntity;
import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger; import com.hnac.hzims.ticket.twoTicket.entity.TicketInfoDanger;
import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish; import com.hnac.hzims.ticket.twoTicket.entity.WorkTicketFinish;
import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService; import com.hnac.hzims.ticket.twoTicket.service.TicketInfoDangerService;
@ -1135,11 +1134,12 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
/** /**
* 查看工作票 * 查看工作票
* *
* @param entityPage
* @param ticketCountQueryVo * @param ticketCountQueryVo
* @return * @return
*/ */
@Override @Override
public List<WorkTicketInfoEntity> listByTicketWithKeyword(TicketCountQueryVo ticketCountQueryVo) { public IPage<WorkTicketInfoEntity> listByTicketWithKeyword(Page<WorkTicketInfoEntity> entityPage, TicketCountQueryVo ticketCountQueryVo) {
//延期 //延期
String input = ticketCountQueryVo.getInput(); String input = ticketCountQueryVo.getInput();
//开票 结束 作废 //开票 结束 作废
@ -1148,6 +1148,8 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
String qualified = ticketCountQueryVo.getQualified(); String qualified = ticketCountQueryVo.getQualified();
String type = ticketCountQueryVo.getType(); String type = ticketCountQueryVo.getType();
String dateTime = ticketCountQueryVo.getDateTime();
//查询 //查询
QueryWrapper<WorkTicketInfoEntity> queryWrapper = new QueryWrapper<>(); QueryWrapper<WorkTicketInfoEntity> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(StringUtils.isNotBlank(type), WorkTicketInfoEntity::getType, queryWrapper.lambda().eq(StringUtils.isNotBlank(type), WorkTicketInfoEntity::getType,
@ -1163,6 +1165,9 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
} }
if (StringUtils.isNotBlank(dateTime)) {
queryWrapper.apply("date_format(create_time,'%Y-%m') = {0}", dateTime);
}
//合格 //合格
if (StringUtils.isNoneBlank(qualified) && "合格".equals(qualified)) { if (StringUtils.isNoneBlank(qualified) && "合格".equals(qualified)) {
List<WorkTicketInfoEntity> workTicketInfoEntities = baseMapper.selectList(null); List<WorkTicketInfoEntity> workTicketInfoEntities = baseMapper.selectList(null);
@ -1175,6 +1180,6 @@ public class WorkTicketInfoServiceImpl extends BaseServiceImpl<WorkTicketInfoMap
evaluateEntities.stream().map(TicketInfoEvaluateEntity::getTicketId).collect(Collectors.toList()); evaluateEntities.stream().map(TicketInfoEvaluateEntity::getTicketId).collect(Collectors.toList());
queryWrapper.lambda().in(BaseEntity::getId, idList); queryWrapper.lambda().in(BaseEntity::getId, idList);
} }
return baseMapper.selectList(queryWrapper); return baseMapper.selectPages(entityPage,queryWrapper);
} }
} }

Loading…
Cancel
Save