From 94288657d9ddfc1384966d09426c3b7365cba5ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=96=87=E9=A3=9E?= <347907836@qq.com> Date: Mon, 15 Dec 2025 23:16:21 +0800 Subject: [PATCH] commit --- .../src/main/resources/application.yml | 2 +- .../controller/ConSaleController.java | 328 +++++++++--------- .../domain/dto/ConSaleImportNewDto.java | 117 +++++++ 3 files changed, 291 insertions(+), 156 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/contract/domain/dto/ConSaleImportNewDto.java diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index c55971a..7fa61f3 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -75,7 +75,7 @@ spring: basename: i18n/messages profiles: # active: dev - active: prod + active: dev # 文件上传 servlet: multipart: diff --git a/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConSaleController.java b/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConSaleController.java index 4c37282..f6f3937 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConSaleController.java +++ b/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConSaleController.java @@ -3,6 +3,8 @@ package com.ruoyi.contract.controller; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; 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.ruoyi.common.annotation.Log; 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.contract.domain.bo.*; import com.ruoyi.contract.domain.bo.consale.*; +import com.ruoyi.contract.domain.dto.ConSaleImportNewDto; import com.ruoyi.contract.domain.vo.*; import com.ruoyi.contract.service.*; import lombok.RequiredArgsConstructor; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -30,7 +32,6 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; -import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; import java.text.ParseException; @@ -195,18 +196,21 @@ public class ConSaleController extends BaseController { @Log(title = "销售汇总导入", businessType = BusinessType.IMPORT) @PostMapping("/import" ) - public R> importExcel(MultipartFile file) { + public R> importExcel(MultipartFile file) { // 获取上传的文件输入流 try (InputStream inputStream = file.getInputStream()) { - // 使用 EasyExcel 解析 Excel 文件,并将数据转换为 ExcelRowData 实体类对象 - List data = EasyExcel.read(inputStream) - .head(ConSaleImportVo.class) // 指定 Excel 对应的实体类 - .sheet(0) // 指定解析第一个 sheet - .doReadSync(); // 同步读取文件 - SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d" ); +// // 使用 EasyExcel 解析 Excel 文件,并将数据转换为 ExcelRowData 实体类对象 +// List data = EasyExcel.read(inputStream) +// .head(ConSaleImportNewDto.class) // 指定 Excel 对应的实体类 +// .sheet(0) // 指定解析第一个 sheet +// .doReadSync(); // 同步读取文件 + ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); + List data = reader.readAll(ConSaleImportNewDto.class); + reader.close(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd" ); - List filteredData = data.stream() - .filter(conSaleImportVo -> conSaleImportVo.getOrderCode() != null) + List filteredData = data.stream() + .filter(conSaleImportVo -> conSaleImportVo.getProjectNo() != null) .collect(Collectors.toList()); if (CollUtil.isEmpty(filteredData)){ return R.fail("导入没有数据"); @@ -214,24 +218,24 @@ public class ConSaleController extends BaseController { //处理排序问题 List orderCodeList = new ArrayList<>(); filteredData.stream().forEach(item -> { - if (!orderCodeList.contains(item.getOrderCode())){ - orderCodeList.add(item.getOrderCode()); + if (!orderCodeList.contains(item.getProjectNo())){ + orderCodeList.add(item.getProjectNo()); } }); //之后将顺序翻转过来 - Map> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportVo::getOrderCode)); - List failList= new ArrayList<>(); + Map> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportNewDto::getProjectNo)); + List failList= new ArrayList<>(); //数据合并 List conSaleBoList = new ArrayList<>(); orderCodeList.forEach(item -> { String projectCodeKey = item; - List salesList = conSaleImportMap.get(projectCodeKey); + List salesList = conSaleImportMap.get(projectCodeKey); if (CollectionUtils.isEmpty(salesList)) { return; } - ConSaleImportVo datum = salesList.get(0); + ConSaleImportNewDto datum = salesList.get(0); datum.setStatus("1" ); ConSaleBo conSaleBo = new ConSaleBo(); @@ -244,6 +248,23 @@ public class ConSaleController extends BaseController { //项目执行人 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(); 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)) { datum.setStatus("0" ); datum.setNotes("项目编号未填写" ); @@ -271,7 +292,7 @@ public class ConSaleController extends BaseController { } conSaleBo.setContractNumber(projectCode); //订单编号 - String orderCode = datum.getOrderCode(); + String orderCode = datum.getProjectNo(); if (org.apache.commons.lang3.StringUtils.isBlank(orderCode)) { datum.setStatus("0" ); 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)) { datum.setStatus("0" ); datum.setNotes("合同签订日期未填写" ); @@ -322,13 +343,13 @@ public class ConSaleController extends BaseController { conSaleBo.setSignTime(date); } catch (ParseException e) { datum.setStatus("0" ); - datum.setNotes("合同签订日期格式错误,正确格式:yyyy/M/d" ); + datum.setNotes("合同签订日期格式错误,正确格式:yyyy-MM-dd" ); return; } //实际开票日期 - String actualInvoiceDate = datum.getActualInvoiceDate(); + String actualInvoiceDate = datum.getInvoiceDate(); if (org.apache.commons.lang3.StringUtils.isBlank(actualInvoiceDate)) { }else { @@ -337,7 +358,7 @@ public class ConSaleController extends BaseController { conSaleBo.setBillingTime(date); } catch (ParseException e) { datum.setStatus("0" ); - datum.setNotes("实际开票日期格式错误,正确格式:yyyy/M/d" ); + datum.setNotes("实际开票日期格式错误,正确格式:yyyy-MM-dd" ); return; } } @@ -381,7 +402,7 @@ public class ConSaleController extends BaseController { conSaleBo.setSecondName(partyB); List conSaleMediaBoList = new ArrayList<>(); - for (ConSaleImportVo conSaleImportVo : salesList) { + for (ConSaleImportNewDto conSaleImportVo : salesList) { conSaleImportVo.setStatus("1" ); ConSaleMediaBo conSaleMediaBo = new ConSaleMediaBo(); //城市 @@ -472,7 +493,7 @@ public class ConSaleController extends BaseController { conSaleMediaBo.setMediaPosition(mediaPosition); //数量 - String quantity = conSaleImportVo.getQuantity(); + String quantity = conSaleImportVo.getQuantity().toString(); if (org.apache.commons.lang3.StringUtils.isBlank(quantity)) { conSaleImportVo.setStatus("0" ); 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)) { conSaleImportVo.setStatus("0" ); conSaleImportVo.setNotes("刊例价未填写" ); @@ -544,7 +565,7 @@ public class ConSaleController extends BaseController { conSaleMediaBo.setDiscount(discount); //媒体费 - String mediaCost = conSaleImportVo.getMediaCost(); + String mediaCost = conSaleImportVo.getMediaFee(); if (org.apache.commons.lang3.StringUtils.isBlank(mediaCost)) { conSaleImportVo.setStatus("0" ); 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)) { conSaleImportVo.setStatus("0" ); conSaleImportVo.setNotes("制作费未填写" ); @@ -606,15 +627,12 @@ public class ConSaleController extends BaseController { conSaleMediaBo.setCompetReverPoit(bidRebate); //比稿金额 - String bidAmount = conSaleImportVo.getBidAmount(); - if (org.apache.commons.lang3.StringUtils.isBlank(bidAmount)) { + String bidAmount = conSaleImportVo.getBidRebateAmount(); + if (bidAmount == null) { conSaleImportVo.setStatus("0" ); conSaleImportVo.setNotes("比稿金额未填写" ); return; } - if(bidAmount.equals("#VALUE!")){ - bidAmount = "0"; - } bidAmount = bidAmount.replace("¥","").replaceAll(",","");; try { @@ -626,40 +644,40 @@ public class ConSaleController extends BaseController { conSaleImportVo.setNotes("比稿金额填写错误" ); 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 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; - } - - String ykToQunYiRebateRateReplace = ykToQunYiRebateRate.replace("%", "" ); - String ykToYYXRebateRateReplace = ykToYYXRebateRate.replace("%", "" ); +// String ykToQunYiRebateRateReplace = ykToQunYiRebateRate.replace("%", "" ); +// String ykToYYXRebateRateReplace = ykToYYXRebateRate.replace("%", "" ); //其他返点 double otherRebates = 0; @@ -667,37 +685,37 @@ public class ConSaleController extends BaseController { double otherRebateAmounts = 0; - try { - double ykToQunYiRebateRateDouble = Double.parseDouble(ykToQunYiRebateRateReplace); - double ykToYYXRebateRateDouble = Double.parseDouble(ykToYYXRebateRateReplace); - otherRebates = ykToQunYiRebateRateDouble + ykToYYXRebateRateDouble; - } catch (Exception ex) { - conSaleImportVo.setStatus("0" ); - conSaleImportVo.setNotes("YK给群邑返点比例 or YK给YYX返点比例错误" ); - return; - } - - - String yuKeRebateToQunYiReplace = yuKeRebateToQunYi.replace("¥", "" ).replaceAll(",",""); - String yuKeRebateToYYXReplace = yuKeRebateToYYX.replace("¥", "" ).replaceAll(",",""); - if(yuKeRebateToQunYiReplace.equals("#VALUE!")){ - yuKeRebateToQunYiReplace = "0"; - } - if(yuKeRebateToYYXReplace.equals("#VALUE!")){ - yuKeRebateToYYXReplace = "0"; - } - try { - double yuKeRebateToQunYiDouble = Double.parseDouble(yuKeRebateToQunYiReplace); - double yuKeRebateToYYXDouble = Double.parseDouble(yuKeRebateToYYXReplace); - otherRebateAmounts = yuKeRebateToQunYiDouble + yuKeRebateToYYXDouble; - } catch (Exception ex) { - conSaleImportVo.setStatus("0" ); - conSaleImportVo.setNotes("优客返点给群邑 or 优客返点给YYX" ); - return; - } +// try { +// double ykToQunYiRebateRateDouble = Double.parseDouble(ykToQunYiRebateRateReplace); +// double ykToYYXRebateRateDouble = Double.parseDouble(ykToYYXRebateRateReplace); +// otherRebates = ykToQunYiRebateRateDouble + ykToYYXRebateRateDouble; +// } catch (Exception ex) { +// conSaleImportVo.setStatus("0" ); +// conSaleImportVo.setNotes("YK给群邑返点比例 or YK给YYX返点比例错误" ); +// return; +// } +// +// +// String yuKeRebateToQunYiReplace = yuKeRebateToQunYi.replace("¥", "" ).replaceAll(",",""); +// String yuKeRebateToYYXReplace = yuKeRebateToYYX.replace("¥", "" ).replaceAll(",",""); +// if(yuKeRebateToQunYiReplace.equals("#VALUE!")){ +// yuKeRebateToQunYiReplace = "0"; +// } +// if(yuKeRebateToYYXReplace.equals("#VALUE!")){ +// yuKeRebateToYYXReplace = "0"; +// } +// try { +// double yuKeRebateToQunYiDouble = Double.parseDouble(yuKeRebateToQunYiReplace); +// double yuKeRebateToYYXDouble = Double.parseDouble(yuKeRebateToYYXReplace); +// otherRebateAmounts = yuKeRebateToQunYiDouble + yuKeRebateToYYXDouble; +// } catch (Exception ex) { +// conSaleImportVo.setStatus("0" ); +// conSaleImportVo.setNotes("优客返点给群邑 or 优客返点给YYX" ); +// return; +// } //补充说明 其实是媒体信息中的备注 - String additionalNotes = conSaleImportVo.getAdditionalNotes(); + String additionalNotes = conSaleImportVo.getNotes(); conSaleMediaBo.setRemark(additionalNotes); // conSaleMediaBo.setOtherReverPoit(String.valueOf(otherRebates).concat("%" )); @@ -713,65 +731,65 @@ public class ConSaleController extends BaseController { List conSaleCollectBoList = new ArrayList<>(); int size = 1; - for (ConSaleImportVo conSaleImportVo : salesList) { - ConSaleCollectBo conSaleCollectBo = new ConSaleCollectBo(); - conSaleCollectBo.setTransactionsNumber("第" + size + "笔" ); - //每笔订单金额 - String orderAmountPerTransaction = conSaleImportVo.getOrderAmountPerTransaction(); - if (org.apache.commons.lang3.StringUtils.isBlank(orderAmountPerTransaction)) { - - }else { - if(orderAmountPerTransaction.equals("#VALUE!")){ - orderAmountPerTransaction = "0"; - } - - orderAmountPerTransaction = orderAmountPerTransaction.replace("¥","").replaceAll(",",""); - try { - double value = Double.parseDouble(orderAmountPerTransaction); -// conSaleCollectBo.setActualArrivalMoney(value); - conSaleCollectBo.setConventionArrivalMoney(value); - } catch (Exception ex) { - conSaleImportVo.setStatus("0" ); - conSaleImportVo.setNotes("每笔订单金额填写错误" ); - return; - } - } - - - //约定回款日期 - String agreedPaymentDate = conSaleImportVo.getAgreedPaymentDate(); - if (org.apache.commons.lang3.StringUtils.isBlank(agreedPaymentDate)) { - conSaleImportVo.setStatus("0" ); - conSaleImportVo.setNotes("约定回款日期未填写" ); - return; - } - try { - Date date = sdf.parse(agreedPaymentDate); - conSaleCollectBo.setPayTime(date); - } catch (ParseException e) { - conSaleImportVo.setStatus("0" ); - conSaleImportVo.setNotes("约定回款日期格式错误,正确格式:yyyy/M/d" ); - return; - } - - - //实际回款日期 - String actualPaymentDate = conSaleImportVo.getActualPaymentDate(); - if (org.apache.commons.lang3.StringUtils.isBlank(actualPaymentDate)) { - - }else { - try { - Date date = sdf.parse(actualPaymentDate); - conSaleCollectBo.setArrivalTime(date); - } catch (ParseException e) { - conSaleImportVo.setStatus("0"); - conSaleImportVo.setNotes("约定回款日期格式错误,正确格式:yyyy/M/d"); - return; - } - } - conSaleCollectBoList.add(conSaleCollectBo); - size++; - } +// for (ConSaleImportNewDto conSaleImportVo : salesList) { +// ConSaleCollectBo conSaleCollectBo = new ConSaleCollectBo(); +// conSaleCollectBo.setTransactionsNumber("第" + size + "笔" ); +// //每笔订单金额 +// String orderAmountPerTransaction = conSaleImportVo.getOrderAmountPerTransaction(); +// if (org.apache.commons.lang3.StringUtils.isBlank(orderAmountPerTransaction)) { +// +// }else { +// if(orderAmountPerTransaction.equals("#VALUE!")){ +// orderAmountPerTransaction = "0"; +// } +// +// orderAmountPerTransaction = orderAmountPerTransaction.replace("¥","").replaceAll(",",""); +// try { +// double value = Double.parseDouble(orderAmountPerTransaction); +//// conSaleCollectBo.setActualArrivalMoney(value); +// conSaleCollectBo.setConventionArrivalMoney(value); +// } catch (Exception ex) { +// conSaleImportVo.setStatus("0" ); +// conSaleImportVo.setNotes("每笔订单金额填写错误" ); +// return; +// } +// } +// +// +// //约定回款日期 +// String agreedPaymentDate = conSaleImportVo.getAgreedPaymentDate(); +// if (org.apache.commons.lang3.StringUtils.isBlank(agreedPaymentDate)) { +// conSaleImportVo.setStatus("0" ); +// conSaleImportVo.setNotes("约定回款日期未填写" ); +// return; +// } +// try { +// Date date = sdf.parse(agreedPaymentDate); +// conSaleCollectBo.setPayTime(date); +// } catch (ParseException e) { +// conSaleImportVo.setStatus("0" ); +// conSaleImportVo.setNotes("约定回款日期格式错误,正确格式:yyyy/M/d" ); +// return; +// } +// +// +// //实际回款日期 +// String actualPaymentDate = conSaleImportVo.getActualPaymentDate(); +// if (org.apache.commons.lang3.StringUtils.isBlank(actualPaymentDate)) { +// +// }else { +// try { +// Date date = sdf.parse(actualPaymentDate); +// conSaleCollectBo.setArrivalTime(date); +// } catch (ParseException e) { +// conSaleImportVo.setStatus("0"); +// conSaleImportVo.setNotes("约定回款日期格式错误,正确格式:yyyy/M/d"); +// return; +// } +// } +// conSaleCollectBoList.add(conSaleCollectBo); +// size++; +// } conSaleBo.setConSaleCollectBoList(conSaleCollectBoList); conSaleBoList.add(conSaleBo); @@ -781,7 +799,7 @@ public class ConSaleController extends BaseController { AtomicBoolean flag = new AtomicBoolean(true); conSaleImportMap.forEach((projectCodeKey, salesList) -> { - for (ConSaleImportVo conSaleImportVo : salesList) { + for (ConSaleImportNewDto conSaleImportVo : salesList) { if (BigDecimal.ZERO.toString().equals(conSaleImportVo.getStatus())){ flag.set(false); failList.add(conSaleImportVo); diff --git a/ruoyi-system/src/main/java/com/ruoyi/contract/domain/dto/ConSaleImportNewDto.java b/ruoyi-system/src/main/java/com/ruoyi/contract/domain/dto/ConSaleImportNewDto.java new file mode 100644 index 0000000..ee5ad85 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/contract/domain/dto/ConSaleImportNewDto.java @@ -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; +}