Compare commits

...

4 Commits

Author SHA1 Message Date
fb04836336 开发时nacos环境使用本地 2024-08-19 09:44:08 +08:00
e1a3b531cd 车辆进出记录暂时查全部 2024-08-19 09:40:31 +08:00
088fd9df0f 停车场后台-心跳修改 2024-08-16 17:42:40 +08:00
90ecdcfffe 票务mongodb抽数上个月到今天 2024-08-16 14:25:35 +08:00
15 changed files with 166 additions and 36 deletions

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -247,8 +247,8 @@ public class VehicleAccessApi {
// 创建分页请求
Pageable pageable = PageRequest.of(page, 4);
Page<VehicleRecord> recordOfAccessList = vehicleRecordRepository.findByCreateTimeBetweenOrderByCreateTimeAsc(startOfDay, endOfDay, pageable);
// Page<VehicleRecord> recordOfAccessList = vehicleRecordRepository.findByCreateTimeBetweenOrderByCreateTimeAsc(startOfDay, endOfDay, pageable);
Page<VehicleRecord> recordOfAccessList = vehicleRecordRepository.findAll(pageable); // TODO 暂时获取全部数据分页
return ResponseVO.success(200,"",recordOfAccessList,total);
}

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -57,7 +57,7 @@ public class AreaController {
@Operation(summary = "删除区域列表")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('parking:area:delete')")
public CommonResult<Boolean> deleteArea(@RequestParam("id") Integer id) {
public CommonResult<Boolean> deleteArea(@RequestParam("id") Long id) {
areaService.deleteArea(id);
return success(true);
}
@ -66,7 +66,7 @@ public class AreaController {
@Operation(summary = "获得区域列表")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('parking:area:query')")
public CommonResult<AreaRespVO> getArea(@RequestParam("id") Integer id) {
public CommonResult<AreaRespVO> getArea(@RequestParam("id") Long id) {
AreaDO area = areaService.getArea(id);
return success(BeanUtils.toBean(area, AreaRespVO.class));
}

View File

@ -15,6 +15,9 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
@ToString(callSuper = true)
public class AreaPageReqVO extends PageParam {
@Schema(description = "区域Id", example = "27272")
private Integer areaId;
@Schema(description = "场库编号")
private String parkNumber;

View File

@ -6,8 +6,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.parking.dal.dataobject.area.AreaDO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.parking.controller.admin.area.vo.*;
import org.apache.ibatis.annotations.Param;
/**
* 区域列表 Mapper
@ -26,7 +28,9 @@ public interface AreaMapper extends BaseMapperX<AreaDO> {
.eqIfPresent(AreaDO::getBookSpaceCount, reqVO.getBookSpaceCount())
.eqIfPresent(AreaDO::getBookInParkCount, reqVO.getBookInParkCount())
.betweenIfPresent(AreaDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(AreaDO::getAreaId));
.eqIfPresent(AreaDO::getAreaId, reqVO.getAreaId())
.orderByDesc(AreaDO::getId));
}
@Delete("DELETE FROM `area` WHERE `park_number` = #{parkNumber}")
int physicalDeleteByParkNumber(@Param("parkNumber") String parkNumber);
}

View File

@ -41,7 +41,7 @@ public interface AreaService {
*
* @param id 编号
*/
void deleteArea(Integer id);
void deleteArea(Long id);
/**
* 获得区域列表
@ -49,7 +49,7 @@ public interface AreaService {
* @param id 编号
* @return 区域列表
*/
AreaDO getArea(Integer id);
AreaDO getArea(Long id);
/**
* 获得区域列表分页
@ -59,10 +59,11 @@ public interface AreaService {
*/
PageResult<AreaDO> getAreaPage(AreaPageReqVO pageReqVO);
/**
* 创建或更新区域批量
* 根据场库编号创建或更新区域批量
* @param areaList
* @return java.lang.Boolean
*/
Boolean createOrUpdateAreaBatch(ArrayList<AreaSaveReqVO> areaList);
Boolean updateAreaBatchByParkNumber(ArrayList<AreaSaveReqVO> areaList);
}

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.parking.service.area;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -48,28 +49,28 @@ public class AreaServiceImpl implements AreaService {
@Override
public void updateArea(AreaSaveReqVO updateReqVO) {
// 校验存在
validateAreaExists(updateReqVO.getAreaId());
validateAreaExists(updateReqVO.getId());
// 更新
AreaDO updateObj = BeanUtils.toBean(updateReqVO, AreaDO.class);
areaMapper.updateById(updateObj);
}
@Override
public void deleteArea(Integer id) {
public void deleteArea(Long id) {
// 校验存在
validateAreaExists(id);
// 删除
areaMapper.deleteById(id);
}
private void validateAreaExists(Integer id) {
private void validateAreaExists(Long id) {
if (areaMapper.selectById(id) == null) {
throw exception(AREA_NOT_EXISTS);
}
}
@Override
public AreaDO getArea(Integer id) {
public AreaDO getArea(Long id) {
return areaMapper.selectById(id);
}
@ -79,8 +80,15 @@ public class AreaServiceImpl implements AreaService {
}
@Override
public Boolean createOrUpdateAreaBatch(ArrayList<AreaSaveReqVO> areaList) {
return areaMapper.insertOrUpdateBatch(BeanUtils.toBean(areaList, AreaDO.class));
@Transactional(rollbackFor = Exception.class)
public Boolean updateAreaBatchByParkNumber(ArrayList<AreaSaveReqVO> areaList) {
if (areaList == null || areaList.isEmpty()){
return false;
}
areaMapper.physicalDeleteByParkNumber(areaList.get(0).getParkNumber());
areaMapper.insertBatch(BeanUtils.toBean(areaList, AreaDO.class));
return true;
}
}

View File

@ -85,7 +85,7 @@ public class HeartbeatServiceImpl implements HeartbeatService {
}
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public BlueCardResult doHeartbeat(HeartbeatReqDataVO blueCardHeartbeat) {
try {
ArrayList<AreaSaveReqVO> areaList = blueCardHeartbeat.getAreaList();
@ -104,9 +104,8 @@ public class HeartbeatServiceImpl implements HeartbeatService {
if (!areaList.isEmpty()){
// 对区域都添加停车场库编号
areaList.forEach(item -> item.setParkNumber(blueCardHeartbeat.getParkNumber()));
// 写入区域信息
// TODO 判断重复及处理方式
areaService.createOrUpdateAreaBatch(areaList);
// 更新区域信息
areaService.updateAreaBatchByParkNumber(areaList);
}
} catch (Exception e) {
// 手动设置回滚

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev
@ -14,7 +14,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.infra.job.ticketing;
import cn.hutool.core.date.DatePattern;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.util.date.TickingDateUtils;
@ -26,6 +27,9 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;
@ -190,6 +194,114 @@ public class TicketDataMigration {
XxlJobHelper.log("抽数服务:检票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!", totalRows, duplicatesCount, successCount);
}
@XxlJob("getCheckTicketByMongoDBLastMonthToNow")
public void getCheckTicketByMongoDBLastMonthToNow() throws Exception {
XxlJobHelper.log("抽数服务mongodb检票数据开始抽数...");
int successCount;
int duplicatesCount;
int pageNumber;
// 获取当前日期
Calendar startDate = Calendar.getInstance();
// 设置开始日期为上一个月的第一天
startDate.set(Calendar.DAY_OF_MONTH, 1); // 先将日期设置为当前月的第一天
startDate.add(Calendar.MONTH, -1); // 然后减去一个月
// 设置结束日期为今天
Calendar endDate = Calendar.getInstance();
// 循环从开始日期到结束日期
while (!startDate.after(endDate)) {
successCount = 0;
duplicatesCount = 0;
String dateString = TickingDateUtils.format(startDate.getTime());
pageNumber = 1;
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, dateString, pageNumber);
if (ticketingSamplingRespVO == null) {
startDate.add(Calendar.DAY_OF_MONTH, 1);
continue;
}
int totalRows = ticketingSamplingRespVO.getTotalRows();
List<Map<String, Object>> mapList;
// 获得总页数
int totalPages = ticketingSamplingRespVO.getTotalPages();
// 处理剩余页的数据
for (; pageNumber <= totalPages; pageNumber++) {
ticketingSamplingRespVO = this.getUrlResponseData(CHECK_TICKET_SERVICE, CHECK_TICKET_METHOD, dateString, pageNumber);
mapList = ticketingSamplingRespVO.getDataMapList();
List<Integer> resultNum = checkTicketService.insertByMongoDB(BeanUtils.toBean(mapList, CheckTicket.class));
if (resultNum == null) {
XxlJobHelper.log("数据批量插入异常!", pageNumber);
} else {
successCount += resultNum.get(0);
duplicatesCount += resultNum.get(1);
}
}
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
XxlJobHelper.log("抽数服务:{}月{}日:检票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!",currentMonth,currentDay ,totalRows, duplicatesCount, successCount);
// 日期递增一天
startDate.add(Calendar.DAY_OF_MONTH, 1);
}
XxlJobHelper.log("抽数结束!!!");
}
@XxlJob("getSaleDataByMongoDBLastMonthToNow")
public void getSaleDataByMongoDBLastMonthToNow() throws Exception {
XxlJobHelper.log("抽数服务mongodb售票数据开始抽数...");
int successCount;
int duplicatesCount;
int pageNumber;
// 获取当前日期
Calendar startDate = Calendar.getInstance();
// 设置开始日期为上一个月的第一天
startDate.set(Calendar.DAY_OF_MONTH, 1); // 先将日期设置为当前月的第一天
startDate.add(Calendar.MONTH, -1); // 然后减去一个月
// 设置结束日期为今天
Calendar endDate = Calendar.getInstance();
// 循环从开始日期到结束日期
while (!startDate.after(endDate)) {
successCount = 0;
duplicatesCount = 0;
String dateString = TickingDateUtils.format(startDate.getTime());
pageNumber = 1;
TicketingSamplingRespVO ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, dateString, pageNumber);
if (ticketingSamplingRespVO == null) {
startDate.add(Calendar.DAY_OF_MONTH, 1);
continue;
}
int totalRows = ticketingSamplingRespVO.getTotalRows();
List<Map<String, Object>> mapList;
// 获得总页数
int totalPages = ticketingSamplingRespVO.getTotalPages();
// 处理剩余页的数据
for (; pageNumber <= totalPages; pageNumber++) {
ticketingSamplingRespVO = this.getUrlResponseData(SALE_DATA_SERVICE, SALE_DATA_METHOD, dateString, pageNumber);
mapList = ticketingSamplingRespVO.getDataMapList();
List<Integer> resultNum = saleDataService.insertByMongoDB(BeanUtils.toBean(mapList, SaleData.class));
if (resultNum == null) {
XxlJobHelper.log("数据批量插入异常!", pageNumber);
} else {
successCount += resultNum.get(0);
duplicatesCount += resultNum.get(1);
}
}
int currentMonth = startDate.get(Calendar.MONTH) + 1; // 加1以得到1-12的月份
int currentDay = startDate.get(Calendar.DAY_OF_MONTH);
XxlJobHelper.log("抽数服务:{}月{}日:售票数据抽数正常结束!总共:{}条数据,{}条数据重复,{}条数据插入成功!",currentMonth,currentDay ,totalRows, duplicatesCount, successCount);
// 日期递增一天
startDate.add(Calendar.DAY_OF_MONTH, 1);
}
XxlJobHelper.log("抽数结束!!!");
}
/**
* 插入销售数据的方法mysql
*
@ -262,9 +374,12 @@ public class TicketDataMigration {
// TODO 需要再优化
if (ticketingSamplingRespVO != null && !ticketingSamplingRespVO.isPassflag()) {
// 让调度中心重新调用
XxlJobHelper.log("抽数服务:检票数据抽数失败,返回消息:" + ticketingSamplingRespVO.getRtnMsg());
XxlJobHelper.handleFail("销售数据抽数失败,请重试");
XxlJobHelper.log("数据抽数失败,返回消息:" + ticketingSamplingRespVO.getRtnMsg());
XxlJobHelper.handleFail("数据抽数失败,请重试");
throw new RuntimeException();
}else if (ticketingSamplingRespVO.getPageNumber() == null || ticketingSamplingRespVO.getPageSize() == null || ticketingSamplingRespVO.getTotalPages() == null || ticketingSamplingRespVO.getTotalRows() == null || ticketingSamplingRespVO.getDataMapList().isEmpty()){
XxlJobHelper.log("{},请求抽数成功,但返回参数值存在问题:{}", date, ticketingSamplingRespVO);
return null;
}
return ticketingSamplingRespVO;
}

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name

View File

@ -3,7 +3,7 @@
spring:
cloud:
nacos:
server-addr: crm.fjptzykj.com:8849
server-addr: 127.0.0.1:8848
discovery:
namespace: dev # 命名空间。这里使用 dev 开发环境
metadata:
@ -16,7 +16,7 @@ spring:
nacos:
# Nacos Config 配置项,对应 NacosConfigProperties 配置属性类
config:
server-addr: crm.fjptzykj.com:8849 # Nacos 服务器地址
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
namespace: dev # 命名空间 dev 的ID不能直接使用 dev 名称。创建命名空间的时候需要指定ID为 dev这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
name: ${spring.application.name} # 使用的 Nacos 配置集的 dataId默认为 spring.application.name