迁移 台桌

This commit is contained in:
GYJ 2025-02-18 18:23:18 +08:00
parent abf23eae3a
commit f6c36c726b
22 changed files with 730 additions and 3 deletions

View File

@ -18,8 +18,8 @@ public class CodeGen {
private final static String DATABASE = "czg_cashier";
private final static String OLD_DATABASE = "fycashier_test";
private final static boolean isOldVersion = false;
// private final static boolean isOldVersion = true;
// private final static boolean isOldVersion = false;
private final static boolean isOldVersion = true;
public static void main(String[] args) {
//配置数据源
@ -81,7 +81,7 @@ public class CodeGen {
//设置表前缀和只生成哪些表setGenerateTable 未配置时生成所有表
globalConfig.getStrategyConfig()
.setTablePrefix("tb_")
.setGenerateTable("tb_shop_activate_out_record");
.setGenerateTable("tb_shop_table");
EntityConfig entityConfig = globalConfig.getEntityConfig();
if (isOldVersion) {

View File

@ -0,0 +1,23 @@
package com.czg.mergedata.controller;
import com.czg.mergedata.common.resp.CzgResult;
import com.czg.mergedata.cur.service.CurShopTableService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author GYJoker
*/
@RestController
@RequestMapping("/table")
public class TableController {
@Resource
private CurShopTableService curShopTableService;
@GetMapping("/mergeData")
public CzgResult<String> mergeData() {
return curShopTableService.mergeData();
}
}

View File

@ -0,0 +1,120 @@
package com.czg.mergedata.cur.entity;
import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 台桌配置 实体类
*
* @author mac
* @since 2025-02-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_table")
public class CurShopTable implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 二维码
*/
private String tableCode;
private String name;
private Long shopId;
/**
* 客座数,允许的客座数量
*/
private Integer maxCapacity;
/**
* 台桌排序
*/
private Integer sort;
/**
* 区域Id
*/
private Integer areaId;
/**
* 是否接受网络预定
*/
private Integer isPredate;
/**
* 网络预定台桌支付金额
*/
private BigDecimal predateAmount;
/**
* idle-空闲 using-使用中 subscribe预定closed--关台 opening 开台中cleaning 台桌清理中
*/
private String status;
@Column(onInsertValue = "now()")
private LocalDateTime createTime;
@Column(onInsertValue = "now()", onUpdateValue = "now()")
private LocalDateTime updateTime;
/**
* 自动清台 0手动 1自动
*/
private Integer autoClear;
/**
* 使用时间
*/
private LocalDateTime useTime;
/**
* 结束时间
*/
private LocalDateTime endTime;
/**
* 已点商品数量
*/
private Integer productNum;
/**
* 总金额
*/
private BigDecimal totalAmount;
/**
* 应付金额
*/
private BigDecimal realAmount;
/**
* 用餐人数
*/
private Integer useNum;
}

View File

@ -0,0 +1,56 @@
package com.czg.mergedata.cur.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 店铺区域 实体类
*
* @author mac
* @since 2025-02-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_table_area")
public class CurShopTableArea implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Long id;
/**
* 店铺Id
*/
private Long shopId;
/**
* 排序
*/
private Integer sort;
/**
* 区域名称
*/
private String name;
private Long createdAt;
private Long updatedAt;
}

View File

@ -0,0 +1,18 @@
package com.czg.mergedata.cur.mapper;
import com.mybatisflex.annotation.UseDataSource;
import com.mybatisflex.core.BaseMapper;
import com.czg.mergedata.cur.entity.CurShopTableArea;
import org.apache.ibatis.annotations.Select;
/**
* 店铺区域 映射层
*
* @author mac
* @since 2025-02-18
*/
@UseDataSource("ds1")
public interface CurShopTableAreaMapper extends BaseMapper<CurShopTableArea> {
@Select("truncate tb_shop_table_area")
void truncateTable();
}

View File

@ -0,0 +1,18 @@
package com.czg.mergedata.cur.mapper;
import com.mybatisflex.annotation.UseDataSource;
import com.mybatisflex.core.BaseMapper;
import com.czg.mergedata.cur.entity.CurShopTable;
import org.apache.ibatis.annotations.Select;
/**
* 台桌配置 映射层
*
* @author mac
* @since 2025-02-18
*/
@UseDataSource("ds1")
public interface CurShopTableMapper extends BaseMapper<CurShopTable> {
@Select("truncate tb_shop_table")
void truncateTable();
}

View File

@ -0,0 +1,14 @@
package com.czg.mergedata.cur.service;
import com.mybatisflex.core.service.IService;
import com.czg.mergedata.cur.entity.CurShopTableArea;
/**
* 店铺区域 服务层
*
* @author mac
* @since 2025-02-18
*/
public interface CurShopTableAreaService extends IService<CurShopTableArea> {
}

View File

@ -0,0 +1,16 @@
package com.czg.mergedata.cur.service;
import com.czg.mergedata.common.resp.CzgResult;
import com.mybatisflex.core.service.IService;
import com.czg.mergedata.cur.entity.CurShopTable;
/**
* 台桌配置 服务层
*
* @author mac
* @since 2025-02-18
*/
public interface CurShopTableService extends IService<CurShopTable> {
CzgResult<String> mergeData();
}

View File

@ -0,0 +1,18 @@
package com.czg.mergedata.cur.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.mergedata.cur.entity.CurShopTableArea;
import com.czg.mergedata.cur.mapper.CurShopTableAreaMapper;
import com.czg.mergedata.cur.service.CurShopTableAreaService;
import org.springframework.stereotype.Service;
/**
* 店铺区域 服务层实现
*
* @author mac
* @since 2025-02-18
*/
@Service
public class CurShopTableAreaServiceImpl extends ServiceImpl<CurShopTableAreaMapper, CurShopTableArea> implements CurShopTableAreaService{
}

View File

@ -0,0 +1,112 @@
package com.czg.mergedata.cur.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.czg.mergedata.common.resp.CzgResult;
import com.czg.mergedata.common.utils.PageUtils;
import com.czg.mergedata.cur.entity.CurShopTableArea;
import com.czg.mergedata.cur.mapper.CurShopTableAreaMapper;
import com.czg.mergedata.cur.service.CurShopIdRelationService;
import com.czg.mergedata.old.entity.OldShopArea;
import com.czg.mergedata.old.entity.OldShopTable;
import com.czg.mergedata.old.service.OldShopAreaService;
import com.czg.mergedata.old.service.OldShopTableService;
import com.mybatisflex.core.paginate.Page;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.mergedata.cur.entity.CurShopTable;
import com.czg.mergedata.cur.mapper.CurShopTableMapper;
import com.czg.mergedata.cur.service.CurShopTableService;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 台桌配置 服务层实现
*
* @author mac
* @since 2025-02-18
*/
@Service
public class CurShopTableServiceImpl extends ServiceImpl<CurShopTableMapper, CurShopTable> implements CurShopTableService {
@Resource
private CurShopIdRelationService curShopIdRelationService;
@Resource
private CurShopTableAreaMapper curShopTableAreaMapper;
@Resource
private OldShopAreaService oldShopAreaService;
@Resource
private OldShopTableService oldShopTableService;
@Override
@Transactional
public CzgResult<String> mergeData() {
curShopTableAreaMapper.truncateTable();
getMapper().truncateTable();
Map<Long, Long> oldAndCurShopIdMap = curShopIdRelationService.getOldShopIdRelation();
execTableArea(oldAndCurShopIdMap);
execTable(oldAndCurShopIdMap);
return CzgResult.success("迁移成功");
}
private void execTableArea(Map<Long, Long> oldAndCurShopIdMap) {
Page<OldShopArea> page = oldShopAreaService.page(PageUtils.buildPage());
while (!page.getRecords().isEmpty()) {
List<OldShopArea> oldShopAreaList = page.getRecords();
saveTableArea(oldShopAreaList, oldAndCurShopIdMap);
page = oldShopAreaService.page(PageUtils.buildPage(page.getPageNumber() + 1));
}
}
private void execTable(Map<Long, Long> oldAndCurShopIdMap) {
Page<OldShopTable> page = oldShopTableService.page(PageUtils.buildPage());
while (!page.getRecords().isEmpty()) {
List<OldShopTable> oldShopTableList = page.getRecords();
saveTable(oldShopTableList, oldAndCurShopIdMap);
page = oldShopTableService.page(PageUtils.buildPage(page.getPageNumber() + 1));
}
}
private void saveTableArea(List<OldShopArea> oldShopAreaList, Map<Long, Long> oldAndCurShopIdMap) {
List<CurShopTableArea> curShopTableAreas = new ArrayList<>();
for (OldShopArea oldShopArea : oldShopAreaList) {
CurShopTableArea curShopTableArea = BeanUtil.toBean(oldShopArea, CurShopTableArea.class);
Long curShopId = oldAndCurShopIdMap.get(Long.valueOf(oldShopArea.getShopId()));
curShopTableArea.setShopId(curShopId == null ? 1L : curShopId);
curShopTableAreas.add(curShopTableArea);
}
curShopTableAreaMapper.insertBatch(curShopTableAreas);
}
private void saveTable(List<OldShopTable> oldShopTableList, Map<Long, Long> oldAndCurShopIdMap) {
List<CurShopTable> curShopTables = new ArrayList<>();
for (OldShopTable oldShopTable : oldShopTableList) {
CurShopTable curShopTable = BeanUtil.toBean(oldShopTable, CurShopTable.class);
Long curShopId = oldAndCurShopIdMap.get(Long.valueOf(oldShopTable.getShopId()));
curShopTable.setShopId(curShopId == null ? 1L : curShopId);
curShopTable.setTableCode(oldShopTable.getQrcode());
curShopTables.add(curShopTable);
}
saveBatch(curShopTables);
}
}

View File

@ -0,0 +1,71 @@
package com.czg.mergedata.old.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 店铺区域 实体类
*
* @author mac
* @since 2025-02-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_area")
public class OldShopArea implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* id
*/
@Id(keyType = KeyType.Auto)
private Integer id;
/**
* 店铺Id
*/
private Integer shopId;
/**
* 排序
*/
private Integer sort;
/**
* 区域名称
*/
private String name;
/**
* 区域价格
*/
private Integer price;
/**
* 图片
*/
private String view;
/**
* 建议人数 5-10
*/
private String capacityRange;
private Long createdAt;
private Long updatedAt;
}

View File

@ -0,0 +1,137 @@
package com.czg.mergedata.old.entity;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serial;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 台桌配置 实体类
*
* @author mac
* @since 2025-02-18
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table("tb_shop_table")
public class OldShopTable implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 自增id
*/
@Id(keyType = KeyType.Auto)
private Integer id;
/**
* 二维码
*/
private String qrcode;
private String name;
private Integer shopId;
/**
* 客座数,允许的客座数量
*/
private Integer maxCapacity;
/**
* 台桌排序
*/
private Integer sort;
/**
* 区域Id
*/
private Integer areaId;
/**
* 是否接受网络预定
*/
private Integer isPredate;
/**
* 网络预定台桌支付金额
*/
private BigDecimal predateAmount;
/**
* idle-空闲 using-使用中 subscribe预定closed--关台 opening 开台中cleaning 台桌清理中
*/
private String status;
/**
* 台桌计算价格类型0-低消类型amount 2计时类型
*/
private Integer type;
/**
* 当type=0时amount生效,为台桌的低消金额
*/
private BigDecimal amount;
/**
* 当type=2时perhour生效为计时类型,每小时收款金额
*/
private BigDecimal perhour;
/**
* 台桌展示图---预留
*/
private String view;
private Long createdAt;
private Long updatedAt;
/**
* 自动清台 0手动 1自动
*/
private Integer autoClear;
/**
* 使用时间
*/
private LocalDateTime useTime;
/**
* 结束时间
*/
private LocalDateTime endTime;
/**
* 已点商品数量
*/
private Integer productNum;
/**
* 总金额
*/
private BigDecimal totalAmount;
/**
* 应付金额
*/
private BigDecimal realAmount;
/**
* 用餐人数
*/
private Integer useNum;
}

