From 867d36b4b49e3636f754c9f270561dde35e8f77d Mon Sep 17 00:00:00 2001 From: xinsin <2890826955@qq.com> Date: Fri, 9 Jun 2023 13:42:28 +0800 Subject: [PATCH] 123 --- pom.xml | 2 +- .../xinsin/controller/OrderController.java | 2 +- .../controller/WebSocketController.java | 6 +- src/main/java/top/xinsin/pojo/Order.java | 208 +----------------- .../java/top/xinsin/pojo/OrderByExcel.java | 67 ++++++ .../java/top/xinsin/service/OrderService.java | 63 +++++- .../top/xinsin/service/WebSocketService.java | 67 +++--- .../java/top/xinsin/util/ExcelParserUtil.java | 15 +- .../java/top/xinsin/util/StringConstant.java | 1 + src/main/resources/application.yml | 12 +- template/example.xlsx | Bin 9922 -> 10189 bytes 11 files changed, 187 insertions(+), 256 deletions(-) create mode 100644 src/main/java/top/xinsin/pojo/OrderByExcel.java diff --git a/pom.xml b/pom.xml index a38f594..5c7e053 100644 --- a/pom.xml +++ b/pom.xml @@ -130,7 +130,7 @@ com.alibaba easyexcel - 3.2.1 + 3.3.2 org.springframework.boot diff --git a/src/main/java/top/xinsin/controller/OrderController.java b/src/main/java/top/xinsin/controller/OrderController.java index 923f33a..de35a04 100644 --- a/src/main/java/top/xinsin/controller/OrderController.java +++ b/src/main/java/top/xinsin/controller/OrderController.java @@ -49,5 +49,5 @@ public class OrderController { public void downloadTemplate(HttpServletResponse response) {this.orderService.downloadTemplate(response);} @RequestMapping(path = "/uploadBatch", method = RequestMethod.POST) - public void uploadBatch(@RequestParam("file") MultipartFile file) {this.orderService.uploadBatch(file);} + public R uploadBatch(@RequestParam("file") MultipartFile file) {return this.orderService.uploadBatch(file);} } diff --git a/src/main/java/top/xinsin/controller/WebSocketController.java b/src/main/java/top/xinsin/controller/WebSocketController.java index 0b23272..0bc26ea 100644 --- a/src/main/java/top/xinsin/controller/WebSocketController.java +++ b/src/main/java/top/xinsin/controller/WebSocketController.java @@ -37,7 +37,7 @@ public class WebSocketController { this.userId = userId; //加入map webSocketMap.put(userId, this); - R stringR = webSocketService.addVerify(userId); + R stringR = webSocketService.addVerify(userId,this); sendMessageByUserId(userId, stringR); } @OnClose @@ -73,9 +73,9 @@ public class WebSocketController { log.error("用户{}不在线",userId); } } - @Scheduled(fixedRate = 10000) + @Scheduled(fixedRate = 1000) public void verifyTime(){ - List expireTimes = webSocketService.getExpireTimes(); + List expireTimes = webSocketService.getExpireTimes(webSocketMap.keys()); expireTimes.forEach(e -> { if(webSocketMap.containsKey(e)){ webSocketMap.get(e).sendMessage(JSON.toJSONString(R.success(new JSONObject().fluentPut("info","当前登录用户已过期")))); diff --git a/src/main/java/top/xinsin/pojo/Order.java b/src/main/java/top/xinsin/pojo/Order.java index c958d39..ea40c59 100644 --- a/src/main/java/top/xinsin/pojo/Order.java +++ b/src/main/java/top/xinsin/pojo/Order.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; +import lombok.experimental.Accessors; import org.springframework.format.annotation.DateTimeFormat; import java.io.Serial; @@ -22,264 +23,61 @@ import java.util.Date; */ @TableName("shop_order") @ExcelIgnoreUnannotated +@Accessors(chain = true) +@Data public class Order implements Serializable { @Serial private static final long serialVersionUID = 1L; @ExcelIgnore @TableId(value = "id", type = IdType.AUTO) private Integer id; - @ExcelProperty({"订单号"}) @TableField("order_no") private String orderNo; - @ExcelProperty({"下单时间"}) @TableField("order_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date orderTime; - @ExcelProperty({"订单状态"}) @TableField("order_status") private String orderStatus; - @ExcelProperty({"旺旺号"}) @TableField("wang_no") private String wangNo; - @ExcelProperty({"微信|qq账号"}) @TableField("wechat_no") private String wechatNo; - @ExcelProperty({"支付宝账号"}) @TableField("alipay_no") private String alipayNo; - @ExcelProperty({"付款金额"}) @TableField("pay_amt") private Double payAmt; - @ExcelProperty({"店铺名称"}) @TableField("store_id") private Integer storeId; - @ExcelProperty({"佣金"}) @TableField("commission") private Double commission; - @ExcelProperty({"支付宝名称"}) @TableField("alipay_name") private String alipayName; - @ExcelProperty({"放单人"}) @TableField("rp_name") private String rpName; - @ExcelProperty({"放单人微信名"}) @TableField("rp_wechat_name") private String rpWechatName; - @ExcelProperty({"备注"}) @TableField("remark") private String remark; - @ExcelProperty({"买家电话"}) @TableField("phone_number") private String phoneNumber; - @ExcelProperty({"银行卡号"}) @TableField("card_no") private String cardNo; - @ExcelProperty({"插旗"}) @TableField("flag") private Integer flag; - @ExcelProperty({"插旗备注"}) @TableField("flag_remark") private String flagRemark; - @ExcelProperty({"付款时间"}) @TableField("pay_time") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date payTime; - @ExcelProperty({"收货地址"}) @TableField("address") private String address; - @ExcelProperty({"商品id"}) @TableField("shop_id") private Integer shopId; - @ExcelProperty({"sku"}) @TableField("sku") private String sku; @ExcelIgnore @TableField(exist = false) private String storeName; - - public Integer getId() { - return id; - } - - public void setId(Integer id) { - this.id = id; - } - - public String getOrderNo() { - return orderNo; - } - - public void setOrderNo(String orderNo) { - this.orderNo = orderNo; - } - - public Date getOrderTime() { - return orderTime; - } - - public void setOrderTime(Date orderTime) { - this.orderTime = orderTime; - } - - public String getOrderStatus() { - return orderStatus; - } - - public void setOrderStatus(String orderStatus) { - this.orderStatus = orderStatus; - } - - public String getWangNo() { - return wangNo; - } - - public void setWangNo(String wangNo) { - this.wangNo = wangNo; - } - - public String getWechatNo() { - return wechatNo; - } - - public void setWechatNo(String wechatNo) { - this.wechatNo = wechatNo; - } - - public String getAlipayNo() { - return alipayNo; - } - - public void setAlipayNo(String alipayNo) { - this.alipayNo = alipayNo; - } - - public Double getPayAmt() { - return payAmt; - } - - public void setPayAmt(Double payAmt) { - this.payAmt = payAmt; - } - - public Integer getStoreId() { - return storeId; - } - - public void setStoreId(Integer storeId) { - this.storeId = storeId; - } - - public Double getCommission() { - return commission; - } - - public void setCommission(Double commission) { - this.commission = commission; - } - - public String getAlipayName() { - return alipayName; - } - - public void setAlipayName(String alipayName) { - this.alipayName = alipayName; - } - - public String getRpName() { - return rpName; - } - - public void setRpName(String rpName) { - this.rpName = rpName; - } - - public String getRpWechatName() { - return rpWechatName; - } - - public void setRpWechatName(String rpWechatName) { - this.rpWechatName = rpWechatName; - } - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getCardNo() { - return cardNo; - } - - public void setCardNo(String cardNo) { - this.cardNo = cardNo; - } - - public Integer getFlag() { - return flag; - } - - public void setFlag(Integer flag) { - this.flag = flag; - } - - public String getFlagRemark() { - return flagRemark; - } - - public void setFlagRemark(String flagRemark) { - this.flagRemark = flagRemark; - } - - public Date getPayTime() { - return payTime; - } - - public void setPayTime(Date payTime) { - this.payTime = payTime; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - public Integer getShopId() { - return shopId; - } - - public void setShopId(Integer shopId) { - this.shopId = shopId; - } - - public String getSku() { - return sku; - } - - public void setSku(String sku) { - this.sku = sku; - } - - public String getStoreName() { - return storeName; - } - - public void setStoreName(String storeName) { - this.storeName = storeName; - } } diff --git a/src/main/java/top/xinsin/pojo/OrderByExcel.java b/src/main/java/top/xinsin/pojo/OrderByExcel.java new file mode 100644 index 0000000..cd452f1 --- /dev/null +++ b/src/main/java/top/xinsin/pojo/OrderByExcel.java @@ -0,0 +1,67 @@ +package top.xinsin.pojo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.format.DateTimeFormat; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * @author xinsin + * Created On 2023/6/9 09:25 + * @version 1.0 + */ +@Getter +@Setter +@EqualsAndHashCode +@ExcelIgnoreUnannotated +public class OrderByExcel { + @ExcelProperty("订单号") + private String orderNo; + @ExcelProperty("下单时间") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private String orderTime; + @ExcelProperty("订单状态") + private String orderStatus; + @ExcelProperty("旺旺号") + private String wangNo; + @ExcelProperty("微信|qq账号") + private String wechatNo; + @ExcelProperty("支付宝账号") + private String alipayNo; + @ExcelProperty("付款金额") + private String payAmt; + @ExcelProperty("店铺名称") + private String storeId; + @ExcelProperty("佣金") + private String commission; + @ExcelProperty("支付宝名称") + private String alipayName; + @ExcelProperty("放单人") + private String rpName; + @ExcelProperty("放单人微信名") + private String rpWechatName; + @ExcelProperty("备注") + private String remark; + @ExcelProperty("买家电话") + private String phoneNumber; + @ExcelProperty("银行卡号") + private String cardNo; + @ExcelProperty("插旗") + private String flag; + @ExcelProperty("插旗备注") + private String flagRemark; + @ExcelProperty("付款时间") + @DateTimeFormat("yyyy-MM-dd HH:mm:ss") + private String payTime; + @ExcelProperty("收货地址") + private String address; + @ExcelProperty("商品id") + private String shopId; + @ExcelProperty("sku") + private String sku; +} diff --git a/src/main/java/top/xinsin/service/OrderService.java b/src/main/java/top/xinsin/service/OrderService.java index c9d7488..60ef6a8 100644 --- a/src/main/java/top/xinsin/service/OrderService.java +++ b/src/main/java/top/xinsin/service/OrderService.java @@ -1,18 +1,17 @@ package top.xinsin.service; import com.alibaba.excel.EasyExcel; +import com.alibaba.excel.read.listener.PageReadListener; import com.alibaba.fastjson2.JSONObject; -import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import jakarta.servlet.http.HttpServletResponse; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import top.xinsin.enums.OrderStatus; import top.xinsin.enums.SearchType; @@ -21,9 +20,8 @@ import top.xinsin.mapper.OrderMapper; import top.xinsin.mapper.StoreMapper; import top.xinsin.pojo.Commission; import top.xinsin.pojo.Order; +import top.xinsin.pojo.OrderByExcel; import top.xinsin.pojo.Store; -import top.xinsin.pojo.vo.OrderVO; -import top.xinsin.util.ExcelParserUtil; import top.xinsin.util.HttpCodes; import top.xinsin.util.R; @@ -31,8 +29,14 @@ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; /** * @author xinsin @@ -169,11 +173,48 @@ public class OrderService extends ServiceImpl implements Orde } @SneakyThrows - public void uploadBatch(MultipartFile file) { - try { - EasyExcel.read(file.getInputStream(), Order.class, new ExcelParserUtil(this)).headRowNumber(2).sheet().doRead(); - } catch (Throwable var3) { - throw var3; - } + @Transactional + public R uploadBatch(MultipartFile file) { + DateFormat fmt =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + AtomicInteger total = new AtomicInteger(); + AtomicBoolean status = new AtomicBoolean(false); + EasyExcel.read(file.getInputStream(),OrderByExcel.class,new PageReadListener(list -> { + list.remove(0); + total.addAndGet(list.size()); + List orders = new ArrayList<>(); + list.forEach(e -> { + try { + orders.add(new Order() + .setOrderNo(e.getOrderNo()) + .setOrderTime(e.getOrderTime() != null ? fmt.parse(e.getOrderTime()) : null) + .setOrderStatus(e.getOrderStatus()) + .setWangNo(e.getWangNo()) + .setWechatNo(e.getWechatNo()) + .setAlipayNo(e.getAlipayNo()) + .setPayAmt(e.getPayAmt() != null ? Double.parseDouble(e.getPayAmt()) : null) + .setStoreId(e.getStoreId() != null ? Integer.parseInt(e.getStoreId()) : null) + .setCommission(e.getCommission() != null ? Double.parseDouble(e.getCommission()) : null) + .setAlipayName(e.getAlipayName()) + .setRpName(e.getRpName()) + .setRpWechatName(e.getRpWechatName()) + .setRemark(e.getRemark()) + .setPhoneNumber(e.getPhoneNumber()) + .setCardNo(e.getCardNo()) + .setFlag(e.getFlag() != null ? Integer.parseInt(e.getFlag()) : null) + .setFlagRemark(e.getFlagRemark()) + .setPayTime(e.getPayTime() != null ? fmt.parse(e.getPayTime()) : null) + .setAddress(e.getAddress()) + .setShopId(e.getShopId() != null ? Integer.parseInt(e.getStoreId()) : null) + .setSku(e.getSku()) + ); + } catch (ParseException ex) { + throw new RuntimeException(ex); + } + log.info(" ==> 解析一条数据: {}", JSONObject.toJSONString(e)); + }); + log.info(" ==> 共全部数据: {}",total.get()); + status.set(this.saveBatch(orders)); + })).sheet().doRead(); + return R.success(new JSONObject().fluentPut("total",total.get()).fluentPut("status",status.get())); } } diff --git a/src/main/java/top/xinsin/service/WebSocketService.java b/src/main/java/top/xinsin/service/WebSocketService.java index 55f6c45..8d2b696 100644 --- a/src/main/java/top/xinsin/service/WebSocketService.java +++ b/src/main/java/top/xinsin/service/WebSocketService.java @@ -1,6 +1,7 @@ package top.xinsin.service; import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import jakarta.annotation.Resource; @@ -17,15 +18,10 @@ import top.xinsin.util.HttpCodes; import top.xinsin.util.R; import top.xinsin.util.StringConstant; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; -import static org.apache.naming.SelectorContext.prefix; - @Service @Slf4j public class WebSocketService { @@ -34,30 +30,48 @@ public class WebSocketService { @Autowired private VerifyMapper verifyMapper; - public R addVerify(String userId){ + private Map adminBYStoreId = new HashMap<>(); + + public R addVerify(String userId, WebSocketController session){ RedisSerializer stringSerializer = new StringRedisSerializer(); redisTemplate.setValueSerializer(stringSerializer); redisTemplate.setKeySerializer(stringSerializer); - if (userId.equals("-114514")){ - return R.success("检测为管理员登录"); + JSONObject jsonObject = new JSONObject(); + if (userId.startsWith("-114514_")){ + adminBYStoreId.put(userId.replace("-114514_",""),session); +// 筛选出当前过期的数据 + Set noVerify = redisTemplate.keys(StringConstant.NO_VERIFY_PRE + "*"); + Set verify = redisTemplate.keys(StringConstant.VERIFY_PRE + "*"); + List list = new ArrayList<>(); + assert noVerify != null; + noVerify.forEach(e -> list.add(e.replace(StringConstant.NO_VERIFY_PRE, ""))); + assert verify!= null; + List list2 = new ArrayList<>(); + verify.forEach(e -> list2.add(e.replace(StringConstant.VERIFY_PRE, ""))); + List list1 = list.stream().filter(e -> !list2.contains(e)).toList(); + JSONArray jsonArray = new JSONArray(); + Arrays.stream(userId.replace("-114514_", "").split(",")).filter(list1::contains).forEach(jsonArray::add); + jsonObject.fluentPut("expire",jsonArray); + return R.success(jsonObject.fluentPut("info","检测为管理员登录")); } Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId); - Object o1 = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no"); - System.out.println(o == null); - System.out.println(o1 == null); + Object o1 = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId); if (o == null && o1 == null){ Verify verify = verifyMapper.selectOne(new LambdaQueryWrapper().eq(Verify::getStoreId, userId)); if (verify != null){ if(userId.equals(String.valueOf(verify.getStoreId()))) { redisTemplate.opsForValue().set(StringConstant.VERIFY_PRE + userId, String.valueOf(verify.getNum()), verify.getCountdown(), TimeUnit.SECONDS); - redisTemplate.opsForValue().set(StringConstant.VERIFY_PRE + userId + "_no", String.valueOf(verify.getNum())); - return R.success("已将该用户过期时间存入"); + redisTemplate.opsForValue().set(StringConstant.NO_VERIFY_PRE + userId, String.valueOf(verify.getNum())); + jsonObject.fluentPut("info","已将该用户过期时间存入"); + return R.success(jsonObject); } } }else{ - return R.success("当前用户已存在"); + jsonObject.fluentPut("info","当前用户已存在"); + return R.success(jsonObject); } - return R.failed(HttpCodes.HTTP_CODES500,"不存在该用户"); + jsonObject.fluentPut("info","不存在该用户"); + return R.failed(HttpCodes.HTTP_CODES500,jsonObject); } public R parseMessage(String userId, String message, ConcurrentHashMap webSocketMap){ JSONObject parse = JSONObject.parse(message); @@ -83,7 +97,7 @@ public class WebSocketService { String verifyResult = String.valueOf(parse.get("verifyResult")); String userId = String.valueOf(parse.get("userId")); - int i = Integer.parseInt(String.valueOf(redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no"))); + int i = Integer.parseInt(String.valueOf(redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId))); System.out.println(i); Verify verify = new Verify(); verify.setVerifyResult(verifyResult); @@ -100,7 +114,7 @@ public class WebSocketService { }else{ if (webSocketMap.containsKey(userId)){ webSocketMap.get(userId).sendMessage(JSON.toJSONString(new JSONObject().fluentPut("info","管理员已同意你的验证信息,请重新登录"))); - redisTemplate.delete(StringConstant.VERIFY_PRE + userId + "_no"); + redisTemplate.delete(StringConstant.NO_VERIFY_PRE + userId); Verify verify1 = new Verify(); verify.setVerifyPhone(""); verify.setVerifyName(""); @@ -114,7 +128,7 @@ public class WebSocketService { Long expire = redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId); assert expire != null; if (expire.equals(-2L)){ - Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no"); + Object o = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId); if (o != null){ return R.success(new JSONObject().fluentPut("info","当前用户登录已过期")); } @@ -126,7 +140,7 @@ public class WebSocketService { private R addVerifyInfo(String userId, JSONObject parse) { Long expire = redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId); - Object o = redisTemplate.opsForValue().get(StringConstant.VERIFY_PRE + userId + "_no"); + Object o = redisTemplate.opsForValue().get(StringConstant.NO_VERIFY_PRE + userId); assert expire != null; if (expire.equals(-2L) && o != null){ Object verifyName = parse.get("verifyName"); @@ -143,19 +157,22 @@ public class WebSocketService { private R ping(String userId) { return R.success(new JSONObject().fluentPut("info","pong").fluentPut("time",redisTemplate.getExpire(StringConstant.VERIFY_PRE + userId))); } - public List getExpireTimes(){ + public List getExpireTimes(Enumeration keys){ List expireUser = new ArrayList<>(); - Set keys = redisTemplate.keys(prefix.concat(StringConstant.VERIFY_PRE + "*")); + +// Set keys = redisTemplate.keys(StringConstant.VERIFY_PRE + "*"); assert keys != null; - keys.forEach(e -> { + Iterator iterator = keys.asIterator(); + while (iterator.hasNext()){ + String e = StringConstant.VERIFY_PRE + iterator.next(); if (Objects.equals(redisTemplate.getExpire(e), -1L)){ expireUser.add(e); redisTemplate.delete(e); }else if (Objects.equals(redisTemplate.getExpire(e),-2L)){ + expireUser.add(e); redisTemplate.delete(e); } - }); -// log.info("{}",keys); + } return expireUser; } } diff --git a/src/main/java/top/xinsin/util/ExcelParserUtil.java b/src/main/java/top/xinsin/util/ExcelParserUtil.java index d5a5480..d6a74f3 100644 --- a/src/main/java/top/xinsin/util/ExcelParserUtil.java +++ b/src/main/java/top/xinsin/util/ExcelParserUtil.java @@ -4,13 +4,16 @@ import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.alibaba.excel.exception.ExcelDataConvertException; import com.alibaba.excel.read.processor.AnalysisEventProcessor; +import com.alibaba.excel.util.ListUtils; import com.alibaba.fastjson2.JSONObject; import lombok.extern.slf4j.Slf4j; import top.xinsin.mapper.OrderMapper; import top.xinsin.pojo.Order; +import top.xinsin.pojo.OrderByExcel; import top.xinsin.service.OrderService; import java.util.ArrayList; +import java.util.Date; import java.util.List; /** @@ -19,7 +22,7 @@ import java.util.List; * @version 1.0 */ @Slf4j -public class ExcelParserUtil extends AnalysisEventListener { +public class ExcelParserUtil extends AnalysisEventListener { /** * 每次读取的最大数据条数 */ @@ -33,7 +36,7 @@ public class ExcelParserUtil extends AnalysisEventListener { /** * 可接收任何参数的泛型List集合 */ - List list = new ArrayList<>(); + List list = ListUtils.newArrayListWithExpectedSize(MAX_BATCH_COUNT); List total = new ArrayList<>(); @@ -48,7 +51,7 @@ public class ExcelParserUtil extends AnalysisEventListener { } @Override - public void invoke(Order data, AnalysisContext analysisContext) { + public void invoke(OrderByExcel data, AnalysisContext analysisContext) { log.info(" ==> 解析一条数据: {}", data); list.add(data); if (list.size() > MAX_BATCH_COUNT) { @@ -74,7 +77,11 @@ public class ExcelParserUtil extends AnalysisEventListener { */ private void saveData() { log.info(" ==> 数据保存开始: {}", list.size()); - dynamicService.saveBatch(list); + list.forEach(e -> { + + System.out.println(e.getOrderNo()); + }); +// dynamicService.saveBatch(list); log.info(" ==> 数据保存结束 <=="); } diff --git a/src/main/java/top/xinsin/util/StringConstant.java b/src/main/java/top/xinsin/util/StringConstant.java index 8697786..160ab0f 100644 --- a/src/main/java/top/xinsin/util/StringConstant.java +++ b/src/main/java/top/xinsin/util/StringConstant.java @@ -7,4 +7,5 @@ public class StringConstant { public static final String ID_REGEX = "[0-9]*"; public static final String VERIFY_PRE = "verify_"; + public static final String NO_VERIFY_PRE = "no_verify_"; } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2e1da3b..32b5534 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -2,12 +2,12 @@ server: port: 8001 spring: datasource: - username: commerce - password: Jix656dzD6St4YCn_ -# username: commerce_system -# password: Jix656dzD6St4YCn - url: jdbc:mysql://localhost:3306/commerce_system?serverTimezone=UTC-8 -# url: jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8 +# username: commerce +# password: Jix656dzD6St4YCn_ + username: commerce_system + password: Jix656dzD6St4YCn +# url: jdbc:mysql://localhost:3306/commerce_system?serverTimezone=UTC-8 + url: jdbc:mysql://wzpmc.cn:3306/commerce_system?serverTimezone=UTC-8 driver-class-name: com.mysql.cj.jdbc.Driver # druid配置 type: com.alibaba.druid.pool.DruidDataSource diff --git a/template/example.xlsx b/template/example.xlsx index ee9c302f4d2acc005ec3cfe495044c3e94e9e29b..919e82841e5a0fdcd9bb149e1b7677564d177c7a 100644 GIT binary patch delta 4305 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 F_#X&S2H^kz delta 3999 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