This commit is contained in:
李文飞 2025-12-15 23:16:21 +08:00
parent e6457b4846
commit 94288657d9
3 changed files with 291 additions and 156 deletions

View File

@ -75,7 +75,7 @@ spring:
basename: i18n/messages basename: i18n/messages
profiles: profiles:
# active: dev # active: dev
active: prod active: dev
# 文件上传 # 文件上传
servlet: servlet:
multipart: multipart:

View File

@ -3,6 +3,8 @@ package com.ruoyi.contract.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.RepeatSubmit;
@ -18,10 +20,10 @@ import com.ruoyi.common.utils.MathCompute;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.contract.domain.bo.*; import com.ruoyi.contract.domain.bo.*;
import com.ruoyi.contract.domain.bo.consale.*; import com.ruoyi.contract.domain.bo.consale.*;
import com.ruoyi.contract.domain.dto.ConSaleImportNewDto;
import com.ruoyi.contract.domain.vo.*; import com.ruoyi.contract.domain.vo.*;
import com.ruoyi.contract.service.*; import com.ruoyi.contract.service.*;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -30,7 +32,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
@ -195,18 +196,21 @@ public class ConSaleController extends BaseController {
@Log(title = "销售汇总导入", businessType = BusinessType.IMPORT) @Log(title = "销售汇总导入", businessType = BusinessType.IMPORT)
@PostMapping("/import" ) @PostMapping("/import" )
public R<List<ConSaleImportVo>> importExcel(MultipartFile file) { public R<List<ConSaleImportNewDto>> importExcel(MultipartFile file) {
// 获取上传的文件输入流 // 获取上传的文件输入流
try (InputStream inputStream = file.getInputStream()) { try (InputStream inputStream = file.getInputStream()) {
// 使用 EasyExcel 解析 Excel 文件并将数据转换为 ExcelRowData 实体类对象 // // 使用 EasyExcel 解析 Excel 文件并将数据转换为 ExcelRowData 实体类对象
List<ConSaleImportVo> data = EasyExcel.read(inputStream) // List<ConSaleImportNewDto> data = EasyExcel.read(inputStream)
.head(ConSaleImportVo.class) // 指定 Excel 对应的实体类 // .head(ConSaleImportNewDto.class) // 指定 Excel 对应的实体类
.sheet(0) // 指定解析第一个 sheet // .sheet(0) // 指定解析第一个 sheet
.doReadSync(); // 同步读取文件 // .doReadSync(); // 同步读取文件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d" ); ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
List<ConSaleImportNewDto> data = reader.readAll(ConSaleImportNewDto.class);
reader.close();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" );
List<ConSaleImportVo> filteredData = data.stream() List<ConSaleImportNewDto> filteredData = data.stream()
.filter(conSaleImportVo -> conSaleImportVo.getOrderCode() != null) .filter(conSaleImportVo -> conSaleImportVo.getProjectNo() != null)
.collect(Collectors.toList()); .collect(Collectors.toList());
if (CollUtil.isEmpty(filteredData)){ if (CollUtil.isEmpty(filteredData)){
return R.fail("导入没有数据"); return R.fail("导入没有数据");
@ -214,24 +218,24 @@ public class ConSaleController extends BaseController {
//处理排序问题 //处理排序问题
List<String> orderCodeList = new ArrayList<>(); List<String> orderCodeList = new ArrayList<>();
filteredData.stream().forEach(item -> { filteredData.stream().forEach(item -> {
if (!orderCodeList.contains(item.getOrderCode())){ if (!orderCodeList.contains(item.getProjectNo())){
orderCodeList.add(item.getOrderCode()); orderCodeList.add(item.getProjectNo());
} }
}); });
//之后将顺序翻转过来 //之后将顺序翻转过来
Map<String, List<ConSaleImportVo>> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportVo::getOrderCode)); Map<String, List<ConSaleImportNewDto>> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportNewDto::getProjectNo));
List<ConSaleImportVo> failList= new ArrayList<>(); List<ConSaleImportNewDto> failList= new ArrayList<>();
//数据合并 //数据合并
List<ConSaleBo> conSaleBoList = new ArrayList<>(); List<ConSaleBo> conSaleBoList = new ArrayList<>();
orderCodeList.forEach(item -> { orderCodeList.forEach(item -> {
String projectCodeKey = item; String projectCodeKey = item;
List<ConSaleImportVo> salesList = conSaleImportMap.get(projectCodeKey); List<ConSaleImportNewDto> salesList = conSaleImportMap.get(projectCodeKey);
if (CollectionUtils.isEmpty(salesList)) { if (CollectionUtils.isEmpty(salesList)) {
return; return;
} }
ConSaleImportVo datum = salesList.get(0); ConSaleImportNewDto datum = salesList.get(0);
datum.setStatus("1" ); datum.setStatus("1" );
ConSaleBo conSaleBo = new ConSaleBo(); ConSaleBo conSaleBo = new ConSaleBo();
@ -244,6 +248,23 @@ public class ConSaleController extends BaseController {
//项目执行人 //项目执行人
conSaleBo.setProjExecutor(projectExecutor); conSaleBo.setProjExecutor(projectExecutor);
//媒体费
String totalAmount = datum.getTotalAmount();
if (org.apache.commons.lang3.StringUtils.isBlank(totalAmount)) {
datum.setStatus("0" );
datum.setNotes("媒体费未填写" );
return;
}
if(totalAmount.equals("#VALUE!")){
totalAmount = "0";
}
totalAmount = totalAmount.replaceAll(",","");
try {
conSaleBo.setContractMoney(MathCompute.formatFourStringToDouble(totalAmount));
} catch (Exception ex) {
conSaleBo.setContractMoney(0.0);
}
String department = datum.getDepartment(); String department = datum.getDepartment();
if (org.apache.commons.lang3.StringUtils.isBlank(department)) { if (org.apache.commons.lang3.StringUtils.isBlank(department)) {
@ -263,7 +284,7 @@ public class ConSaleController extends BaseController {
} }
//项目编号 //项目编号
String projectCode = datum.getProjectCode(); String projectCode = datum.getContractNo();
if (org.apache.commons.lang3.StringUtils.isBlank(projectCode)) { if (org.apache.commons.lang3.StringUtils.isBlank(projectCode)) {
datum.setStatus("0" ); datum.setStatus("0" );
datum.setNotes("项目编号未填写" ); datum.setNotes("项目编号未填写" );
@ -271,7 +292,7 @@ public class ConSaleController extends BaseController {
} }
conSaleBo.setContractNumber(projectCode); conSaleBo.setContractNumber(projectCode);
//订单编号 //订单编号
String orderCode = datum.getOrderCode(); String orderCode = datum.getProjectNo();
if (org.apache.commons.lang3.StringUtils.isBlank(orderCode)) { if (org.apache.commons.lang3.StringUtils.isBlank(orderCode)) {
datum.setStatus("0" ); datum.setStatus("0" );
datum.setNotes("订单编号未填写" ); datum.setNotes("订单编号未填写" );
@ -310,7 +331,7 @@ public class ConSaleController extends BaseController {
//合同签订日期 //合同签订日期
String contractSignDate = datum.getContractSignDate(); String contractSignDate = datum.getSignDate();
if (org.apache.commons.lang3.StringUtils.isBlank(contractSignDate)) { if (org.apache.commons.lang3.StringUtils.isBlank(contractSignDate)) {
datum.setStatus("0" ); datum.setStatus("0" );
datum.setNotes("合同签订日期未填写" ); datum.setNotes("合同签订日期未填写" );
@ -322,13 +343,13 @@ public class ConSaleController extends BaseController {
conSaleBo.setSignTime(date); conSaleBo.setSignTime(date);
} catch (ParseException e) { } catch (ParseException e) {
datum.setStatus("0" ); datum.setStatus("0" );
datum.setNotes("合同签订日期格式错误,正确格式yyyy/M/d" ); datum.setNotes("合同签订日期格式错误,正确格式yyyy-MM-dd" );
return; return;
} }
//实际开票日期 //实际开票日期
String actualInvoiceDate = datum.getActualInvoiceDate(); String actualInvoiceDate = datum.getInvoiceDate();
if (org.apache.commons.lang3.StringUtils.isBlank(actualInvoiceDate)) { if (org.apache.commons.lang3.StringUtils.isBlank(actualInvoiceDate)) {
}else { }else {
@ -337,7 +358,7 @@ public class ConSaleController extends BaseController {
conSaleBo.setBillingTime(date); conSaleBo.setBillingTime(date);
} catch (ParseException e) { } catch (ParseException e) {
datum.setStatus("0" ); datum.setStatus("0" );
datum.setNotes("实际开票日期格式错误,正确格式yyyy/M/d" ); datum.setNotes("实际开票日期格式错误,正确格式yyyy-MM-dd" );
return; return;
} }
} }
@ -381,7 +402,7 @@ public class ConSaleController extends BaseController {
conSaleBo.setSecondName(partyB); conSaleBo.setSecondName(partyB);
List<ConSaleMediaBo> conSaleMediaBoList = new ArrayList<>(); List<ConSaleMediaBo> conSaleMediaBoList = new ArrayList<>();
for (ConSaleImportVo conSaleImportVo : salesList) { for (ConSaleImportNewDto conSaleImportVo : salesList) {
conSaleImportVo.setStatus("1" ); conSaleImportVo.setStatus("1" );
ConSaleMediaBo conSaleMediaBo = new ConSaleMediaBo(); ConSaleMediaBo conSaleMediaBo = new ConSaleMediaBo();
//城市 //城市
@ -472,7 +493,7 @@ public class ConSaleController extends BaseController {
conSaleMediaBo.setMediaPosition(mediaPosition); conSaleMediaBo.setMediaPosition(mediaPosition);
//数量 //数量
String quantity = conSaleImportVo.getQuantity(); String quantity = conSaleImportVo.getQuantity().toString();
if (org.apache.commons.lang3.StringUtils.isBlank(quantity)) { if (org.apache.commons.lang3.StringUtils.isBlank(quantity)) {
conSaleImportVo.setStatus("0" ); conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("数量未填写" ); conSaleImportVo.setNotes("数量未填写" );
@ -504,7 +525,7 @@ public class ConSaleController extends BaseController {
//刊例价 //刊例价
String listPrice = conSaleImportVo.getListPrice(); String listPrice = conSaleImportVo.getListPrice().toString();
if (org.apache.commons.lang3.StringUtils.isBlank(listPrice)) { if (org.apache.commons.lang3.StringUtils.isBlank(listPrice)) {
conSaleImportVo.setStatus("0" ); conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("刊例价未填写" ); conSaleImportVo.setNotes("刊例价未填写" );
@ -544,7 +565,7 @@ public class ConSaleController extends BaseController {
conSaleMediaBo.setDiscount(discount); conSaleMediaBo.setDiscount(discount);
//媒体费 //媒体费
String mediaCost = conSaleImportVo.getMediaCost(); String mediaCost = conSaleImportVo.getMediaFee();
if (org.apache.commons.lang3.StringUtils.isBlank(mediaCost)) { if (org.apache.commons.lang3.StringUtils.isBlank(mediaCost)) {
conSaleImportVo.setStatus("0" ); conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("媒体费未填写" ); conSaleImportVo.setNotes("媒体费未填写" );
@ -564,7 +585,7 @@ public class ConSaleController extends BaseController {
//制作费 //制作费
String productionCost = conSaleImportVo.getProductionCost(); String productionCost = conSaleImportVo.getProductionFee();
if (org.apache.commons.lang3.StringUtils.isBlank(productionCost)) { if (org.apache.commons.lang3.StringUtils.isBlank(productionCost)) {
conSaleImportVo.setStatus("0" ); conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("制作费未填写" ); conSaleImportVo.setNotes("制作费未填写" );
@ -606,15 +627,12 @@ public class ConSaleController extends BaseController {
conSaleMediaBo.setCompetReverPoit(bidRebate); conSaleMediaBo.setCompetReverPoit(bidRebate);
//比稿金额 //比稿金额
String bidAmount = conSaleImportVo.getBidAmount(); String bidAmount = conSaleImportVo.getBidRebateAmount();
if (org.apache.commons.lang3.StringUtils.isBlank(bidAmount)) { if (bidAmount == null) {
conSaleImportVo.setStatus("0" ); conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("比稿金额未填写" ); conSaleImportVo.setNotes("比稿金额未填写" );
return; return;
} }
if(bidAmount.equals("#VALUE!")){
bidAmount = "0";
}
bidAmount = bidAmount.replace("","").replaceAll(",","");; bidAmount = bidAmount.replace("","").replaceAll(",","");;
try { try {
@ -626,40 +644,40 @@ public class ConSaleController extends BaseController {
conSaleImportVo.setNotes("比稿金额填写错误" ); conSaleImportVo.setNotes("比稿金额填写错误" );
return; return;
} }
//
// //YK给群邑返点比例
// String ykToQunYiRebateRate = conSaleImportVo.getYkToQunYiRebateRate();
// if (org.apache.commons.lang3.StringUtils.isBlank(ykToQunYiRebateRate)) {
// conSaleImportVo.setStatus("0" );
// conSaleImportVo.setNotes("YK给群邑返点比例未填写" );
// return;
// }
//
// //优客返点给群邑
// String yuKeRebateToQunYi = conSaleImportVo.getYuKeRebateToQunYi();
// if (org.apache.commons.lang3.StringUtils.isBlank(yuKeRebateToQunYi)) {
// conSaleImportVo.setStatus("0" );
// conSaleImportVo.setNotes("优客返点给群邑未填写" );
// return;
// }
// //YK给YYX返点比例
// String ykToYYXRebateRate = conSaleImportVo.getYkToYYXRebateRate();
// if (org.apache.commons.lang3.StringUtils.isBlank(ykToYYXRebateRate)) {
// conSaleImportVo.setStatus("0" );
// conSaleImportVo.setNotes("YK给YYX返点比例未填写" );
// return;
// }
//
// //优客返点给YYX
// String yuKeRebateToYYX = conSaleImportVo.getYuKeRebateToYYX();
// if (org.apache.commons.lang3.StringUtils.isBlank(yuKeRebateToYYX)) {
// conSaleImportVo.setStatus("0" );
// conSaleImportVo.setNotes("优客返点给YYX未填写" );
// return;
// }
//YK给群邑返点比例 // String ykToQunYiRebateRateReplace = ykToQunYiRebateRate.replace("%", "" );
String ykToQunYiRebateRate = conSaleImportVo.getYkToQunYiRebateRate(); // String ykToYYXRebateRateReplace = ykToYYXRebateRate.replace("%", "" );
if (org.apache.commons.lang3.StringUtils.isBlank(ykToQunYiRebateRate)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("YK给群邑返点比例未填写" );
return;
}
//优客返点给群邑
String yuKeRebateToQunYi = conSaleImportVo.getYuKeRebateToQunYi();
if (org.apache.commons.lang3.StringUtils.isBlank(yuKeRebateToQunYi)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("优客返点给群邑未填写" );
return;
}
//YK给YYX返点比例
String ykToYYXRebateRate = conSaleImportVo.getYkToYYXRebateRate();
if (org.apache.commons.lang3.StringUtils.isBlank(ykToYYXRebateRate)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("YK给YYX返点比例未填写" );
return;
}
//优客返点给YYX
String yuKeRebateToYYX = conSaleImportVo.getYuKeRebateToYYX();
if (org.apache.commons.lang3.StringUtils.isBlank(yuKeRebateToYYX)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("优客返点给YYX未填写" );
return;
}
String ykToQunYiRebateRateReplace = ykToQunYiRebateRate.replace("%", "" );
String ykToYYXRebateRateReplace = ykToYYXRebateRate.replace("%", "" );
//其他返点 //其他返点
double otherRebates = 0; double otherRebates = 0;
@ -667,37 +685,37 @@ public class ConSaleController extends BaseController {
double otherRebateAmounts = 0; double otherRebateAmounts = 0;
try { // try {
double ykToQunYiRebateRateDouble = Double.parseDouble(ykToQunYiRebateRateReplace); // double ykToQunYiRebateRateDouble = Double.parseDouble(ykToQunYiRebateRateReplace);
double ykToYYXRebateRateDouble = Double.parseDouble(ykToYYXRebateRateReplace); // double ykToYYXRebateRateDouble = Double.parseDouble(ykToYYXRebateRateReplace);
otherRebates = ykToQunYiRebateRateDouble + ykToYYXRebateRateDouble; // otherRebates = ykToQunYiRebateRateDouble + ykToYYXRebateRateDouble;
} catch (Exception ex) { // } catch (Exception ex) {
conSaleImportVo.setStatus("0" ); // conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("YK给群邑返点比例 or YK给YYX返点比例错误" ); // conSaleImportVo.setNotes("YK给群邑返点比例 or YK给YYX返点比例错误" );
return; // return;
} // }
//
//
String yuKeRebateToQunYiReplace = yuKeRebateToQunYi.replace("", "" ).replaceAll(",",""); // String yuKeRebateToQunYiReplace = yuKeRebateToQunYi.replace("", "" ).replaceAll(",","");
String yuKeRebateToYYXReplace = yuKeRebateToYYX.replace("", "" ).replaceAll(",",""); // String yuKeRebateToYYXReplace = yuKeRebateToYYX.replace("", "" ).replaceAll(",","");
if(yuKeRebateToQunYiReplace.equals("#VALUE!")){ // if(yuKeRebateToQunYiReplace.equals("#VALUE!")){
yuKeRebateToQunYiReplace = "0"; // yuKeRebateToQunYiReplace = "0";
} // }
if(yuKeRebateToYYXReplace.equals("#VALUE!")){ // if(yuKeRebateToYYXReplace.equals("#VALUE!")){
yuKeRebateToYYXReplace = "0"; // yuKeRebateToYYXReplace = "0";
} // }
try { // try {
double yuKeRebateToQunYiDouble = Double.parseDouble(yuKeRebateToQunYiReplace); // double yuKeRebateToQunYiDouble = Double.parseDouble(yuKeRebateToQunYiReplace);
double yuKeRebateToYYXDouble = Double.parseDouble(yuKeRebateToYYXReplace); // double yuKeRebateToYYXDouble = Double.parseDouble(yuKeRebateToYYXReplace);
otherRebateAmounts = yuKeRebateToQunYiDouble + yuKeRebateToYYXDouble; // otherRebateAmounts = yuKeRebateToQunYiDouble + yuKeRebateToYYXDouble;
} catch (Exception ex) { // } catch (Exception ex) {
conSaleImportVo.setStatus("0" ); // conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("优客返点给群邑 or 优客返点给YYX" ); // conSaleImportVo.setNotes("优客返点给群邑 or 优客返点给YYX" );
return; // return;
} // }
//补充说明 其实是媒体信息中的备注 //补充说明 其实是媒体信息中的备注
String additionalNotes = conSaleImportVo.getAdditionalNotes(); String additionalNotes = conSaleImportVo.getNotes();
conSaleMediaBo.setRemark(additionalNotes); conSaleMediaBo.setRemark(additionalNotes);
// conSaleMediaBo.setOtherReverPoit(String.valueOf(otherRebates).concat("%" )); // conSaleMediaBo.setOtherReverPoit(String.valueOf(otherRebates).concat("%" ));
@ -713,65 +731,65 @@ public class ConSaleController extends BaseController {
List<ConSaleCollectBo> conSaleCollectBoList = new ArrayList<>(); List<ConSaleCollectBo> conSaleCollectBoList = new ArrayList<>();
int size = 1; int size = 1;
for (ConSaleImportVo conSaleImportVo : salesList) { // for (ConSaleImportNewDto conSaleImportVo : salesList) {
ConSaleCollectBo conSaleCollectBo = new ConSaleCollectBo(); // ConSaleCollectBo conSaleCollectBo = new ConSaleCollectBo();
conSaleCollectBo.setTransactionsNumber("" + size + "" ); // conSaleCollectBo.setTransactionsNumber("" + size + "" );
//每笔订单金额 // //每笔订单金额
String orderAmountPerTransaction = conSaleImportVo.getOrderAmountPerTransaction(); // String orderAmountPerTransaction = conSaleImportVo.getOrderAmountPerTransaction();
if (org.apache.commons.lang3.StringUtils.isBlank(orderAmountPerTransaction)) { // if (org.apache.commons.lang3.StringUtils.isBlank(orderAmountPerTransaction)) {
//
}else { // }else {
if(orderAmountPerTransaction.equals("#VALUE!")){ // if(orderAmountPerTransaction.equals("#VALUE!")){
orderAmountPerTransaction = "0"; // orderAmountPerTransaction = "0";
} // }
//
orderAmountPerTransaction = orderAmountPerTransaction.replace("","").replaceAll(",",""); // orderAmountPerTransaction = orderAmountPerTransaction.replace("","").replaceAll(",","");
try { // try {
double value = Double.parseDouble(orderAmountPerTransaction); // double value = Double.parseDouble(orderAmountPerTransaction);
// conSaleCollectBo.setActualArrivalMoney(value); //// conSaleCollectBo.setActualArrivalMoney(value);
conSaleCollectBo.setConventionArrivalMoney(value); // conSaleCollectBo.setConventionArrivalMoney(value);
} catch (Exception ex) { // } catch (Exception ex) {
conSaleImportVo.setStatus("0" ); // conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("每笔订单金额填写错误" ); // conSaleImportVo.setNotes("每笔订单金额填写错误" );
return; // return;
} // }
} // }
//
//
//约定回款日期 // //约定回款日期
String agreedPaymentDate = conSaleImportVo.getAgreedPaymentDate(); // String agreedPaymentDate = conSaleImportVo.getAgreedPaymentDate();
if (org.apache.commons.lang3.StringUtils.isBlank(agreedPaymentDate)) { // if (org.apache.commons.lang3.StringUtils.isBlank(agreedPaymentDate)) {
conSaleImportVo.setStatus("0" ); // conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("约定回款日期未填写" ); // conSaleImportVo.setNotes("约定回款日期未填写" );
return; // return;
} // }
try { // try {
Date date = sdf.parse(agreedPaymentDate); // Date date = sdf.parse(agreedPaymentDate);
conSaleCollectBo.setPayTime(date); // conSaleCollectBo.setPayTime(date);
} catch (ParseException e) { // } catch (ParseException e) {
conSaleImportVo.setStatus("0" ); // conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("约定回款日期格式错误,正确格式yyyy/M/d" ); // conSaleImportVo.setNotes("约定回款日期格式错误,正确格式yyyy/M/d" );
return; // return;
} // }
//
//
//实际回款日期 // //实际回款日期
String actualPaymentDate = conSaleImportVo.getActualPaymentDate(); // String actualPaymentDate = conSaleImportVo.getActualPaymentDate();
if (org.apache.commons.lang3.StringUtils.isBlank(actualPaymentDate)) { // if (org.apache.commons.lang3.StringUtils.isBlank(actualPaymentDate)) {
//
}else { // }else {
try { // try {
Date date = sdf.parse(actualPaymentDate); // Date date = sdf.parse(actualPaymentDate);
conSaleCollectBo.setArrivalTime(date); // conSaleCollectBo.setArrivalTime(date);
} catch (ParseException e) { // } catch (ParseException e) {
conSaleImportVo.setStatus("0"); // conSaleImportVo.setStatus("0");
conSaleImportVo.setNotes("约定回款日期格式错误,正确格式yyyy/M/d"); // conSaleImportVo.setNotes("约定回款日期格式错误,正确格式yyyy/M/d");
return; // return;
} // }
} // }
conSaleCollectBoList.add(conSaleCollectBo); // conSaleCollectBoList.add(conSaleCollectBo);
size++; // size++;
} // }
conSaleBo.setConSaleCollectBoList(conSaleCollectBoList); conSaleBo.setConSaleCollectBoList(conSaleCollectBoList);
conSaleBoList.add(conSaleBo); conSaleBoList.add(conSaleBo);
@ -781,7 +799,7 @@ public class ConSaleController extends BaseController {
AtomicBoolean flag = new AtomicBoolean(true); AtomicBoolean flag = new AtomicBoolean(true);
conSaleImportMap.forEach((projectCodeKey, salesList) -> { conSaleImportMap.forEach((projectCodeKey, salesList) -> {
for (ConSaleImportVo conSaleImportVo : salesList) { for (ConSaleImportNewDto conSaleImportVo : salesList) {
if (BigDecimal.ZERO.toString().equals(conSaleImportVo.getStatus())){ if (BigDecimal.ZERO.toString().equals(conSaleImportVo.getStatus())){
flag.set(false); flag.set(false);
failList.add(conSaleImportVo); failList.add(conSaleImportVo);

View File

@ -0,0 +1,117 @@
package com.ruoyi.contract.domain.dto;
import cn.hutool.core.annotation.Alias;
import lombok.Data;
import java.io.Serializable;
/**
* 销售合同导入DTO
* 用于接收Hutool Excel读取的数据
*/
@Data
public class ConSaleImportNewDto implements Serializable {
private static final long serialVersionUID = 1L;
@Alias("序号")
private String no;
@Alias("客户名称")
private String clientName;
@Alias("项目编号")
private String contractNo;
@Alias("订单编号")
private String projectNo;
@Alias("媒介部门")
private String department;
@Alias("项目名称")
private String projectName;
@Alias("城市")
private String city;
@Alias("上刊时间")
private String publishStartDate;
@Alias("下刊时间")
private String publishEndDate;
@Alias("周期")
private String publishCycle;
@Alias("媒体类型")
private String mediaType;
@Alias("媒体位置")
private String mediaPosition;
@Alias("数量")
private String quantity;
@Alias("发布频次")
private String frequency;
@Alias("刊例价")
private String listPrice;
@Alias("刊例价单位")
private String listPriceUnit;
@Alias("折扣")
private String discount;
@Alias("订单发布费")
private String mediaFee;
@Alias("订单制作费")
private String productionFee;
@Alias("合同金额")
private String totalAmount;
@Alias("比稿")
private String isBid;
@Alias("比稿返点")
private String bidRebate;
@Alias("比稿返点金额")
private String bidRebateAmount;
@Alias("其他返点1")
private String otherReverPoit = "0";
@Alias("其他返点金额1")
private String otherReverMoney;
@Alias("其他返点2")
private String otherReverPoit2 = "0";
@Alias("其他返点金额2")
private String otherReverMoney2;
@Alias("开票时间")
private String invoiceDate;
@Alias("甲方名称")
private String partyA;
@Alias("乙方名称")
private String partyB;
@Alias("签订日期")
private String signDate;
@Alias("补充说明")
private String notes;
@Alias("状态")
private String status;
@Alias("项目执行人")
private String projectExecutor;
}