将空格显示出来并加上品牌/产地/材质字段应该为文字,并且不能为空格 报错提示
@RequestMapping(value="/import", method = RequestMethod.POST)
@ResponseBody
public String importExcel(@RequestParam(value="file") MultipartFile excelFile,HttpServletRequest request){
//TODO 报价单导入
LOG.info("-----------------执行报价单导入-----------------");
if( excelFile == null ){
String errMsg = com.yonyou.cpu.multi.YcMessageUtils.getMessage("P_DIWORK_YC_CPU-PORTAL_0000056056") /* "导入文件不能为空" */;
LOG.error(errMsg);
throw new RuntimeException(errMsg);
}
QuotationOffer pojo = quotationOfferService.queryQuotationbyid(buildCriteria(request));
ArrayList<QuotationOfferDetail> quotationOfferDetailArrayList = new ArrayList<>();
for(QuotationOfferDetail body: pojo.getQuotationOfferDetailArrayList()){
if (this.isPriceLine(body)) {
quotationOfferDetailArrayList.add(body);
}
}
pojo.setQuotationOfferDetailArrayList(quotationOfferDetailArrayList);
//明细表的最大size
ParamCriteria criteria1 = new ParamCriteria();
criteria1.setEnterpriseId(pojo.getPurcorpId());
criteria1.setParamDefCode("SA024");
List<ParamPOJO> paramPOJOs = paramService.queryParam(criteria1);
List<QuotationOfferDetail> details=new ArrayList<>();
//精度位数
ParamCriteria criteria2 = new ParamCriteria();
criteria2.setEnterpriseId(pojo.getPurcorpId());
criteria2.setParamDefCode("SA026");
List<ParamPOJO> paramPOJO2 = paramService.queryParam(criteria2);
//默认精度
int num=8;
if(paramPOJO2!=null && paramPOJO2.size()>0){
num=Integer.parseInt(paramPOJO2.get(0).getValue());
}
BigDecimal hundred = BigDecimal.valueOf(100);
//无税优先
if(paramPOJOs!=null && paramPOJOs.size()>0&¶mPOJOs.get(0).getValue().equals("2")) {
details = QuotationOfferNoTaxExcelUtil.excel2Detail(excelFile, pojo);
for(QuotationOfferDetail vo:details){
BigDecimal taxrate = getPriceBodyTaxrete(vo);
if(vo.getNoTaxPrice()!=null){
vo.setNoTaxPrice(vo.getNoTaxPrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setTaxPrice(vo.getNoTaxPrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
}
}
if(vo.getNoTaxAcceptancePrice()!=null){
vo.setNoTaxAcceptancePrice(vo.getNoTaxAcceptancePrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setAcceptancePrice(vo.getNoTaxAcceptancePrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
}
}
if(vo.getNoTaxPaymentPrice()!=null){
vo.setNoTaxPaymentPrice(vo.getNoTaxPaymentPrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setPaymentPrice(vo.getNoTaxPaymentPrice().multiply(BigDecimal.ONE.add(taxrate.divide(hundred))).setScale(num, RoundingMode.HALF_UP));
}
}
}
}else{
details = QuotationOfferExcelUtil.excel2Detail(excelFile, pojo);
for(QuotationOfferDetail vo:details) {
BigDecimal taxrate = getPriceBodyTaxrete(vo);
if(vo.getTaxPrice()!=null){
vo.setTaxPrice(vo.getTaxPrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setNoTaxPrice(vo.getTaxPrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));
}
}
if(vo.getAcceptancePrice()!=null){
vo.setAcceptancePrice(vo.getAcceptancePrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setNoTaxAcceptancePrice(vo.getAcceptancePrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));
}
}
if(vo.getPaymentPrice()!=null){
vo.setPaymentPrice(vo.getPaymentPrice().setScale(num, RoundingMode.HALF_UP));
if(vo.getTaxrate()!=null){
vo.setNoTaxPaymentPrice(vo.getPaymentPrice().divide(BigDecimal.ONE.add(taxrate.divide(hundred)), num, RoundingMode.HALF_UP));
}
}
}
}
//品牌
if(paramPOJOs!=null && paramPOJOs.size()>0&¶mPOJOs.get(0).getValue().equals("2")) {
details = QuotationOfferNoTaxExcelUtil.excel2Detail(excelFile, pojo);
for(QuotationOfferDetail vo:details){
BigDecimal suppProductName = getPriceBodyTaxrete(vo);
if(vo.getSuppProductName()!=null){
vo.setSuppProductName(vo.getSuppProductName());
}
if(vo.getSuppProductName()!=null){
vo.setSuppProductName(vo.getSuppProductName());
}
if(vo.getSuppProductName()!=null){
vo.setSuppProductName(vo.getSuppProductName());
}
}
}else{
details = QuotationOfferExcelUtil.excel2Detail(excelFile, pojo);
for(QuotationOfferDetail vo:details) {
BigDecimal suppProductName = getSuppProductName(vo);
if(vo.getSuppProductName()!=null){
vo.setSuppProductName(vo.getSuppProductName());
}
}
}
return JSON.toJSONString(details);
}
private BigDecimal getPriceBodyTaxrete(QuotationOfferDetail vo) {
String rowno = "";
if (vo.getRowNo() != null) {
rowno = "行号:" + vo.getRowNo();
}
Assert.isTrue(!Strings.isNullOrEmpty(vo.getTaxrate()), "税率字段不能为空!" + rowno);
BigDecimal taxrate = null;
try {
taxrate = new BigDecimal(vo.getTaxrate());
} catch (Exception e) {
LOG.error("转换税率出错, Taxrete:" + vo.getTaxrate(), e);
}
Assert.notNull(taxrate, "税率字段应该为数字,并且不能为空!" + rowno);
return taxrate;
}
private BigDecimal getSuppProductName(QuotationOfferDetail vo) {
String rowno = "";
if (vo.getRowNo() != null) {
rowno = "行号:" + vo.getRowNo();
}
Assert.isTrue(!Strings.isNullOrEmpty(vo.getSuppProductName()), "品牌/产地/材质字段不能为空!" + rowno);
BigDecimal suppProductName = new BigDecimal(0);
try {
//suppProductName = new BigDecimal(vo.getSuppProductName().replace(" ","").replace("\n","").replace("\r","").replace("\t",""));
suppProductName = new BigDecimal (vo.getSuppProductName());
} catch (Exception e) {
LOG.error("转换品牌/产地/材质出错, suppProductName:" + vo.getSuppProductName(), e);
}
Assert.notNull(suppProductName, "品牌/产地/材质字段应该为文字,并且不能为空格!" + rowno);
return suppProductName;
}