|
|
@ -7,11 +7,9 @@ import com.yxt.common.core.query.PagerQuery; |
|
|
|
import com.yxt.common.core.result.ResultBean; |
|
|
|
import com.yxt.common.core.vo.PagerVo; |
|
|
|
import io.swagger.annotations.ApiOperation; |
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
|
|
|
import org.apache.poi.ss.usermodel.Cell; |
|
|
|
import org.apache.poi.ss.usermodel.Row; |
|
|
|
import org.apache.poi.ss.usermodel.Sheet; |
|
|
|
import org.apache.poi.ss.usermodel.Workbook; |
|
|
|
import org.apache.poi.ss.usermodel.*; |
|
|
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
@ -25,9 +23,8 @@ import java.math.BigDecimal; |
|
|
|
import java.net.URLEncoder; |
|
|
|
import java.text.ParseException; |
|
|
|
import java.text.SimpleDateFormat; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Date; |
|
|
|
import java.util.List; |
|
|
|
import java.util.*; |
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
/** |
|
|
|
* @description: |
|
|
@ -81,7 +78,7 @@ public class AsBusclaimBillRest { |
|
|
|
return ResultBean.fireFail().setMsg("上传文件不正确"); |
|
|
|
} |
|
|
|
int[] resultCell = new int[]{0, 1, 2, 3, 4, 5, 6, 7}; |
|
|
|
List<AsBusclaimBill> resultList = new ArrayList<>(); |
|
|
|
List<AsBusclaimBillExcelInfo> resultList = new ArrayList<>(); |
|
|
|
boolean isExcel2003 = true; |
|
|
|
if (fileName.matches("^.+\\.(?i)(xlsx)$")) { |
|
|
|
isExcel2003 = false; |
|
|
@ -94,17 +91,36 @@ public class AsBusclaimBillRest { |
|
|
|
wb = new XSSFWorkbook(is); |
|
|
|
} |
|
|
|
Sheet sheet = wb.getSheetAt(0); |
|
|
|
resultList = getSheetVal(sheet, resultCell); |
|
|
|
ReturnExcelInfo importReturn = getSheetVal(sheet, resultCell); |
|
|
|
if (StringUtils.isNotBlank(importReturn.getCheckInfo())) { |
|
|
|
return ResultBean.fireFail().setMsg(importReturn.getCheckInfo()); |
|
|
|
} |
|
|
|
resultList = importReturn.getInfos(); |
|
|
|
System.out.println("结果是--->" + resultList); |
|
|
|
try { |
|
|
|
for (AsBusclaimBill asBusclaimBill : resultList) { |
|
|
|
int i = asBusclaimBillService.checkBillNo(asBusclaimBill.getBillNo()); |
|
|
|
if (i == 0){ |
|
|
|
return ResultBean.fireFail().setMsg("索赔单号" + asBusclaimBill.getBillNo() + "不存在"); |
|
|
|
for (AsBusclaimBillExcelInfo asBusclaimBillExcelInfo : resultList) { |
|
|
|
int i = asBusclaimBillService.checkBillNo(asBusclaimBillExcelInfo.getBillNo()); |
|
|
|
if (i == 0) { |
|
|
|
return ResultBean.fireFail().setMsg("索赔单号" + asBusclaimBillExcelInfo.getBillNo() + "不存在"); |
|
|
|
} |
|
|
|
} |
|
|
|
for (AsBusclaimBill asBusclaimBill : resultList) { |
|
|
|
asBusclaimBillService.updateByBillNo(asBusclaimBill); |
|
|
|
for (AsBusclaimBillExcelInfo asBusclaimBillExcelInfo : resultList) { |
|
|
|
AsBusclaimBill asBusclaimBill = asBusclaimBillService.selectByBillNo(asBusclaimBillExcelInfo.getBillNo()); |
|
|
|
asBusclaimBill.setClaimHourAmount(asBusclaimBillExcelInfo.getClaimHourAmount()); |
|
|
|
asBusclaimBill.setClaimGoodsAmount(asBusclaimBillExcelInfo.getClaimGoodsAmount()); |
|
|
|
asBusclaimBill.setClaimOutAmount(asBusclaimBillExcelInfo.getClaimOutAmount()); |
|
|
|
asBusclaimBill.setClaimSubsidyAmount(asBusclaimBillExcelInfo.getClaimSubsidyAmount()); |
|
|
|
asBusclaimBill.setClaimOtherAmount(asBusclaimBillExcelInfo.getClaimOtherAmount()); |
|
|
|
if ("审核中".equals(asBusclaimBillExcelInfo.getState())) { |
|
|
|
asBusclaimBill.setState(0); |
|
|
|
} else if ("已通过".equals(asBusclaimBillExcelInfo.getState())) { |
|
|
|
asBusclaimBill.setState(1); |
|
|
|
} else if ("未通过".equals(asBusclaimBillExcelInfo.getState())) { |
|
|
|
asBusclaimBill.setState(2); |
|
|
|
} else if ("作废".equals(asBusclaimBillExcelInfo.getState())) { |
|
|
|
asBusclaimBill.setState(3); |
|
|
|
} |
|
|
|
asBusclaimBillService.updateById(asBusclaimBill); |
|
|
|
} |
|
|
|
return ResultBean.fireSuccess().setMsg("数据导入成功"); |
|
|
|
} catch (Exception e) { |
|
|
@ -113,67 +129,148 @@ public class AsBusclaimBillRest { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private List<AsBusclaimBill> getSheetVal(Sheet sheet, int[] resultCell) { |
|
|
|
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd"); |
|
|
|
List<AsBusclaimBill> asBusclaimBillList = new ArrayList<>(); |
|
|
|
int[] resultIndex = new int[resultCell.length]; |
|
|
|
AsBusclaimBill asBusclaimBill; |
|
|
|
private ReturnExcelInfo getSheetVal(Sheet sheet, int[] resultCell) { |
|
|
|
ReturnExcelInfo importReturn = new ReturnExcelInfo(); |
|
|
|
List<AsBusclaimBillExcelInfo> asBusclaimBillExcelInfoList = new ArrayList<>(); |
|
|
|
Set<String> checkWord = new HashSet<>(); |
|
|
|
AsBusclaimBillExcelInfo asBusclaimBillExcelInfo; |
|
|
|
for (int r = 1; r <= sheet.getLastRowNum(); r++) { |
|
|
|
Row row = sheet.getRow(r); |
|
|
|
if (row == null) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
asBusclaimBill = new AsBusclaimBill(); |
|
|
|
asBusclaimBillExcelInfo = new AsBusclaimBillExcelInfo(); |
|
|
|
for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) { |
|
|
|
String temp = getCellVal(row.getCell(i)).toString().trim(); |
|
|
|
for (int j = 0; j < resultCell.length; j++) { |
|
|
|
if (i == resultCell[j]) { |
|
|
|
String trim = new String(); |
|
|
|
try { |
|
|
|
trim = getCellVal(row.getCell(i), i).toString().trim(); |
|
|
|
if (StringUtils.isBlank(trim)) { |
|
|
|
NullPointerException nullPointerException = new NullPointerException(); |
|
|
|
} |
|
|
|
String temp = getCellVal(row.getCell(i), i).toString().trim(); |
|
|
|
for (int j = 0; j < resultCell.length; j++) { |
|
|
|
if (i == resultCell[j]) { |
|
|
|
switch (i) { |
|
|
|
case 0: |
|
|
|
asBusclaimBillExcelInfo.setBillNo(temp); |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
asBusclaimBillExcelInfo.setVinNo(temp); |
|
|
|
//车架号
|
|
|
|
break; |
|
|
|
case 2: |
|
|
|
//工时费
|
|
|
|
asBusclaimBillExcelInfo.setClaimHourAmount(new BigDecimal(temp)); |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
//材料费
|
|
|
|
asBusclaimBillExcelInfo.setClaimGoodsAmount(new BigDecimal(temp)); |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
//外出费
|
|
|
|
asBusclaimBillExcelInfo.setClaimOutAmount(new BigDecimal(temp)); |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
//厂家补助
|
|
|
|
asBusclaimBillExcelInfo.setClaimSubsidyAmount(new BigDecimal(temp)); |
|
|
|
break; |
|
|
|
case 6: |
|
|
|
//其他费用
|
|
|
|
asBusclaimBillExcelInfo.setClaimOtherAmount(new BigDecimal(temp)); |
|
|
|
break; |
|
|
|
case 7: |
|
|
|
//状态
|
|
|
|
asBusclaimBillExcelInfo.setState(temp); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} else { |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (Exception e) { |
|
|
|
if (StringUtils.isBlank(trim)) { |
|
|
|
String word = new String(); |
|
|
|
switch (i) { |
|
|
|
case 0: |
|
|
|
asBusclaimBill.setBillNo(temp); |
|
|
|
word = "索赔单编号"; |
|
|
|
break; |
|
|
|
case 1: |
|
|
|
//车架号
|
|
|
|
word = "车架号"; |
|
|
|
break; |
|
|
|
case 2: |
|
|
|
//工时费
|
|
|
|
asBusclaimBill.setHourAmount(new BigDecimal(temp)); |
|
|
|
word = "索赔工时费"; |
|
|
|
break; |
|
|
|
case 3: |
|
|
|
//材料费
|
|
|
|
asBusclaimBill.setGoodsAmount(new BigDecimal(temp)); |
|
|
|
word = "索赔材料费"; |
|
|
|
break; |
|
|
|
case 4: |
|
|
|
//外出费
|
|
|
|
asBusclaimBill.setClaimOutAmount(new BigDecimal(temp)); |
|
|
|
word = "索赔外出费"; |
|
|
|
break; |
|
|
|
case 5: |
|
|
|
//厂家补助
|
|
|
|
asBusclaimBill.setClaimSubsidyAmount(new BigDecimal(temp)); |
|
|
|
word = "索赔厂家补助"; |
|
|
|
break; |
|
|
|
case 6: |
|
|
|
//其他费用
|
|
|
|
asBusclaimBill.setClaimOtherAmount(new BigDecimal(temp)); |
|
|
|
word = "索赔其他费用"; |
|
|
|
break; |
|
|
|
case 7: |
|
|
|
//状态
|
|
|
|
word = "状态"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
} else { |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
asBusclaimBillList.add(asBusclaimBill); |
|
|
|
|
|
|
|
asBusclaimBillExcelInfoList.add(asBusclaimBillExcelInfo); |
|
|
|
if (!asBusclaimBillExcelInfoList.isEmpty()) { |
|
|
|
for (AsBusclaimBillExcelInfo excelInfo : asBusclaimBillExcelInfoList) { |
|
|
|
if (StringUtils.isBlank(excelInfo.getBillNo())) { |
|
|
|
checkWord.add("索赔单编号不能为空"); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(excelInfo.getVinNo())) { |
|
|
|
checkWord.add("车架号不能为空"); |
|
|
|
break; |
|
|
|
} |
|
|
|
if (StringUtils.isBlank(excelInfo.getState())) { |
|
|
|
checkWord.add("状态不能为空"); |
|
|
|
break; |
|
|
|
} else if (!"审核中".equals(excelInfo.getState()) && !"已通过".equals(excelInfo.getState()) && !"未通过".equals(excelInfo.getState()) && !"作废".equals(excelInfo.getState())) { |
|
|
|
checkWord.add("状态必须为(审核中、已通过、未通过、作废)中的其中一种"); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
StringBuffer sbcheck1 = new StringBuffer(); |
|
|
|
if (!checkWord.isEmpty()) { |
|
|
|
for (String s : checkWord) { |
|
|
|
if (StringUtils.isBlank(s)) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
sbcheck1.append(s).append(";"); |
|
|
|
} |
|
|
|
} |
|
|
|
if (sbcheck1.length() > 0) { |
|
|
|
sbcheck1.delete(sbcheck1.length() - 1, sbcheck1.length()); |
|
|
|
importReturn.setCheckInfo(sbcheck1.toString()); |
|
|
|
importReturn.setInfos(new ArrayList<>()); |
|
|
|
return importReturn; |
|
|
|
} |
|
|
|
importReturn.setInfos(asBusclaimBillExcelInfoList); |
|
|
|
} |
|
|
|
return asBusclaimBillList; |
|
|
|
return importReturn; |
|
|
|
} |
|
|
|
|
|
|
|
public Object getCellVal(Cell cell) { |
|
|
|
public Object getCellVal(Cell cell, Integer i) { |
|
|
|
Object obj = null; |
|
|
|
if (i == 1 || i == 0) { |
|
|
|
if (cell != null) { |
|
|
|
cell.setCellType(CellType.STRING); |
|
|
|
} |
|
|
|
} |
|
|
|
if (cell != null) { |
|
|
|
switch (cell.getCellTypeEnum()) { |
|
|
|
case BOOLEAN: |
|
|
|