Browse Source

索赔单开票申请

zhanglei
dimengzhe 1 year ago
parent
commit
b78d832e23
  1. 37
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/AsBusclaimInvoiceBillExcelVo.java
  2. 27
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/ExcelInfoVo.java
  3. 18
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/ReturnExcelInfoVo.java
  4. 8
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebilldetail/AsBusclaimInvoiceBillDetail.java
  5. 2
      yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebilldetail/AsBusclaimInvoiceBillDetailDto.java
  6. 37
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillRest.java
  7. 177
      yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillService.java

37
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/AsBusclaimInvoiceBillExcelVo.java

@ -0,0 +1,37 @@
package com.yxt.anrui.as.api.asbusclaiminvoicebill;
import com.yxt.common.core.utils.ExportEntityMap;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/10
**/
@Data
public class AsBusclaimInvoiceBillExcelVo {
@ApiModelProperty("索赔单号")
@ExportEntityMap(CnName = "索赔单号", EnName = "claimBillNo")
private String claimBillNo;
@ApiModelProperty("索赔工时费")
@ExportEntityMap(CnName = "索赔工时费", EnName = "claimHourAmount")
private String claimHourAmount;
@ApiModelProperty("索赔材料费")
@ExportEntityMap(CnName = "索赔材料费", EnName = "claimGoodsAmount")
private String claimGoodsAmount;
@ApiModelProperty("外出费")
@ExportEntityMap(CnName = "外出费", EnName = "claimOutAmount")
private String claimOutAmount;
@ApiModelProperty("厂家补助费")
@ExportEntityMap(CnName = "厂家补助", EnName = "claimSubsidyAmount")
private String claimSubsidyAmount;
@ApiModelProperty("其他费用")
@ExportEntityMap(CnName = "其他费用", EnName = "claimOtherAmount")
private String claimOtherAmount;
}

27
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/ExcelInfoVo.java

@ -0,0 +1,27 @@
package com.yxt.anrui.as.api.asbusclaiminvoicebill;
import com.yxt.common.core.utils.ExportEntityMap;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/10
**/
@Data
public class ExcelInfoVo {
@ApiModelProperty("索赔单号")
private String claimBillNo;
@ApiModelProperty("索赔工时费")
private String claimHourAmount;
@ApiModelProperty("索赔材料费")
private String claimGoodsAmount;
@ApiModelProperty("外出费")
private String claimOutAmount;
@ApiModelProperty("厂家补助")
private String claimSubsidyAmount;
@ApiModelProperty("其他费用")
private String claimOtherAmount;
}

18
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebill/ReturnExcelInfoVo.java

@ -0,0 +1,18 @@
package com.yxt.anrui.as.api.asbusclaiminvoicebill;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @description:
* @author: dimengzhe
* @date: 2024/5/10
**/
@Data
public class ReturnExcelInfoVo {
private String checkInfo;
private List<ExcelInfoVo> infos = new ArrayList<>();
}

8
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebilldetail/AsBusclaimInvoiceBillDetail.java

@ -27,11 +27,11 @@ public class AsBusclaimInvoiceBillDetail extends BaseEntity {
@ApiModelProperty("索赔工时费")
private BigDecimal claimHourAmount;
@ApiModelProperty("索赔材料费")
private String claimGoodsAmount;
private BigDecimal claimGoodsAmount;
@ApiModelProperty("外出费")
private String claimOutAmount;
private BigDecimal claimOutAmount;
@ApiModelProperty("厂家补助费")
private String claimSubsidyAmount;
private BigDecimal claimSubsidyAmount;
@ApiModelProperty("其他费用")
private String claimOtherAmount;
private BigDecimal claimOtherAmount;
}

2
yxt-as/src/main/java/com/yxt/anrui/as/api/asbusclaiminvoicebilldetail/AsBusclaimInvoiceBillDetailDto.java

