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 list(ConSaleBoExtend bo, PageQuery pageQuery) { return iConSaleService.queryPageList(bo, pageQuery); } /** * 获取销售合同信息详细信息 * * @param id 主键 */ // @SaCheckPermission("contract:sale:query") @GetMapping("/{id}" ) public R 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 add(@Validated(AddGroup.class) @RequestBody ConSaleBoCopy boCopy) { ConSaleBo bo = BeanUtil.toBean(boCopy, ConSaleBo.class); if (CollUtil.isNotEmpty(boCopy.getConSaleCollectBoList())) { //回款 List 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 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 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 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 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 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 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 getSaleTatol(@RequestBody ConSaleBoExtend conSaleBoExtend) { return R.ok(iConSaleService.getSaleTatol(conSaleBoExtend)); } @Log(title = "销售汇总导入", businessType = BusinessType.IMPORT) @PostMapping("/import" ) 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" ); List filteredData = data.stream() .filter(conSaleImportVo -> conSaleImportVo.getOrderCode() != null) .collect(Collectors.toList()); if (CollUtil.isEmpty(filteredData)){ return R.fail("导入没有数据"); } //处理排序问题 List orderCodeList = new ArrayList<>(); filteredData.stream().forEach(item -> { if (!orderCodeList.contains(item.getOrderCode())){ orderCodeList.add(item.getOrderCode()); } }); //之后将顺序翻转过来 Map> conSaleImportMap = filteredData.stream().collect(Collectors.groupingBy(ConSaleImportVo::getOrderCode)); List failList= new ArrayList<>(); //数据合并 List conSaleBoList = new ArrayList<>(); orderCodeList.forEach(item -> { String projectCodeKey = item; List 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 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 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 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 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 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 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 importData(MultipartFile file) { try { return R.ok(iConSaleService.importData(file)); } catch (Exception e) { return R.fail("导入失败"); } } }