diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardFavorable/service/impl/CardFavorableRecordServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardFavorable/service/impl/CardFavorableRecordServiceImpl.java index af00732db..5f900aae1 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardFavorable/service/impl/CardFavorableRecordServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/marketingActivity/cardFavorable/service/impl/CardFavorableRecordServiceImpl.java @@ -234,11 +234,16 @@ public class CardFavorableRecordServiceImpl extends ServiceImpl queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(CardFavorable::getStoreId,cardFavorableRecord.getStoreId()); List list1 = cardFavorableService.list(queryWrapper1); - boolean isDrawDown = false; + //该店铺所有的优惠券id + ArrayList cardFavorableIdList = new ArrayList<>(); + /*if (CollectionUtils.isNotEmpty(list1)){ + cardFavorableIdList.add(list1.get(0).getId()); + }*/ //登录用户信息 AccountInfo nowAccountInfo = TokenUtil.getNowAccountInfo(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/utils/QrCodeUtils.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/utils/QrCodeUtils.java index 9f8e17a6e..824989588 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/utils/QrCodeUtils.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/member/utils/QrCodeUtils.java @@ -11,6 +11,7 @@ import com.fuint.business.storeInformation.service.ILJStoreService; import com.fuint.business.storeInformation.service.impl.LJStoreServiceImpl; import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; @@ -75,27 +76,34 @@ public class QrCodeUtils { g.setColor(Color.BLACK); // 查询当前店铺信息 - LJStore store = storeService.selectStoreByStoreId(storeId); + if (ObjectUtils.isNotEmpty(storeId)){ + LJStore store = storeService.selectStoreByStoreId(storeId); // 查询加油员信息 - LJStaff staff = null; - if (ObjectUtil.isNotEmpty(staffId)){ - staff = staffService.selectStaffById(staffId); - } - LJStaff staff1 = staffService.selectStaffByStoreId(storeId); + LJStaff staff = null; + if (ObjectUtil.isNotEmpty(staffId)){ + staff = staffService.selectStaffById(staffId); + } + LJStaff staff1 = staffService.selectStaffByStoreId(storeId); - // 店铺名称位置文字绘制到指定位置 - g.drawString(store.getName(), returnX(g,bufImg.getWidth(),store.getName()), 300); - // 加油员姓名位置文字绘制到指定位置 - if (ObjectUtil.isNotEmpty(staff)) { - g.drawString("加油员:"+staff.getRealName(), returnX(g, bufImg.getWidth(), "加油员:"+staff.getRealName()), 750); - } - // 站长名称位置文字绘制到指定位置 - g.drawString("站长名称:"+staff1.getRealName(), returnX(g, bufImg.getWidth(), "站长名称:"+staff1.getRealName()), 810); - // 服务监督电话位置文字绘制到指定位置 - g.drawString("服务监督电话:"+staff1.getMobile(), returnX(g, bufImg.getWidth(), "服务监督电话:"+staff1.getMobile()), 870); - // 店铺地址位置文字绘制到指定位置 + // 店铺名称位置文字绘制到指定位置 + g.drawString(store.getName(), returnX(g,bufImg.getWidth(),store.getName()), 300); + // 加油员姓名位置文字绘制到指定位置 + if (ObjectUtil.isNotEmpty(staff)) { + g.drawString("加油员:"+staff.getRealName(), returnX(g, bufImg.getWidth(), "加油员:"+staff.getRealName()), 750); + } + // 站长名称位置文字绘制到指定位置 + g.drawString("站长名称:"+staff1.getRealName(), returnX(g, bufImg.getWidth(), "站长名称:"+staff1.getRealName()), 810); + // 服务监督电话位置文字绘制到指定位置 + g.drawString("服务监督电话:"+staff1.getMobile(), returnX(g, bufImg.getWidth(), "服务监督电话:"+staff1.getMobile()), 870); + // 店铺地址位置文字绘制到指定位置 // g.drawString(store.getAddress(), returnX(g,bufImg.getWidth(),store.getAddress()), 900); - drawStringWithMultiLine(g,store.getAddress(), bufImg.getWidth()-20,20,940,10 ); + drawStringWithMultiLine(g,store.getAddress(), bufImg.getWidth()-20,20,940,10 ); + }else { + drawStringWithMultiLine(g,"欢迎光临", bufImg.getWidth()-20,20,940,10 ); + g.drawString("欢迎光临:", returnX(g, bufImg.getWidth(), "服务监督电话:"), 870); + + } + // // 将码牌编号文字绘制到指定位置 // g.drawString(storeNumber, 200, 800); @@ -228,4 +236,4 @@ public class QrCodeUtils { // //背景图片路径 loge图片 二维码 输出地址 病区 病房号 床号 // createLogoCodePicture(backgroundImage, logoImage, url, outImgPath, area, room); // } -} \ No newline at end of file +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/entity/OilOrder.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/entity/OilOrder.java index de903f7cf..71e3bbd63 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/entity/OilOrder.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/entity/OilOrder.java @@ -141,6 +141,7 @@ public class OilOrder extends BaseEntity implements Serializable { * 退款备注 */ private String refundRemark; + private String oilTagSn; /** * 油罐id */ diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java index db7be1759..4faeb0c1c 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/order/service/impl/OilOrderServiceImpl.java @@ -4,8 +4,10 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fuint.api.fuyou.entity.MerchantConfig; @@ -47,6 +49,9 @@ import com.fuint.business.petrolStationManagement.mapper.OilNumberMapper; import com.fuint.business.petrolStationManagement.service.*; import com.fuint.business.storeInformation.entity.LJStore; import com.fuint.business.storeInformation.service.ILJStoreService; +import com.fuint.business.tag.entity.OilTag; +import com.fuint.business.tag.service.OilTagService; +import com.fuint.business.tag.util.TagUtils; import com.fuint.business.userManager.entity.ChainStoreConfig; import com.fuint.business.userManager.entity.LJUser; import com.fuint.business.userManager.entity.LJUserGrade; @@ -1075,6 +1080,10 @@ public class OilOrderServiceImpl extends ServiceImpl i oilOrder.setOrderType("主订单"); oilOrder.setInvoicing("未开票"); oilOrder.setUserId(nowAccountInfo.getId()); + if (ObjectUtils.isNotEmpty(oilOrder.getOilTagSn())){ + String[] split = oilOrder.getOilTagSn().split("="); + oilOrder.setOilTagSn(split[1]); + } // 判断当前店铺是否存在此用户的会员信息,没有的话进行添加 LJStore store = storeService.selectStoreByStoreId(oilOrder.getStoreId()); UserBalance balance = userBalanceService.selectUserBalance(oilOrder.getUserId(), store.getChainStoreId()); @@ -1306,6 +1315,11 @@ public class OilOrderServiceImpl extends ServiceImpl i @Autowired private CardValudChildrensService cardValudChildrensService; + @Resource + private TagUtils tagUtils; + @Resource + private OilTagService oilTagService; + @Override public int updateOrderStatus(String orderNo, String status) throws Exception { int row = 0; @@ -1316,6 +1330,26 @@ public class OilOrderServiceImpl extends ServiceImpl i // oilOrder.setPayAmount(oilOrder.getOrderAmount()-oilOrder.getDiscountAmount()); oilOrder.setOrderStatus(status); if (status.equals("paid")){ + HashMap hashMap = new HashMap<>(); + String content = ""; + //语音播报 + if (ObjectUtils.isNotEmpty(oilOrder.getOilTagSn())){ + String oilTagSn = oilOrder.getOilTagSn(); + if (ObjectUtils.isNotEmpty(oilTagSn)){ + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(OilTag::getTagCodeSn,oilTagSn); + OilTag oilTag = oilTagService.getOne(queryWrapper); + if (ObjectUtils.isNotEmpty(oilTag)){ + hashMap.put("devName",oilTag.getSnCode()); + } + } + } + String oils = oilOrder.getOils(); + OilName oilName = oilNameService.getById(oils); + content = oilOrder.getOilGunNum()+"加油"+oilName.getOilName()+oilName.getOilType()+oilOrder.getOilNum()+"升,共计"+oilOrder.getPayAmount()+"元"; + hashMap.put("content",content); + tagUtils.voiceBroadcast(hashMap); + //tagUtils if (ObjectUtil.isNotEmpty(oilOrder.getUserId())) integralSettingsService.refuelPoints(oilOrder); oilOrder.setPayTime(new Date()); CardValueChildOrder cardValueChildOrder = cardValueChildOrderService.selectCardValueChildOrderByOrderNo(orderNo); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/OilTagController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/OilTagController.java new file mode 100644 index 000000000..108d2e75b --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/OilTagController.java @@ -0,0 +1,94 @@ +package com.fuint.business.tag.controller; + + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.tag.entity.OilTag; +import com.fuint.business.tag.service.OilTagService; +import com.fuint.business.tag.util.TagUtils; +import com.fuint.framework.web.BaseController; +import com.fuint.framework.web.ResponseObject; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.HashMap; + +/** + * 码牌配置表(OilTag)表控制层 + * + * @author makejava + * @since 2024-03-20 14:51:34 + */ +@RestController +@RequestMapping("business/tag/oilTag") +public class OilTagController extends BaseController { + /** + * 服务对象 + */ + @Resource + private OilTagService oilTagService; + + @Resource + private TagUtils tagUtils; + /** + * 分页查询所有数据 + * @return 所有数据 + */ + @GetMapping + public ResponseObject selectAll(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize, + @Param("cardFuelDiesel") OilTag oilTag) { + Page page = new Page(pageNo, pageSize); + return getSuccessResult(this.oilTagService.page(page, new QueryWrapper<>(oilTag))); + } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("{id}") + public ResponseObject selectOne(@PathVariable Serializable id) { + + HashMap hashMap = new HashMap<>(); + return getSuccessResult(this.oilTagService.getById(id)); + } + + /** + * 新增数据 + * + * @param oilTag 实体对象 + * @return 新增结果 + */ + @PostMapping + public ResponseObject insert(@RequestBody OilTag oilTag) throws Exception { + return getSuccessResult(this.oilTagService.add(oilTag)); + } + + /** + * 修改数据 + * + * @param oilTag 实体对象 + * @return 修改结果 + */ + @PutMapping + public ResponseObject update(@RequestBody OilTag oilTag) { + return getSuccessResult(this.oilTagService.updateById(oilTag)); + } + + /** + * 删除数据 + * + * @param id 主键结合 + * @return 删除结果 + */ + @DeleteMapping("{id}") + public ResponseObject delete(@PathVariable("id") Long id) { + return getSuccessResult(this.oilTagService.removeById(id)); + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeController.java new file mode 100644 index 000000000..2555dab09 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeController.java @@ -0,0 +1,89 @@ +package com.fuint.business.tag.controller; + + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.tag.dto.TagCodeDTO; +import com.fuint.business.tag.entity.TagCode; +import com.fuint.business.tag.service.TagCodeService; +import com.fuint.framework.web.BaseController; +import com.fuint.framework.web.ResponseObject; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.Serializable; + +/** + * 码牌二维码表(TagCode)表控制层 + * + * @author makejava + * @since 2024-03-20 15:30:34 + */ +@RestController +@RequestMapping("business/tag/tagCode") +public class TagCodeController extends BaseController { + /** + * 服务对象 + */ + @Resource + private TagCodeService tagCodeService; + + /** + * 分页查询所有数据 + * @return 所有数据 + */ + @GetMapping + public ResponseObject selectAll(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize, + @Param("cardFuelDiesel") TagCode tagCode) { + Page page = new Page(pageNo, pageSize); + return getSuccessResult(this.tagCodeService.page(page, new QueryWrapper<>(tagCode))); + } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("{id}") + public ResponseObject selectOne(@PathVariable Serializable id) { + return getSuccessResult(this.tagCodeService.getById(id)); + } + + /** + * 新增数据 + * + * @param tagCodeDTO 实体对象 + * @return 新增结果 + */ + @PostMapping + public ResponseObject insert(@RequestBody TagCodeDTO tagCodeDTO) throws Exception { + return getSuccessResult(this.tagCodeService.add(tagCodeDTO)); + } + + /** + * 修改数据 + * + * @param tagCode 实体对象 + * @return 修改结果 + */ + @PutMapping + public ResponseObject update(@RequestBody TagCode tagCode) { + return getSuccessResult(this.tagCodeService.updateById(tagCode)); + } + + /** + * 删除数据 + * + * @param id 主键结合 + * @return 删除结果 + */ + @DeleteMapping("{id}") + public ResponseObject delete(@PathVariable("id") Long id) { + return getSuccessResult(this.tagCodeService.removeById(id)); + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeRecordController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeRecordController.java new file mode 100644 index 000000000..6655bef47 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/controller/TagCodeRecordController.java @@ -0,0 +1,119 @@ +package com.fuint.business.tag.controller; + + + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.api.ApiController; +import com.baomidou.mybatisplus.extension.api.R; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.tag.dto.TagCodeRecordDTO; +import com.fuint.business.tag.entity.OilTag; +import com.fuint.business.tag.entity.TagCodeRecord; +import com.fuint.business.tag.service.OilTagService; +import com.fuint.business.tag.service.TagCodeRecordService; +import com.fuint.framework.exception.BusinessCheckException; +import com.fuint.framework.web.BaseController; +import com.fuint.framework.web.ResponseObject; +import org.apache.ibatis.annotations.Param; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.io.Serializable; +import java.util.List; + +/** + * 码牌绑定记录表(TagCodeRecord)表控制层 + * + * @author makejava + * @since 2024-03-20 17:09:30 + */ +@RestController +@RequestMapping("business/tag/tagCodeRecord") +public class TagCodeRecordController extends BaseController { + /** + * 服务对象 + */ + @Resource + private TagCodeRecordService tagCodeRecordService; + + @Resource + private OilTagService oilTagService; + + /** + * 分页查询所有数据 + * @return 所有数据 + */ + @GetMapping + public ResponseObject selectAll(@RequestParam(value = "pageNo",defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize, + @Param("cardFuelDiesel") TagCodeRecord tagCodeRecord) { + Page page = new Page(pageNo, pageSize); + return getSuccessResult(this.tagCodeRecordService.selectTagList(page, tagCodeRecord)); + } + + /** + * 通过主键查询单条数据 + * + * @param id 主键 + * @return 单条数据 + */ + @GetMapping("{id}") + public ResponseObject selectOne(@PathVariable Serializable id) { + return getSuccessResult(this.tagCodeRecordService.getById(id)); + } + + /** + * 码牌绑定到油站 + * + * @param tagCodeRecordDTO 实体对象 + * @return 新增结果 + */ + @PostMapping + public ResponseObject insert(@RequestBody TagCodeRecordDTO tagCodeRecordDTO) { + return getSuccessResult(this.tagCodeRecordService.add(tagCodeRecordDTO)); + } + + /** + * 码牌绑定到员工 + * + * @param tagCodeRecordDTO 实体对象 + * @return 新增结果 + */ + @PostMapping("staff") + public ResponseObject insertStaff(@RequestBody TagCodeRecordDTO tagCodeRecordDTO) throws BusinessCheckException { + return getSuccessResult(this.tagCodeRecordService.insertStaff(tagCodeRecordDTO)); + } + + /** + * 修改数据 + * + * @param tagCodeRecord 实体对象 + * @return 修改结果 + */ + @PutMapping + public ResponseObject update(@RequestBody TagCodeRecord tagCodeRecord) { + + TagCodeRecord tagCodeRecord1 = tagCodeRecordService.getById(tagCodeRecord.getId()); + tagCodeRecord1.setStaffId(""); + tagCodeRecord1.setStaffName(""); + this.tagCodeRecordService.updateById(tagCodeRecord1); + //更新码牌绑定员工状态 + OilTag oilTag = new OilTag(); + oilTag.setId(tagCodeRecord1.getOilTagId()); + oilTag.setMtStatus("0"); + oilTagService.updateById(oilTag); + return getSuccessResult(true); + } + + /** + * 删除数据 + * + * @param id 主键结合 + * @return 删除结果 + */ + @DeleteMapping("id") + public ResponseObject delete(@PathVariable Long id) { + return getSuccessResult(this.tagCodeRecordService.removeById(id)); + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeDTO.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeDTO.java new file mode 100644 index 000000000..0d101a7ae --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeDTO.java @@ -0,0 +1,12 @@ +package com.fuint.business.tag.dto; + +import com.fuint.business.tag.entity.TagCode; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TagCodeDTO extends TagCode implements Serializable { + //生成数量 + private int total; +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeRecordDTO.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeRecordDTO.java new file mode 100644 index 000000000..e9a29b7ac --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/dto/TagCodeRecordDTO.java @@ -0,0 +1,13 @@ +package com.fuint.business.tag.dto; + +import com.fuint.business.tag.entity.TagCodeRecord; +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class TagCodeRecordDTO extends TagCodeRecord implements Serializable { + private List oilTagList; + private String status; +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/OilTag.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/OilTag.java new file mode 100644 index 000000000..b55b4f2bb --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/OilTag.java @@ -0,0 +1,48 @@ +package com.fuint.business.tag.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; + +/** + * 码牌配置表(OilTag)表实体类 + * + * @author makejava + * @since 2024-03-20 14:51:34 + */ +@SuppressWarnings("serial") +@Data +public class OilTag extends Model { + //主键id + @TableId(type = IdType.AUTO) + private Integer id; + //二维码id + private Integer tagCodeId; + //二维码SN号 + private String tagCodeSn; + //厂家名字 + private String companyName; + //码牌SN号 + private String snCode; + //是否已绑定油站 0:未绑定 1:已绑定 + private String status; + //是否已绑定员工 0:未绑定 1:已绑定 + private String mtStatus; + //创建者 + private String createBy; + //创建时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date createTime; + //更新者 + private String updateBy; + //更新时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date updateTime; + } + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCode.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCode.java new file mode 100644 index 000000000..46fa52fa9 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCode.java @@ -0,0 +1,42 @@ +package com.fuint.business.tag.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; + +/** + * 码牌二维码表(TagCode)表实体类 + * + * @author makejava + * @since 2024-03-20 15:30:34 + */ +@SuppressWarnings("serial") +@Data +public class TagCode extends Model { + //主键id + @TableId(type = IdType.AUTO) + private Integer id; + //二维码SN号 + private String tagCodeSn; + //图片地址 + private String imageUrl; + //码牌二维码:域名+字符串 + private String collection; + //创建时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date createTime; + //更新时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date updateTime; + //创建用户 + private String createBy; + //修改用户 + private String updateBy; + } + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCodeRecord.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCodeRecord.java new file mode 100644 index 000000000..cab3a8cbb --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/entity/TagCodeRecord.java @@ -0,0 +1,48 @@ +package com.fuint.business.tag.entity; + +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.io.Serializable; + +/** + * 码牌绑定记录表(TagCodeRecord)表实体类 + * + * @author makejava + * @since 2024-03-20 17:09:30 + */ +@SuppressWarnings("serial") +@Data +public class TagCodeRecord extends Model { + //主键id + @TableId(type = IdType.AUTO) + private Integer id; + //所属连锁店id + private Integer chainStorId; + //店铺id + private Integer storeId; + //油站名称 + private String storeName; + //码牌id + private Integer oilTagId; + //员工id + private String staffId; + //员工名字 + private String staffName; + //创建时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date createTime; + //更新时间 + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+8") + private Date updateTime; + //创建用户 + private String createBy; + //修改用户 + private String updateBy; + } + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/OilTagMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/OilTagMapper.java new file mode 100644 index 000000000..32a460f0c --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/OilTagMapper.java @@ -0,0 +1,15 @@ +package com.fuint.business.tag.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.fuint.business.tag.entity.OilTag; + +/** + * 码牌配置表(OilTag)表数据库访问层 + * + * @author makejava + * @since 2024-03-20 14:51:34 + */ +public interface OilTagMapper extends BaseMapper { + +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeMapper.java new file mode 100644 index 000000000..4173a7ffd --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeMapper.java @@ -0,0 +1,15 @@ +package com.fuint.business.tag.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.fuint.business.tag.entity.TagCode; + +/** + * 码牌二维码表(TagCode)表数据库访问层 + * + * @author makejava + * @since 2024-03-20 15:30:34 + */ +public interface TagCodeMapper extends BaseMapper { + +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeRecordMapper.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeRecordMapper.java new file mode 100644 index 000000000..c2a49ab9c --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/TagCodeRecordMapper.java @@ -0,0 +1,20 @@ +package com.fuint.business.tag.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.fuint.business.tag.entity.TagCodeRecord; +import com.fuint.business.tag.vo.TagCodeRecordVO; +import org.apache.ibatis.annotations.Param; + +/** + * 码牌绑定记录表(TagCodeRecord)表数据库访问层 + * + * @author makejava + * @since 2024-03-20 17:09:30 + */ +public interface TagCodeRecordMapper extends BaseMapper { + + IPage selectTagList(Page page, @Param("tagCodeRecord") TagCodeRecord tagCodeRecord); +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/xml/TagCodeRecordMapper.xml b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/xml/TagCodeRecordMapper.xml new file mode 100644 index 000000000..9b350e7b5 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/mapper/xml/TagCodeRecordMapper.xml @@ -0,0 +1,26 @@ + + + + + SELECT + ot.*, + tc.image_url, + tc.collection, + tcr.store_id, + tcr.store_name, + tcr.staff_name + from oil_tag ot + left join tag_code_record tcr on tcr.oil_tag_id = ot.id + left join tag_code tc on ot.tag_code_id = tc.id + + + + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/OilTagService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/OilTagService.java new file mode 100644 index 000000000..58052d88d --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/OilTagService.java @@ -0,0 +1,19 @@ +package com.fuint.business.tag.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.fuint.business.tag.entity.OilTag; + +import java.io.FileNotFoundException; +import java.io.IOException; + +/** + * 码牌配置表(OilTag)表服务接口 + * + * @author makejava + * @since 2024-03-20 14:51:34 + */ +public interface OilTagService extends IService { + + boolean add(OilTag oilTag) throws Exception; +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeRecordService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeRecordService.java new file mode 100644 index 000000000..5a4ba0e91 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeRecordService.java @@ -0,0 +1,27 @@ +package com.fuint.business.tag.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import com.fuint.business.tag.dto.TagCodeRecordDTO; +import com.fuint.business.tag.entity.TagCodeRecord; +import com.fuint.business.tag.vo.TagCodeRecordVO; +import com.fuint.framework.exception.BusinessCheckException; + +import java.util.List; + +/** + * 码牌绑定记录表(TagCodeRecord)表服务接口 + * + * @author makejava + * @since 2024-03-20 17:09:30 + */ +public interface TagCodeRecordService extends IService { + + boolean add(TagCodeRecordDTO tagCodeRecordDTO); + + IPage selectTagList(Page page, TagCodeRecord tagCodeRecord); + + boolean insertStaff(TagCodeRecordDTO tagCodeRecordDTO) throws BusinessCheckException; +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeService.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeService.java new file mode 100644 index 000000000..3411f9fd8 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/TagCodeService.java @@ -0,0 +1,19 @@ +package com.fuint.business.tag.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.fuint.business.tag.dto.TagCodeDTO; +import com.fuint.business.tag.entity.TagCode; + +import java.io.FileNotFoundException; + +/** + * 码牌二维码表(TagCode)表服务接口 + * + * @author makejava + * @since 2024-03-20 15:30:34 + */ +public interface TagCodeService extends IService { + + boolean add(TagCodeDTO tagCodeDTO) throws Exception; +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/OilTagServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/OilTagServiceImpl.java new file mode 100644 index 000000000..519e0a93f --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/OilTagServiceImpl.java @@ -0,0 +1,45 @@ +package com.fuint.business.tag.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuint.business.member.utils.QrCodeUtils; +import com.fuint.business.tag.entity.TagCode; +import com.fuint.business.tag.mapper.OilTagMapper; +import com.fuint.business.tag.entity.OilTag; +import com.fuint.business.tag.mapper.TagCodeMapper; +import com.fuint.business.tag.service.OilTagService; +import com.fuint.business.tag.service.TagCodeService; +import com.fuint.module.backendApi.controller.BackendFileController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.*; + +/** + * 码牌配置表(OilTag)表服务实现类 + * + * @author makejava + * @since 2024-03-20 14:51:34 + */ +@Service("oilTagService") +public class OilTagServiceImpl extends ServiceImpl implements OilTagService { + + @Resource + private TagCodeService tagCodeService; + + + @Override + public boolean add(OilTag oilTag) throws Exception { + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TagCode::getTagCodeSn, oilTag.getTagCodeSn()); + TagCode tagCode = tagCodeService.getOne(queryWrapper); + //TagCode tagCode = tagCodeService.getById(oilTag.getTagCodeId()); + oilTag.setTagCodeId(tagCode.getId()); + return save(oilTag); + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeRecordServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeRecordServiceImpl.java new file mode 100644 index 000000000..9c8c31459 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeRecordServiceImpl.java @@ -0,0 +1,110 @@ +package com.fuint.business.tag.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuint.business.member.entity.LJStaff; +import com.fuint.business.member.service.ILJStaffService; +import com.fuint.business.store.entity.MtStore; +import com.fuint.business.store.service.StoreService; +import com.fuint.business.tag.dto.TagCodeRecordDTO; +import com.fuint.business.tag.entity.OilTag; +import com.fuint.business.tag.mapper.TagCodeRecordMapper; +import com.fuint.business.tag.entity.TagCodeRecord; +import com.fuint.business.tag.service.OilTagService; +import com.fuint.business.tag.service.TagCodeRecordService; +import com.fuint.business.tag.vo.TagCodeRecordVO; +import com.fuint.common.dto.AccountInfo; +import com.fuint.common.service.StaffService; +import com.fuint.common.util.TokenUtil; +import com.fuint.framework.exception.BusinessCheckException; +import com.fuint.repository.model.MtStaff; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 码牌绑定记录表(TagCodeRecord)表服务实现类 + * + * @author makejava + * @since 2024-03-20 17:09:30 + */ +@Service("tagCodeRecordService") +public class TagCodeRecordServiceImpl extends ServiceImpl implements TagCodeRecordService { + + @Resource + private OilTagService oilTagService; + + @Resource + private TagCodeRecordMapper tagCodeRecordMapper; + + @Resource + private StoreService storeService; + + @Resource + private ILJStaffService mtStaffService; + + @Override + @Transactional + public boolean add(TagCodeRecordDTO tagCodeRecordDTO) { + boolean flag = false; + TagCodeRecord tagCodeRecord = new TagCodeRecord(); + if (ObjectUtils.isNotEmpty(tagCodeRecordDTO) && CollectionUtils.isNotEmpty(tagCodeRecordDTO.getOilTagList())){ + for (Integer integer : tagCodeRecordDTO.getOilTagList()) { + OilTag oilTag = new OilTag(); + //码牌绑定店铺 + tagCodeRecord.setOilTagId(integer); + if (ObjectUtils.isNotEmpty(tagCodeRecordDTO.getChainStorId())){ + tagCodeRecord.setChainStorId(tagCodeRecordDTO.getChainStorId()); + } + if (ObjectUtils.isNotEmpty(tagCodeRecordDTO.getStoreId())){ + tagCodeRecord.setStoreId(tagCodeRecordDTO.getStoreId()); + MtStore mtStore = storeService.getById(tagCodeRecordDTO.getStoreId()); + tagCodeRecord.setStoreName(mtStore.getName()); + } + flag = save(tagCodeRecord); + //更新码牌绑定状态 + oilTag.setId(integer); + oilTag.setStatus(tagCodeRecordDTO.getStatus()); + flag = oilTagService.updateById(oilTag); + } + } + return flag; + } + + @Override + public IPage selectTagList(Page page, TagCodeRecord tagCodeRecord) { + return tagCodeRecordMapper.selectTagList(page,tagCodeRecord); + } + + @Override + @Transactional + public boolean insertStaff(TagCodeRecordDTO tagCodeRecordDTO) throws BusinessCheckException { + + //根据码牌id查询 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(TagCodeRecord::getOilTagId,tagCodeRecordDTO.getOilTagId()); + TagCodeRecord tagCodeRecord = getOne(queryWrapper); + //绑定员工 + if (ObjectUtils.isNotEmpty(tagCodeRecordDTO) && ObjectUtils.isNotEmpty(tagCodeRecordDTO.getStaffId())){ + LJStaff ljStaff = mtStaffService.selectStaffById(Integer.parseInt(tagCodeRecordDTO.getStaffId())); + tagCodeRecord.setStaffId(tagCodeRecordDTO.getStaffId()); + tagCodeRecord.setStaffName(ljStaff.getRealName()); + //更新码牌记录表 + updateById(tagCodeRecord); + //更新码牌绑定员工状态 + OilTag oilTag = new OilTag(); + oilTag.setId(tagCodeRecordDTO.getOilTagId()); + oilTag.setMtStatus("1"); + oilTagService.updateById(oilTag); + } + return false; + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeServiceImpl.java new file mode 100644 index 000000000..74a14d473 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/service/impl/TagCodeServiceImpl.java @@ -0,0 +1,83 @@ +package com.fuint.business.tag.service.impl; + +import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fuint.business.member.utils.QrCodeUtils; +import com.fuint.business.tag.dto.TagCodeDTO; +import com.fuint.business.tag.mapper.TagCodeMapper; +import com.fuint.business.tag.entity.TagCode; +import com.fuint.business.tag.service.TagCodeService; +import com.fuint.module.backendApi.controller.BackendFileController; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.util.Random; + +/** + * 码牌二维码表(TagCode)表服务实现类 + * + * @author makejava + * @since 2024-03-20 15:30:34 + */ +@Service("tagCodeService") +public class TagCodeServiceImpl extends ServiceImpl implements TagCodeService { + + @Autowired + private QrCodeUtils qrCodeUtils; + + @Autowired + private BackendFileController backendFileController; + + @Override + @Transactional + public boolean add(TagCodeDTO tagCodeDTO) throws Exception { + + boolean flag = false; + if (ObjectUtils.isNotEmpty(tagCodeDTO) && ObjectUtils.isNotEmpty(tagCodeDTO.getTotal())){ + int total = tagCodeDTO.getTotal(); + for (int i = 0; i < total; i++) { + Random random = new Random(); + int i1 = random.nextInt(90000000); + //String url = "https://oil.youkerr.com/"; + String url = "https://www.tuofeng.cc/oilStation?sn=byx"+i1; + // String finalPath="/temp/qrCode/" + oilTag.getSnCode() + ".jpg"; + //String finalPath="D:\\office\\document\\photos\\tagCode\\"+"str"+i+".jpg"; + String finalPath="/temp/qrCode/" + "byx"+i1 + ".jpg"; + + TagCode tagCode = new TagCode(); + + tagCode.setCollection(url); + tagCode.setTagCodeSn("byx"+i1); + + //在图片上生成二维码 + String backgroundImage = "static/qrCodeImg/huanyingguanglin2.jpg"; + InputStream backgroundStream = this.getClass().getClassLoader().getResourceAsStream(backgroundImage); + qrCodeUtils.createLogoCodePicture(backgroundStream, null, url, finalPath, null,null); + File file1 = new File("/temp/qrCode/"); + // 判断目录是否存在 + if (!file1.exists()) { + file1.mkdirs(); + } + + File file =new File(finalPath); + FileInputStream fileInputStream =new FileInputStream(file); + MultipartFile resFile = new MockMultipartFile("file", file.getName(), null, fileInputStream); +// 返回图片路径 + String saveFile = backendFileController.saveFile(resFile); + //return saveFile; + tagCode.setImageUrl(finalPath); + flag = save(tagCode); + } + } + + return flag; + } +} + diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/util/TagUtils.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/util/TagUtils.java new file mode 100644 index 000000000..6a7a2dd07 --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/util/TagUtils.java @@ -0,0 +1,106 @@ +package com.fuint.business.tag.util; + +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Component; + +import java.util.*; + +@Component +@Slf4j +public class TagUtils { + //语音播报方法 + public void voiceBroadcast(HashMap hashMap){ + + //获取token + HashMap objectMap = new HashMap<>(); + String requestId = generateRandomString(8); + String appSecret = "2023bsjZF2055IDW"; + long time = new Date().getTime(); + objectMap.put("appId","ZF2055"); + objectMap.put("timestamp",time); + objectMap.put("requestId",requestId); + objectMap.put("userCode","ZF2055"); + log.info("获取token"); + String token = getToken(objectMap, appSecret); + log.info("token:"+token); + + //语音播报方法 + String url = "https://ioe.car900.com/v1/openApi/dev/controlDevice.json"; + url += "?appId=ZF2055&requestId="+requestId+"×tamp="+time+"&userCode=ZF2055"+"&token="+token+ + "&devName="+hashMap.get("devName")+"&bizType=2"+"&content="+hashMap.get("content"); + log.info("语音播报方法"); + + HttpResponse execute = HttpUtil.createGet(url).execute(); + + } + + + /** + * 获取token + * + * @param objectMap 接口请求参数appId,timestamp,requestId,userCode + * @param appSecret 密钥 + * @return + */ + public static String getToken(Map objectMap, String appSecret) { + StringBuffer content = new StringBuffer(); + List keys = new ArrayList(); + for (String key : objectMap.keySet()) { + switch (key) { + case "appId": + keys.add(key); + break; + case "timestamp": + keys.add(key); + break; + case "requestId": + keys.add(key); + break; + case "userCode": + keys.add(key); + break; + } + } + Collections.sort(keys); + for (int i = 0; i < keys.size(); i++) { + String key = keys.get(i).toString(); + String value = objectMap.get(key).toString(); + if (StringUtils.isNotBlank(key) && StringUtils.isNotBlank(value)) { + content.append(key).append(value); + } else { + return "key:" + key + "的值非法"; + } + + } + System.out.println("加密字符串:" + content); + + // 加密后的字符串 + String md5str = DigestUtils.md5Hex(String.valueOf(content.append(appSecret))); + //32位,大写 + String md532Upper=md5str.toUpperCase(); + return md532Upper; + } + + + //生成随机字符串 + public static String generateRandomString(int length) { + + String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; // 定义包含所有字母大小写的字符集合 + + StringBuilder sb = new StringBuilder(); + Random random = new Random(); + + for (int i = 0; i < length; i++) { + char c = characters.charAt(random.nextInt(characters.length())); // 从字符集合中随机选取一个字符 + + sb.append(c); // 将字符添加到字符串构建器中 + } + return sb.toString(); + } + + +} diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/vo/TagCodeRecordVO.java b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/vo/TagCodeRecordVO.java new file mode 100644 index 000000000..6949fd25b --- /dev/null +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/business/tag/vo/TagCodeRecordVO.java @@ -0,0 +1,18 @@ +package com.fuint.business.tag.vo; + +import com.fuint.business.tag.entity.OilTag; +import lombok.Data; + +import java.io.Serializable; + +@Data +public class TagCodeRecordVO extends OilTag implements Serializable { + //图片地址 + private String imageUrl; + //码牌二维码:域名+字符串 + private String collection; + //油站名称 + private String storeName; + //员工名字 + private String staffName; +}