View File

@ -0,0 +1,16 @@
package com.czg.mergedata.old.mapper;
import com.mybatisflex.annotation.UseDataSource;
import com.mybatisflex.core.BaseMapper;
import com.czg.mergedata.old.entity.OldShopArea;
/**
* 店铺区域 映射层
*
* @author mac
* @since 2025-02-18
*/
@UseDataSource("ds2")
public interface OldShopAreaMapper extends BaseMapper<OldShopArea> {
}

View File

@ -0,0 +1,16 @@
package com.czg.mergedata.old.mapper;
import com.mybatisflex.annotation.UseDataSource;
import com.mybatisflex.core.BaseMapper;
import com.czg.mergedata.old.entity.OldShopTable;
/**
* 台桌配置 映射层
*
* @author mac
* @since 2025-02-18
*/
@UseDataSource("ds2")
public interface OldShopTableMapper extends BaseMapper<OldShopTable> {
}

View File

@ -0,0 +1,14 @@
package com.czg.mergedata.old.service;
import com.mybatisflex.core.service.IService;
import com.czg.mergedata.old.entity.OldShopArea;
/**
* 店铺区域 服务层
*
* @author mac
* @since 2025-02-18
*/
public interface OldShopAreaService extends IService<OldShopArea> {
}

View File

