更新批量导入数据功能增加对异常捕获
This commit is contained in:
@@ -1123,154 +1123,158 @@ public class LpkGiftCardService extends MybatisBaseService<LpkGiftCardMapper, Lp
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public ResultBean getExcelInfo3(String startDate, String endDate, MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
public ResultBean getExcelInfo3(String startDate, String endDate, MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws IOException {
|
||||||
ResultBean rb = ResultBean.fireFail();
|
ResultBean rb = ResultBean.fireFail();
|
||||||
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
|
try {
|
||||||
File tempFile = new File(temp);
|
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
|
||||||
if (!tempFile.exists()) {
|
File tempFile = new File(temp);
|
||||||
tempFile.mkdirs();
|
if (!tempFile.exists()) {
|
||||||
}
|
tempFile.mkdirs();
|
||||||
String fileName = file.getOriginalFilename();
|
|
||||||
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
|
|
||||||
return rb.fail().setMsg("上传文件不正确");
|
|
||||||
}
|
|
||||||
boolean isExcel2003 = true;
|
|
||||||
if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
|
|
||||||
isExcel2003 = false;
|
|
||||||
}
|
|
||||||
InputStream is = file.getInputStream();
|
|
||||||
Workbook wb = null;
|
|
||||||
if (isExcel2003) {
|
|
||||||
wb = new HSSFWorkbook(is);
|
|
||||||
} else {
|
|
||||||
wb = new XSSFWorkbook(is);
|
|
||||||
}
|
|
||||||
Sheet sheet = wb.getSheetAt(0);
|
|
||||||
ReturnMsg returnMsg = getSheetVal2(sheet);
|
|
||||||
Set<String> setMsg = returnMsg.getSetMsg();
|
|
||||||
StringBuffer sbMsg = new StringBuffer();
|
|
||||||
if (null != setMsg && setMsg.size() > 0) {
|
|
||||||
for (String s : setMsg) {
|
|
||||||
sbMsg.append(s).append(",");
|
|
||||||
}
|
}
|
||||||
sbMsg.delete(sbMsg.length() - 1, sbMsg.length());
|
String fileName = file.getOriginalFilename();
|
||||||
if (StringUtils.isNotBlank(sbMsg.toString())) {
|
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
|
||||||
return rb.setMsg(sbMsg.toString());
|
return rb.fail().setMsg("上传文件不正确");
|
||||||
}
|
}
|
||||||
}
|
boolean isExcel2003 = true;
|
||||||
List<ReturnExcelInfo> importReturn = returnMsg.getInfos();
|
if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
|
||||||
importReturn.removeAll(Collections.singleton(null));
|
isExcel2003 = false;
|
||||||
String startNo = "";
|
}
|
||||||
String endNo = "";
|
InputStream is = file.getInputStream();
|
||||||
List<LpkGiftCard> cards = new ArrayList<>(); //卡片
|
Workbook wb = null;
|
||||||
List<LpkGiftBagGoods> bagGoods = new ArrayList<>(); //卡片礼包关联
|
if (isExcel2003) {
|
||||||
List<LpkGiftBag> bags = new ArrayList<>(); //礼包
|
wb = new HSSFWorkbook(is);
|
||||||
List<LpkCardQrcode> codes = new ArrayList<>(); //二维码
|
} else {
|
||||||
List<LpkCardBuildRecord> records = new ArrayList<>(); //二维码
|
wb = new XSSFWorkbook(is);
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
}
|
||||||
int cardSerNum = 0;
|
Sheet sheet = wb.getSheetAt(0);
|
||||||
//生成卡包
|
ReturnMsg returnMsg = getSheetVal2(sheet);
|
||||||
if (!importReturn.isEmpty()) {
|
Set<String> setMsg = returnMsg.getSetMsg();
|
||||||
for (int i = 0; i < importReturn.size(); i++) {
|
StringBuffer sbMsg = new StringBuffer();
|
||||||
ReturnExcelInfo info = importReturn.get(i);
|
if (null != setMsg && setMsg.size() > 0) {
|
||||||
LpkGiftCard card = new LpkGiftCard();
|
for (String s : setMsg) {
|
||||||
LpkGiftBag bag = new LpkGiftBag();
|
sbMsg.append(s).append(",");
|
||||||
LpkCardQrcode code = new LpkCardQrcode();
|
|
||||||
LpkCardBuildRecord record = new LpkCardBuildRecord();
|
|
||||||
String serNum = baseMapper.selctMaxSerNumForExport();
|
|
||||||
card.setCreateTime(new DateTime());//卡片生成时间
|
|
||||||
bag.setCreateTime(new DateTime());//礼包生成时间
|
|
||||||
code.setCreateTime(new DateTime());//二维码生成时间
|
|
||||||
record.setCreateTime(new DateTime());//礼包记录生成时间
|
|
||||||
record.setBuildDate(new DateTime());//礼包记录生成时间
|
|
||||||
record.setGiftbagSid(bag.getSid());
|
|
||||||
record.setCountNumber("1");
|
|
||||||
if (StringUtils.isNotBlank(serNum)) {
|
|
||||||
int serNumInt = Integer.parseInt(serNum);
|
|
||||||
if (i == 0) {
|
|
||||||
cardSerNum = serNumInt + 1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (cardSerNum == 0) {
|
|
||||||
cardSerNum = 70000001;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
card.setSerialNumber(String.valueOf(cardSerNum));
|
sbMsg.delete(sbMsg.length() - 1, sbMsg.length());
|
||||||
record.setStartNumber(String.valueOf(cardSerNum));
|
if (StringUtils.isNotBlank(sbMsg.toString())) {
|
||||||
record.setEndNumber(String.valueOf(cardSerNum));
|
return rb.setMsg(sbMsg.toString());
|
||||||
bag.setName("家庭菜窖" + cardSerNum);
|
|
||||||
card.setGiftbagSid(bag.getSid()); //卡片赋值关联礼包sid
|
|
||||||
card.setRecordSid(record.getSid()); //卡片赋值关联生成卡记录sid
|
|
||||||
card.setState("1");
|
|
||||||
String uuid = UniqueIdGenerator.generateUniqueID();
|
|
||||||
int randomNumber = new Random().nextInt(900000) + 100000;
|
|
||||||
card.setCodeKey(String.valueOf(randomNumber)); //6位密码
|
|
||||||
card.setCode(uuid); //20位提货码
|
|
||||||
//生成二维码转base64
|
|
||||||
String s = genarateQRCodesToBase64ForExport(card.getCode());
|
|
||||||
code.setCardSid(card.getSid());
|
|
||||||
code.setCreateTime(new DateTime());
|
|
||||||
code.setFile(s);
|
|
||||||
//------礼包信息赋值-------------
|
|
||||||
try {
|
|
||||||
bag.setDateStart(sdf.parse(startDate));
|
|
||||||
bag.setDateEnd(sdf.parse(endDate));
|
|
||||||
} catch (ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
cards.add(card);
|
}
|
||||||
bags.add(bag);
|
List<ReturnExcelInfo> importReturn = returnMsg.getInfos();
|
||||||
codes.add(code);
|
importReturn.removeAll(Collections.singleton(null));
|
||||||
records.add(record);
|
String startNo = "";
|
||||||
List<ReturnExcelInfoDetails> infoDetails = info.getInfoDetails();
|
String endNo = "";
|
||||||
if (!infoDetails.isEmpty()) {
|
List<LpkGiftCard> cards = new ArrayList<>(); //卡片
|
||||||
for (ReturnExcelInfoDetails detail : infoDetails) {
|
List<LpkGiftBagGoods> bagGoods = new ArrayList<>(); //卡片礼包关联
|
||||||
LpkGiftBagGoods giftBagGoods = new LpkGiftBagGoods();
|
List<LpkGiftBag> bags = new ArrayList<>(); //礼包
|
||||||
giftBagGoods.setCreateTime(new DateTime());
|
List<LpkCardQrcode> codes = new ArrayList<>(); //二维码
|
||||||
if (StringUtils.isNotBlank(detail.getGoodNum()) && StringUtils.isNotBlank(detail.getGoodName())) {
|
List<LpkCardBuildRecord> records = new ArrayList<>(); //二维码
|
||||||
LpkGoods lpkGoods = lpkGoodsService.getGoodsByName(detail.getGoodName());
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
if (null != lpkGoods) {
|
int cardSerNum = 0;
|
||||||
giftBagGoods.setGoodsSid(lpkGoods.getSid());
|
//生成卡包
|
||||||
if (detail.getGoodNum().contains(".")) {
|
if (!importReturn.isEmpty()) {
|
||||||
String num = detail.getGoodNum().substring(0, detail.getGoodNum().indexOf("."));
|
for (int i = 0; i < importReturn.size(); i++) {
|
||||||
giftBagGoods.setGoodsNumber(num);
|
ReturnExcelInfo info = importReturn.get(i);
|
||||||
} else {
|
LpkGiftCard card = new LpkGiftCard();
|
||||||
giftBagGoods.setGoodsNumber(detail.getGoodNum());
|
LpkGiftBag bag = new LpkGiftBag();
|
||||||
}
|
LpkCardQrcode code = new LpkCardQrcode();
|
||||||
}
|
LpkCardBuildRecord record = new LpkCardBuildRecord();
|
||||||
giftBagGoods.setGiftbagSid(bag.getSid());
|
String serNum = baseMapper.selctMaxSerNumForExport();
|
||||||
bagGoods.add(giftBagGoods);
|
card.setCreateTime(new DateTime());//卡片生成时间
|
||||||
|
bag.setCreateTime(new DateTime());//礼包生成时间
|
||||||
|
code.setCreateTime(new DateTime());//二维码生成时间
|
||||||
|
record.setCreateTime(new DateTime());//礼包记录生成时间
|
||||||
|
record.setBuildDate(new DateTime());//礼包记录生成时间
|
||||||
|
record.setGiftbagSid(bag.getSid());
|
||||||
|
record.setCountNumber("1");
|
||||||
|
if (StringUtils.isNotBlank(serNum)) {
|
||||||
|
int serNumInt = Integer.parseInt(serNum);
|
||||||
|
if (i == 0) {
|
||||||
|
cardSerNum = serNumInt + 1;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (cardSerNum == 0) {
|
||||||
|
cardSerNum = 70000001;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
card.setSerialNumber(String.valueOf(cardSerNum));
|
||||||
|
record.setStartNumber(String.valueOf(cardSerNum));
|
||||||
|
record.setEndNumber(String.valueOf(cardSerNum));
|
||||||
|
bag.setName("家庭菜窖" + cardSerNum);
|
||||||
|
card.setGiftbagSid(bag.getSid()); //卡片赋值关联礼包sid
|
||||||
|
card.setRecordSid(record.getSid()); //卡片赋值关联生成卡记录sid
|
||||||
|
card.setState("1");
|
||||||
|
String uuid = UniqueIdGenerator.generateUniqueID();
|
||||||
|
int randomNumber = new Random().nextInt(900000) + 100000;
|
||||||
|
card.setCodeKey(String.valueOf(randomNumber)); //6位密码
|
||||||
|
card.setCode(uuid); //20位提货码
|
||||||
|
//生成二维码转base64
|
||||||
|
String s = genarateQRCodesToBase64ForExport(card.getCode());
|
||||||
|
code.setCardSid(card.getSid());
|
||||||
|
code.setCreateTime(new DateTime());
|
||||||
|
code.setFile(s);
|
||||||
|
//------礼包信息赋值-------------
|
||||||
|
try {
|
||||||
|
bag.setDateStart(sdf.parse(startDate));
|
||||||
|
bag.setDateEnd(sdf.parse(endDate));
|
||||||
|
} catch (ParseException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
cards.add(card);
|
||||||
|
bags.add(bag);
|
||||||
|
codes.add(code);
|
||||||
|
records.add(record);
|
||||||
|
List<ReturnExcelInfoDetails> infoDetails = info.getInfoDetails();
|
||||||
|
if (!infoDetails.isEmpty()) {
|
||||||
|
for (ReturnExcelInfoDetails detail : infoDetails) {
|
||||||
|
LpkGiftBagGoods giftBagGoods = new LpkGiftBagGoods();
|
||||||
|
giftBagGoods.setCreateTime(new DateTime());
|
||||||
|
if (StringUtils.isNotBlank(detail.getGoodNum()) && StringUtils.isNotBlank(detail.getGoodName())) {
|
||||||
|
LpkGoods lpkGoods = lpkGoodsService.getGoodsByName(detail.getGoodName());
|
||||||
|
if (null != lpkGoods) {
|
||||||
|
giftBagGoods.setGoodsSid(lpkGoods.getSid());
|
||||||
|
if (detail.getGoodNum().contains(".")) {
|
||||||
|
String num = detail.getGoodNum().substring(0, detail.getGoodNum().indexOf("."));
|
||||||
|
giftBagGoods.setGoodsNumber(num);
|
||||||
|
} else {
|
||||||
|
giftBagGoods.setGoodsNumber(detail.getGoodNum());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
giftBagGoods.setGiftbagSid(bag.getSid());
|
||||||
|
bagGoods.add(giftBagGoods);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (i == 0) {
|
||||||
|
startNo = String.valueOf(cardSerNum);
|
||||||
|
}
|
||||||
|
if (i == importReturn.size() - 1) {
|
||||||
|
endNo = String.valueOf(cardSerNum);
|
||||||
|
}
|
||||||
|
cardSerNum = cardSerNum + 1;
|
||||||
}
|
}
|
||||||
if (i == 0) {
|
//批量插入数据
|
||||||
startNo = String.valueOf(cardSerNum);
|
//卡片
|
||||||
|
if (!cards.isEmpty()) {
|
||||||
|
int i = baseMapper.saveCards(cards);
|
||||||
}
|
}
|
||||||
if (i == importReturn.size() - 1) {
|
//卡记录
|
||||||
endNo = String.valueOf(cardSerNum);
|
if (!records.isEmpty()) {
|
||||||
|
int i = lpkCardBuildRecordService.saveRecords(records);
|
||||||
}
|
}
|
||||||
cardSerNum = cardSerNum + 1;
|
//二维码
|
||||||
|
if (!codes.isEmpty()) {
|
||||||
|
int i = lpkCardQrcodeService.saveCodes(codes);
|
||||||
|
}
|
||||||
|
//礼包
|
||||||
|
if (!bags.isEmpty()) {
|
||||||
|
int i = lpkGiftBagService.saveBags(bags);
|
||||||
|
}
|
||||||
|
//礼包商品
|
||||||
|
if (!bagGoods.isEmpty()) {
|
||||||
|
int i = LpkGiftBagGoodsService.saveBagGoods(bagGoods);
|
||||||
|
}
|
||||||
|
return rb.success().setMsg("本次导入:" + importReturn.size() + "条数据,生成卡券共计" + importReturn.size() + "张;卡券序列号:" + startNo + "-" + endNo);
|
||||||
}
|
}
|
||||||
//批量插入数据
|
} catch (Exception e) {
|
||||||
//卡片
|
e.printStackTrace();
|
||||||
if (!cards.isEmpty()) {
|
|
||||||
int i = baseMapper.saveCards(cards);
|
|
||||||
}
|
|
||||||
//卡记录
|
|
||||||
if (!records.isEmpty()) {
|
|
||||||
int i = lpkCardBuildRecordService.saveRecords(records);
|
|
||||||
}
|
|
||||||
//二维码
|
|
||||||
if (!codes.isEmpty()) {
|
|
||||||
int i = lpkCardQrcodeService.saveCodes(codes);
|
|
||||||
}
|
|
||||||
//礼包
|
|
||||||
if (!bags.isEmpty()) {
|
|
||||||
int i = lpkGiftBagService.saveBags(bags);
|
|
||||||
}
|
|
||||||
//礼包商品
|
|
||||||
if (!bagGoods.isEmpty()) {
|
|
||||||
int i = LpkGiftBagGoodsService.saveBagGoods(bagGoods);
|
|
||||||
}
|
|
||||||
return rb.success().setMsg("本次导入:" + importReturn.size() + "条数据,生成卡券共计" + importReturn.size() + "张;卡券序列号:" + startNo + "-" + endNo);
|
|
||||||
}
|
}
|
||||||
return rb.success().setMsg("导入成功");
|
return rb.success().setMsg("导入成功");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user