@ -22,7 +22,7 @@ public class AsBusclaimInvoiceBillDetailDto {
@ApiModelProperty("车架号")
private String vinNo;
@ApiModelProperty("索赔工时费")
private BigDecimal claimHourAmount;
private String claimHourAmount;
@ApiModelProperty("索赔材料费")
private String claimGoodsAmount;
@ApiModelProperty("外出费")

37
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillRest.java

@ -2,12 +2,10 @@ package com.yxt.anrui.as.biz.asbusclaiminvoicebill;
import cn.hutool.core.bean.BeanUtil;
import com.yxt.anrui.as.api.asbusclaimbill.AsBusclaimBillVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillDetailsVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillDto;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillQuery;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.AsBusclaimInvoiceBillVo;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.*;
import com.yxt.anrui.as.api.asbusclaiminvoicebill.flowable.*;
import com.yxt.anrui.as.feign.flowable.flow.BusinessVariables;
import com.yxt.common.base.utils.ExportExcelUtils;
import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
@ -15,8 +13,15 @@ import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.openfeign.SpringQueryMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
@ -30,6 +35,8 @@ public class AsBusclaimInvoiceBillRest {
@Autowired
private AsBusclaimInvoiceBillService asBusclaimInvoiceBillService;
@Autowired
private HttpServletResponse response;
@PostMapping("/listPage")
@ApiOperation("厂家索赔开票分页")
@ -57,6 +64,28 @@ public class AsBusclaimInvoiceBillRest {
return asBusclaimInvoiceBillService.details(sid);
}
@PostMapping("/downloadExcel")
@ApiOperation(value = "下载模板")
public void downloadExcel() {
List<AsBusclaimInvoiceBillExcelVo> list = new ArrayList<>();
//定义导出的excel名字
String excelName = "索赔单开票明细导入模板";
String fileNameURL = "";
try {
fileNameURL = URLEncoder.encode(excelName, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ExportExcelUtils.export(fileNameURL, list, AsBusclaimInvoiceBillExcelVo.class, response);
}
@ApiOperation(value = "导入")
@PostMapping("/getExcelInfo")
ResultBean<List<ExcelInfoVo>> getExcelInfo(@RequestParam(value = "file") MultipartFile file, HttpServletRequest request, @RequestParam(value = "useOrgSid") String useOrgSid) throws IOException {
return asBusclaimInvoiceBillService.getExcelInfo(file, request, useOrgSid);
}
@ApiOperation("提交")
@PostMapping("/submitApply")
public ResultBean submitApply(@Valid @RequestBody SubmitBusclaimInvoiceBillDto dto) {

177
yxt-as/src/main/java/com/yxt/anrui/as/biz/asbusclaiminvoicebill/AsBusclaimInvoiceBillService.java

@ -31,11 +31,22 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo;
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.xssf.usermodel.XSSFWorkbook;
import org.apache.tomcat.util.threads.ThreadPoolExecutor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.concurrent.*;
import java.util.stream.Collectors;
@ -486,4 +497,170 @@ public class AsBusclaimInvoiceBillService extends MybatisBaseService<AsBusclaimI
flowFeign.delegate(delegateQuery);
return rb.success();
}
public ResultBean<List<ExcelInfoVo>> getExcelInfo(MultipartFile file, HttpServletRequest request, String useOrgSid) throws IOException {
ResultBean rb = ResultBean.fireFail();
String temp = request.getSession().getServletContext().getRealPath(File.separator) + "temp";// 临时目录
File tempFile = new File(temp);
if (!tempFile.exists()) {
tempFile.mkdirs();
}
String fileName = file.getOriginalFilename();
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
return rb.fail().setMsg("上传文件不正确");
}
int[] resultCell = new int[]{0, 1, 2, 3, 4, 5};
List<ExcelInfoVo> list = new ArrayList<>();
List<ExcelInfoVo> list2 = new ArrayList<>();
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);
ReturnExcelInfoVo importReturn = getSheetVal(sheet, resultCell, useOrgSid);
list = importReturn.getInfos();
if (StringUtils.isNotBlank(importReturn.getCheckInfo())) {
return rb.setMsg(importReturn.getCheckInfo());
} else {
return rb.success().setData(list).setMsg("成功导入数据,请点击确定按钮");
}
}
private ReturnExcelInfoVo getSheetVal(Sheet sheet, int[] resultCell, String useOrgSid) {
ReturnExcelInfoVo returnExcelInfoVo = new ReturnExcelInfoVo();
List<ExcelInfoVo> importVoList = new ArrayList<>();
Set<String> checkWord = new HashSet<>();
for (int r = 1; r <= sheet.getLastRowNum(); r++) {
Row row = sheet.getRow(r);
if (row == null) {
continue;
}
ExcelInfoVo excelInfoVo = new ExcelInfoVo();
for (int i = 0; i < row.getPhysicalNumberOfCells(); i++) {
String trim = new String();
try {
trim = getCellVal(row.getCell(i)).toString().trim();
if (StringUtils.isBlank(trim)) {
NullPointerException nullPointerException = new NullPointerException();
}
String temp = getCellVal(row.getCell(i)).toString().trim();
temp = temp.replace(".0", "");
for (int j = 0; j < resultCell.length; j++) {
if (i == resultCell[j]) {
switch (i) {
case 0:
excelInfoVo.setClaimBillNo(temp);
break;
case 1:
excelInfoVo.setClaimHourAmount(temp);
break;
case 2:
excelInfoVo.setClaimGoodsAmount(temp);
break;
case 3:
excelInfoVo.setClaimOutAmount(temp);
break;
case 4:
excelInfoVo.setClaimSubsidyAmount(temp);
case 5:
excelInfoVo.setClaimOtherAmount(temp);
default:
break;
}
} else {
continue;
}
}
} catch (Exception e) {
if (StringUtils.isBlank(trim)) {
String word = new String();
switch (i) {
case 0:
word = "索赔单号";
break;
case 1:
word = "索赔工时费";
break;
case 2:
word = "索赔材料费";
break;
case 3:
word = "外出费";
break;
case 4:
word = "厂家补助";
break;
case 5:
word = "其他费用";
break;
default:
break;
}
continue;
}
}
}
importVoList.add(excelInfoVo);
}
if (!importVoList.isEmpty()) {
for (ExcelInfoVo excelInfoVo : importVoList) {
if (StringUtils.isBlank(excelInfoVo.getClaimBillNo())) {
checkWord.add("索赔单号不能为空");
}
}
}
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());
returnExcelInfoVo.setCheckInfo(sbcheck1.toString());
returnExcelInfoVo.setInfos(new ArrayList<>());
return returnExcelInfoVo;
}
returnExcelInfoVo.setInfos(importVoList);
return returnExcelInfoVo;
}
public Object getCellVal(Cell cell) {
Object obj = null;
if (cell != null) {
switch (cell.getCellTypeEnum()) {
case BOOLEAN:
obj = cell.getBooleanCellValue();
break;
case ERROR:
obj = cell.getErrorCellValue();
break;
case NUMERIC:
obj = cell.getNumericCellValue();
break;
case STRING:
obj = cell.getStringCellValue();
break;
default:
break;
}
}
return obj;
}
}

Loading…
Cancel
Save