@ -0,0 +1,14 @@
package com.czg.mergedata.old.service;
import com.mybatisflex.core.service.IService;
import com.czg.mergedata.old.entity.OldShopTable;
/**
* 台桌配置 服务层
*
* @author mac
* @since 2025-02-18
*/
public interface OldShopTableService extends IService<OldShopTable> {
}

View File

@ -0,0 +1,18 @@
package com.czg.mergedata.old.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.mergedata.old.entity.OldShopArea;
import com.czg.mergedata.old.mapper.OldShopAreaMapper;
import com.czg.mergedata.old.service.OldShopAreaService;
import org.springframework.stereotype.Service;
/**
* 店铺区域 服务层实现
*
* @author mac
* @since 2025-02-18
*/
@Service
public class OldShopAreaServiceImpl extends ServiceImpl<OldShopAreaMapper, OldShopArea> implements OldShopAreaService{
}

View File

@ -0,0 +1,18 @@
package com.czg.mergedata.old.service.impl;
import com.mybatisflex.spring.service.impl.ServiceImpl;
import com.czg.mergedata.old.entity.OldShopTable;
import com.czg.mergedata.old.mapper.OldShopTableMapper;
import com.czg.mergedata.old.service.OldShopTableService;
import org.springframework.stereotype.Service;
/**
* 台桌配置 服务层实现
*
* @author mac
* @since 2025-02-18
*/
@Service
public class OldShopTableServiceImpl extends ServiceImpl<OldShopTableMapper, OldShopTable> implements OldShopTableService{
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.mergedata.cur.mapper.CurShopTableAreaMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.mergedata.cur.mapper.CurShopTableMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.mergedata.old.mapper.OldShopAreaMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.czg.mergedata.old.mapper.OldShopTableMapper">
</mapper>