Contract-Manage/ruoyi-system/src/main/java/com/ruoyi/contract/controller/ConSaleController.java
2025-11-19 14:52:57 +08:00

823 lines
36 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.ruoyi.contract.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.PageQuery;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditExpendGroup;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.exception.ServiceException;
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.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.*;
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;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.stream.Collectors;
/**
* 销售合同信息
*
* @author jiangjuneli
* @date 2024-06-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/contract/sale" )
public class ConSaleController extends BaseController {
private final IConSaleService iConSaleService;
private final IConMediaDeptService iConMediaDeptService;
private final IConClientService iConClientService;
private final IConCityService iConCityService;
private final IConFirstService iConFirstService;
private final IConMediaTypeService iConMediaTypeService;
/**
* 查询销售合同信息列表
*/
// @SaCheckPermission("contract:sale:list")
@GetMapping("/list" )
public TableDataInfo<ConSaleVo> list(ConSaleBoExtend bo, PageQuery pageQuery) {
return iConSaleService.queryPageList(bo, pageQuery);
}
/**
* 获取销售合同信息详细信息
*
* @param id 主键
*/
// @SaCheckPermission("contract:sale:query")
@GetMapping("/{id}" )
public R<ConSaleVo> getInfo(@NotNull(message = "主键不能为空" )
@PathVariable Long id) {
return R.ok(iConSaleService.queryById(id));
}
/**
* 新增销售合同信息
*/
// @SaCheckPermission("contract:sale:add")
@Log(title = "销售合同信息", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Void> add(@Validated(AddGroup.class) @RequestBody ConSaleBoCopy boCopy) {
ConSaleBo bo = BeanUtil.toBean(boCopy, ConSaleBo.class);
if (CollUtil.isNotEmpty(boCopy.getConSaleCollectBoList())) {
//回款
List<ConSaleCollectBo> conSaleCollectBoList = boCopy.getConSaleCollectBoList().stream().map(item -> {
ConSaleCollectBo conSaleCollectBo = BeanUtil.toBean(item, ConSaleCollectBo.class);
return conSaleCollectBo;
}).collect(Collectors.toList());
bo.setConSaleCollectBoList(conSaleCollectBoList);
}
if (CollUtil.isNotEmpty(boCopy.getConSaleMediaBoList())) {
List<ConSaleMediaBo> collect = boCopy.getConSaleMediaBoList().stream().map(item -> {
ConSaleMediaBo conSaleMediaBo = BeanUtil.toBean(item, ConSaleMediaBo.class);
return conSaleMediaBo;
}).collect(Collectors.toList());
bo.setConSaleMediaBoList(collect);
}
return toAjax(iConSaleService.insertByBo(bo));
}
/**
* 修改销售合同信息
*/
// @SaCheckPermission("contract:sale:edit")
@Log(title = "销售合同信息", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditExpendGroup.class) @RequestBody ConSaleBo bo) throws IllegalAccessException {
return toAjax(iConSaleService.updateByBo(bo));
}
/**
* 废除销售合同信息
*/
// @SaCheckPermission("contract:sale:edit")
@Log(title = "销售合同废除", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@GetMapping("/editAblish/{id}" )
public R<Void> editAbolish(@NotNull(message = "主键不能为空" )
@PathVariable Long id) {
return toAjax(iConSaleService.updateAblish(id));
}
/**
* 恢复销售合同信息
*/
// @SaCheckPermission("contract:sale:edit")
@Log(title = "销售合同废除", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@GetMapping("/editRenew/{id}" )
public R<Void> editRenew(@NotNull(message = "主键不能为空" )
@PathVariable Long id) {
return toAjax(iConSaleService.updateRenew(id));
}
/**
* 删除销售合同信息
*
* @param ids 主键串
*/
// @SaCheckPermission("contract:sale:remove")
@Log(title = "销售合同信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}" )
public R<Void> remove(@NotEmpty(message = "主键不能为空" )
@PathVariable Long[] ids) {
return toAjax(iConSaleService.deleteWithValidByIds(Arrays.asList(ids), true));
}
/**
* 动态列表导出其他合同信息列表
*/
// @SaCheckPermission("contract:other:export")
@Log(title = "其他合同信息", businessType = BusinessType.EXPORT)
@PostMapping("/dynamicexport" )
public void dynamicexport(@RequestBody ConSaleExcelSearch map, HttpServletResponse response) {
String fieldName = map.getFieldName();
String mediaFieldName = "";
String collectFieldName = "";
if (StringUtils.isNotBlank(fieldName)) {
mediaFieldName = map.getMediaFieldName();
collectFieldName = map.getCollectFieldName();
} else {
throw new ServiceException("主表字段属性不可不填写" );
}
String ids = map.getIds();
if (StringUtils.isNotBlank(ids)) {
String[] split = ids.split("," );
List<String> collect = new ArrayList<>(Arrays.asList(split))
.stream()
.filter(ObjectUtil::isNotNull)
.collect(Collectors.toList());
ids = String.join(",", collect);
}
iConSaleService.dynamicexportUpgrade(fieldName, mediaFieldName, collectFieldName, ids, response);
}
/**
* 获取列表汇总数据
*/
// @SaCheckPermission("contract:sale:list")
@Log(title = "销售汇总", businessType = BusinessType.EXPORT)
@PostMapping("/getSaleTatol" )
public R<ConSaleTotalVo> getSaleTatol(@RequestBody ConSaleBoExtend conSaleBoExtend) {
return R.ok(iConSaleService.getSaleTatol(conSaleBoExtend));
}
@Log(title = "销售汇总导入", businessType = BusinessType.IMPORT)
@PostMapping("/import" )
public R<List<ConSaleImportVo>> importExcel(MultipartFile file) {
// 获取上传的文件输入流
try (InputStream inputStream = file.getInputStream()) {
// 使用 EasyExcel 解析 Excel 文件,并将数据转换为 ExcelRowData 实体类对象
List<ConSaleImportVo> data = EasyExcel.read(inputStream)
.head(ConSaleImportVo.class) // 指定 Excel 对应的实体类
.sheet(0) // 指定解析第一个 sheet
.doReadSync(); // 同步读取文件
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M/d" );
List<ConSaleImportVo> filteredData = data.stream()
.filter(conSaleImportVo -> conSaleImportVo.getOrderCode() != null)
.collect(Collectors.toList());
if (CollUtil.isEmpty(filteredData)){
return R.fail("导入没有数据");
}
//处理排序问题
List<String> orderCodeList = new ArrayList<>();
filteredData.stream().forEach(item -> {
if (!orderCodeList.contains(item.getOrderCode())){
orderCodeList.add(item.getOrderCode());
}
});
//之后将顺序翻转过来
Map<String, List<ConSaleImportVo>> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportVo::getOrderCode));
List<ConSaleImportVo> failList= new ArrayList<>();
//数据合并
List<ConSaleBo> conSaleBoList = new ArrayList<>();
orderCodeList.forEach(item -> {
String projectCodeKey = item;
List<ConSaleImportVo> salesList = conSaleImportMap.get(projectCodeKey);
if (CollectionUtils.isEmpty(salesList)) {
return;
}
ConSaleImportVo datum = salesList.get(0);
datum.setStatus("1" );
ConSaleBo conSaleBo = new ConSaleBo();
String projectExecutor = datum.getProjectExecutor();
if (org.apache.commons.lang3.StringUtils.isBlank(projectExecutor)) {
datum.setStatus("0" );
datum.setNotes("项目执行人未填写" );
return;
}
//项目执行人
conSaleBo.setProjExecutor(projectExecutor);
String department = datum.getDepartment();
if (org.apache.commons.lang3.StringUtils.isBlank(department)) {
}else {
ConMediaDeptBo conMediaDeptBo = new ConMediaDeptBo();
conMediaDeptBo.setMediaDeptName(department);
List<ConMediaDeptVo> conMediaDeptVos = iConMediaDeptService.queryList(conMediaDeptBo);
if (CollectionUtils.isEmpty(conMediaDeptVos)) {
datum.setStatus("0" );
datum.setNotes("未查到部门信息" );
return;
}
ConMediaDeptVo conMediaDeptVo = conMediaDeptVos.get(0);
//部门
conSaleBo.setMediaDeptName(conMediaDeptVo.getMediaDeptName());
conSaleBo.setMediaDeptId(conMediaDeptVo.getId());
}
//项目编号
String projectCode = datum.getProjectCode();
if (org.apache.commons.lang3.StringUtils.isBlank(projectCode)) {
datum.setStatus("0" );
datum.setNotes("项目编号未填写" );
return;
}
conSaleBo.setContractNumber(projectCode);
//订单编号
String orderCode = datum.getOrderCode();
if (org.apache.commons.lang3.StringUtils.isBlank(orderCode)) {
datum.setStatus("0" );
datum.setNotes("订单编号未填写" );
return;
}
conSaleBo.setProjNumber(orderCode);
//项目名称
String projectName = datum.getProjectName();
if (org.apache.commons.lang3.StringUtils.isBlank(projectName)) {
datum.setStatus("0" );
datum.setNotes("项目名称未填写" );
return;
}
conSaleBo.setProjName(projectName);
//客户名称
String clientName = datum.getClientName();
if (org.apache.commons.lang3.StringUtils.isBlank(clientName)) {
datum.setStatus("0" );
datum.setNotes("客户名称未填写" );
return;
}
ConClientBo conClientBo = new ConClientBo();
conClientBo.setClientName(clientName);
List<ConClientVo> conClientVoList = iConClientService.queryList(conClientBo);
if (CollectionUtils.isEmpty(conClientVoList)) {
datum.setStatus("0" );
datum.setNotes("未查到客户名称" );
return;
}
ConClientVo conClientVo = conClientVoList.get(0);
conSaleBo.setClientId(conClientVo.getId());
conSaleBo.setClientName(conClientVo.getClientName());
//合同签订日期
String contractSignDate = datum.getContractSignDate();
if (org.apache.commons.lang3.StringUtils.isBlank(contractSignDate)) {
datum.setStatus("0" );
datum.setNotes("合同签订日期未填写" );
return;
}
try {
Date date = sdf.parse(contractSignDate);
conSaleBo.setSignTime(date);
} catch (ParseException e) {
datum.setStatus("0" );
datum.setNotes("合同签订日期格式错误,正确格式yyyy/M/d" );
return;
}
//实际开票日期
String actualInvoiceDate = datum.getActualInvoiceDate();
if (org.apache.commons.lang3.StringUtils.isBlank(actualInvoiceDate)) {
}else {
try {
Date date = sdf.parse(actualInvoiceDate);
conSaleBo.setBillingTime(date);
} catch (ParseException e) {
datum.setStatus("0" );
datum.setNotes("实际开票日期格式错误,正确格式yyyy/M/d" );
return;
}
}
//补充说明
// String additionalNotes = datum.getAdditionalNotes();
// if (org.apache.commons.lang3.StringUtils.isBlank(additionalNotes)) {
// datum.setStatus("0" );
// datum.setNotes("补充说明未填写" );
// return;
// }
// conSaleBo.setSupple(additionalNotes);
//甲方
String partyA = datum.getPartyA();
if (org.apache.commons.lang3.StringUtils.isBlank(partyA)) {
datum.setStatus("0" );
datum.setNotes("甲方未填写" );
return;
}
ConFirstBo conFirstBo = new ConFirstBo();
conFirstBo.setFirstName(partyA);
List<ConFirstVo> conFirstVoList = iConFirstService.queryList(conFirstBo);
if (CollectionUtils.isEmpty(conFirstVoList)) {
datum.setStatus("0" );
datum.setNotes("未查到甲方信息" );
return;
}
ConFirstVo conFirstVo = conFirstVoList.get(0);
conSaleBo.setFirstId(conFirstVo.getId());
conSaleBo.setFirstName(conFirstVo.getFirstName());
//乙方
String partyB = datum.getPartyB();
if (org.apache.commons.lang3.StringUtils.isBlank(partyB)) {
datum.setStatus("0" );
datum.setNotes("乙方未填写" );
return;
}
conSaleBo.setSecondName(partyB);
List<ConSaleMediaBo> conSaleMediaBoList = new ArrayList<>();
for (ConSaleImportVo conSaleImportVo : salesList) {
conSaleImportVo.setStatus("1" );
ConSaleMediaBo conSaleMediaBo = new ConSaleMediaBo();
//城市
String city = conSaleImportVo.getCity();
if (org.apache.commons.lang3.StringUtils.isBlank(city)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("城市未填写" );
return;
}
ConCityBo conCityBo = new ConCityBo();
conCityBo.setCityName(city+",全城");
ConCityVo conCityVos = iConCityService.queryOneByWholeName(conCityBo);
if (ObjectUtil.isNull(conCityVos)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("未查到城市" );
return;
}
ConCityVo conCityVo = conCityVos;
conSaleMediaBo.setCityId(conCityVo.getId());
conSaleMediaBo.setCityName(conCityVo.getCityName());
//赋予数组值
String s = iConCityService.selectTreeIds(conCityVo.getId());
conSaleMediaBo.setCityIds(s);
//上刊时间
String publishStartDate = conSaleImportVo.getPublishStartDate();
if (org.apache.commons.lang3.StringUtils.isBlank(publishStartDate)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("上刊时间未填写" );
return;
}
try {
Date date = sdf.parse(publishStartDate);
conSaleMediaBo.setUpTime(date);
} catch (ParseException e) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("上刊时间格式错误,正确格式yyyy/M/d" );
return;
}
//下刊时间
String publishEndDate = conSaleImportVo.getPublishEndDate();
if (org.apache.commons.lang3.StringUtils.isBlank(publishEndDate)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("下刊时间未填写" );
return;
}
try {
Date date = sdf.parse(publishEndDate);
conSaleMediaBo.setDownTime(date);
} catch (ParseException e) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("下刊时间格式错误,正确格式yyyy/M/d" );
return;
}
//媒体类型
String mediaType = conSaleImportVo.getMediaType();
if (org.apache.commons.lang3.StringUtils.isBlank(mediaType)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("媒体类型未填写" );
return;
}
ConMediaTypeBo conMediaTypeBo = new ConMediaTypeBo();
conMediaTypeBo.setMediaType(mediaType);
List<ConMediaTypeVo> conMediaTypeVos = iConMediaTypeService.queryList(conMediaTypeBo);
if (CollectionUtils.isEmpty(conMediaTypeVos)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("未查到媒体类型" );
return;
}
ConMediaTypeVo conMediaTypeVo = conMediaTypeVos.get(0);
conSaleMediaBo.setMediaId(conMediaTypeVo.getId());
conSaleMediaBo.setMediaName(conMediaTypeVo.getMediaType());
//媒体位置
String mediaPosition = conSaleImportVo.getMediaPosition();
if (org.apache.commons.lang3.StringUtils.isBlank(mediaPosition)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("媒体位置未填写" );
return;
}
conSaleMediaBo.setMediaPosition(mediaPosition);
//数量
String quantity = conSaleImportVo.getQuantity();
if (org.apache.commons.lang3.StringUtils.isBlank(quantity)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("数量未填写" );
return;
}
if(quantity.equals("#VALUE!")){
quantity = "0";
}
quantity = quantity.replaceAll(",","");
try {
// double value = Double.parseDouble(quantity);
// conSaleMediaBo.setAccountNumber(value);
conSaleMediaBo.setAccountNumber(MathCompute.formatFourStringToDouble(quantity));
} catch (Exception ex) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("数量填写错误" );
return;
}
//频次
String frequency = conSaleImportVo.getFrequency();
if (org.apache.commons.lang3.StringUtils.isBlank(frequency)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("频次未填写" );
return;
}
conSaleMediaBo.setReleaseFrequency(frequency);
//刊例价
String listPrice = conSaleImportVo.getListPrice();
if (org.apache.commons.lang3.StringUtils.isBlank(listPrice)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("刊例价未填写" );
return;
}
if(listPrice.equals("#VALUE!")){
listPrice = "0";
}
listPrice = listPrice.replaceAll(",","");
try {
// double value = Double.parseDouble(listPrice);
// conSaleMediaBo.setPrintPrice(value);
conSaleMediaBo.setPrintPrice(MathCompute.formatFourStringToDouble(listPrice));
} catch (Exception ex) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("刊例价填写错误" );
return;
}
//刊例单位
String listPriceUnit = conSaleImportVo.getListPriceUnit();
if (org.apache.commons.lang3.StringUtils.isBlank(listPriceUnit)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("刊例单位未填写" );
return;
}
conSaleMediaBo.setPrintPriceUnit(listPriceUnit);
//折扣
String discount = conSaleImportVo.getDiscount();
if (org.apache.commons.lang3.StringUtils.isBlank(discount)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("折扣未填写" );
return;
}
conSaleMediaBo.setDiscount(discount);
//媒体费
String mediaCost = conSaleImportVo.getMediaCost();
if (org.apache.commons.lang3.StringUtils.isBlank(mediaCost)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("媒体费未填写" );
return;
}
if(mediaCost.equals("#VALUE!")){
mediaCost = "0";
}
mediaCost = mediaCost.replaceAll(",","");
try {
// double value = Double.parseDouble(mediaCost);
// conSaleMediaBo.setMediaFee(value);
conSaleMediaBo.setMediaFee(MathCompute.formatFourStringToDouble(mediaCost));
} catch (Exception ex) {
conSaleMediaBo.setMediaFee(0.0);
}
//制作费
String productionCost = conSaleImportVo.getProductionCost();
if (org.apache.commons.lang3.StringUtils.isBlank(productionCost)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("制作费未填写" );
return;
}
if(productionCost.equals("#VALUE!")){
productionCost = "0";
}
productionCost = productionCost.replaceAll(",","");
try {
// double value = Double.parseDouble(productionCost);
// conSaleMediaBo.setProductFee(value);
conSaleMediaBo.setProductFee(MathCompute.formatFourStringToDouble(productionCost));
} catch (Exception ex) {
conSaleMediaBo.setProductFee(0.0);
}
//是否比稿
String isBid = conSaleImportVo.getIsBid();
if (org.apache.commons.lang3.StringUtils.isBlank(isBid)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("是否比稿未填写" );
return;
}
if ("".equals(isBid)) {
conSaleMediaBo.setCompet("1" );
} else {
conSaleMediaBo.setCompet("2" );
}
//比稿返点
String bidRebate = conSaleImportVo.getBidRebate();
if (org.apache.commons.lang3.StringUtils.isBlank(bidRebate)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("比稿返点未填写" );
return;
}
conSaleMediaBo.setCompetReverPoit(bidRebate);
//比稿金额
String bidAmount = conSaleImportVo.getBidAmount();
if (org.apache.commons.lang3.StringUtils.isBlank(bidAmount)) {
conSaleImportVo.setStatus("0" );
conSaleImportVo.setNotes("比稿金额未填写" );
return;
}
if(bidAmount.equals("#VALUE!")){
bidAmount = "0";
}
bidAmount = bidAmount.replace("","").replaceAll(",","");;
try {
// double value = Double.parseDouble(bidAmount);
// conSaleMediaBo.setCompetReverMoney(value);
conSaleMediaBo.setCompetReverMoney(MathCompute.formatFourStringToDouble(bidAmount));
} catch (Exception ex) {
conSaleImportVo.setStatus("0" );
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;
}
String ykToQunYiRebateRateReplace = ykToQunYiRebateRate.replace("%", "" );
String ykToYYXRebateRateReplace = ykToYYXRebateRate.replace("%", "" );
//其他返点
double otherRebates = 0;
//其他返点金额
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;
}
//补充说明 其实是媒体信息中的备注
String additionalNotes = conSaleImportVo.getAdditionalNotes();
conSaleMediaBo.setRemark(additionalNotes);
// conSaleMediaBo.setOtherReverPoit(String.valueOf(otherRebates).concat("%" ));
// conSaleMediaBo.setOtherReverMoney(otherRebateAmounts);
conSaleMediaBo.setOtherReverPoit(String.valueOf(MathCompute.formatFourDoubleToDouble(otherRebates)).concat("%" ));
conSaleMediaBo.setOtherReverMoney(MathCompute.formatFourDoubleToDouble(otherRebateAmounts));
conSaleMediaBoList.add(conSaleMediaBo);
}
conSaleBo.setConSaleMediaBoList(conSaleMediaBoList);
List<ConSaleCollectBo> 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++;
}
conSaleBo.setConSaleCollectBoList(conSaleCollectBoList);
conSaleBoList.add(conSaleBo);
});
AtomicBoolean flag = new AtomicBoolean(true);
conSaleImportMap.forEach((projectCodeKey, salesList) -> {
for (ConSaleImportVo conSaleImportVo : salesList) {
if (BigDecimal.ZERO.toString().equals(conSaleImportVo.getStatus())){
flag.set(false);
failList.add(conSaleImportVo);
}
}
});
if(flag.get()){
for (ConSaleBo conSaleBo : conSaleBoList) {
conSaleBo.setState("1");
iConSaleService.insertByBo(conSaleBo);
}
return R.ok();
}else{
return R.fail(failList);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 销售合同导入
* @param file
* @return
*/
@Log(title = "销售合同导入", businessType = BusinessType.IMPORT)
@PostMapping("/importData")
public R<Integer> importData(MultipartFile file) {
try {
return R.ok(iConSaleService.importData(file));
} catch (Exception e) {
return R.fail("导入失败");
}
}
}