提交 ec03ed85 作者: panda 提交者: 余乾开

招标快讯相关接口

上级 4aecbd69
......@@ -23,8 +23,8 @@ public class TenderApplyDTO implements Serializable {
private Integer id;
@ApiModelProperty(value = "招标快讯编号")
private String tenderInfoNo;
@ApiModelProperty(value = "招标快讯内容")
private String tenderContent;
@ApiModelProperty(value = "招标快讯标题")
private String tenderTitle;
// @ApiModelProperty(value = "用户id")
// private Integer userAccountId;
// @ApiModelProperty(value = "招标快讯id")
......
......@@ -26,6 +26,8 @@ public class TenderInfoDTO implements Serializable {
private Integer tenderNewsId;
@ApiModelProperty(value = "招标快讯内容序号")
private String tenderInfoNo;
@ApiModelProperty(value = "招标快讯标题")
private String tenderTitle;
@ApiModelProperty(value = "招标快讯内容")
private String tenderContent;
@ApiModelProperty(value = "价格")
......
package com.mmc.csf.infomation.vo;
import com.mmc.csf.release.model.group.Create;
import com.mmc.csf.release.model.group.Freeze;
import com.mmc.csf.release.model.group.Page;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TenderApplyQO implements Serializable {
private static final long serialVersionUID = -5519324350926972959L;
@ApiModelProperty(value = "招标id")
private Integer tenderNewsId;
@ApiModelProperty(value = "招标详情id")
private Integer tenderInfoId;
@ApiModelProperty(value = "用户名",example = "用户名")
private String userName;
@ApiModelProperty(value = "页码")
@NotNull(message = "页码不能为空", groups = { Page.class})
@Min(value = 1, groups = Page.class,message = "pageNo不能少于1")
private Integer pageNo;
@ApiModelProperty(value = "每页显示数")
@NotNull(message = "每页显示数不能为空", groups = { Page.class})
@Min(value = 1, groups = Page.class,message = "pageSize不能少于1")
private Integer pageSize;
}
package com.mmc.csf.infomation.vo;
import com.mmc.csf.release.model.group.Update;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Null;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TenderInfoVO implements Serializable {
private static final long serialVersionUID = -8188835029420792396L;
@NotNull(message = "修改时id不能为空",groups = Update.class)
private Integer id;
@ApiModelProperty(value = "招标快讯标题")
@Length(message = "修改标题不能超过64字符",max = 64,groups = Update.class)
@NotBlank(message = "修改时标题不能为空",groups = Update.class)
private String tenderTitle;
@ApiModelProperty(value = "价格")
private BigDecimal tenderPrice;
@ApiModelProperty(value = "招标快讯内容")
private String tenderContent;
}
......@@ -11,11 +11,14 @@ import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* @author MMC_hzj
* author:zhenjie
* Date:2022/5/21
* time:16:17
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "com.mmc.csf.sharefly.vo.TenderNewsVO", description = "招标快讯内容参数")
public class TenderNewsVO implements Serializable {
private static final long serialVersionUID = -8188835029420792396L;
@ApiModelProperty(value = "id")
......
......@@ -351,7 +351,7 @@ public enum ResultEnum implements BaseErrorInfoInterface {
FILE_PARSE_ERROR("40600", "上传文件无数据或内容识别失败,请重新上传"),
HAS_BEEN_APPLY_ERROR("40601", "已提交申请!将有客服人员与你联系"),
PRICE_TO_HIGH_ERROR("40602", "标价确认在0-10000000万元内"),
PRICE_TO_HIGH_ERROR("40602", "标价确认在0-10000000万元内"),
EXIST_SAME_NAME_ERROR("40603", "快讯名称重复,请重新上传"),
TENDER_FORMAT_ERROR("40604", "招标序号或内容不能为空,请补全后上传"),
TENDER_CONTENT_TOO_LONG_ERROR("40605", "存在招标内容字符过长"),
......
......@@ -2,7 +2,8 @@ package com.mmc.csf.release.controller;
import com.mmc.csf.common.util.group.Create;
import com.mmc.csf.common.util.group.Page;
import com.mmc.csf.common.util.group.Update;
import com.mmc.csf.infomation.vo.TenderApplyQO;
import com.mmc.csf.release.model.group.Update;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.infomation.dto.AppTenderInfoDTO;
import com.mmc.csf.infomation.dto.TenderApplyDTO;
......@@ -10,12 +11,10 @@ import com.mmc.csf.infomation.dto.TenderInfoDTO;
import com.mmc.csf.infomation.dto.TenderNewsDTO;
import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.vo.TenderApplyVO;
import com.mmc.csf.infomation.vo.TenderInfoVO;
import com.mmc.csf.infomation.vo.TenderNewsVO;
import com.mmc.csf.release.service.TenderService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -23,7 +22,6 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.Date;
/**
......@@ -38,7 +36,7 @@ public class TenderController extends BaseController{
@Autowired
private TenderService tenderService;
@ApiOperation(value = "新增招标快讯", hidden = true)
@ApiOperation(value = "新增招标快讯")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping(value = "news")
public ResultBody addTenderNews(@RequestPart(value = "file") MultipartFile file,
......@@ -47,10 +45,10 @@ public class TenderController extends BaseController{
return tenderService.addTenderNews(file, tenderNewsVO);
}
@ApiOperation(value = "查询招标快讯列表-分页", hidden = true)
@ApiOperation(value = "查询招标快讯列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = TenderNewsDTO.class)})
@GetMapping(value = "news")
public ResultBody listTenderNews(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
public ResultBody<TenderNewsDTO> listTenderNews(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
@RequestParam(value = "tenderName", required = false) String tenderName,
@RequestParam(value = "startTime", required = false) Date startTime,
@RequestParam(value = "endTime", required = false) Date endTime,
......@@ -58,7 +56,7 @@ public class TenderController extends BaseController{
return tenderService.listTenderNews(pageNo, pageSize, tenderName, startTime, endTime, using);
}
@ApiOperation(value = "修改招标快讯列表", hidden = true)
@ApiOperation(value = "修改-招标快讯列表")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PutMapping(value = "news")
public ResultBody updateTenderNews(@RequestParam(value = "file", required = false) MultipartFile file,
......@@ -66,14 +64,14 @@ public class TenderController extends BaseController{
return tenderService.updateTenderNews(file, tenderNewsVO);
}
@ApiOperation(value = "删除查询招标快讯", hidden = true)
@ApiOperation(value = "删除招标快讯")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@DeleteMapping(value = "news/{id}")
public ResultBody removeTenderNews(@PathVariable("id") Integer id){
return tenderService.removeTenderNews(id);
}
@ApiOperation(value = "查询招标快讯详情列表-分页", hidden = true)
@ApiOperation(value = "查询-招标快讯详情列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = TenderInfoDTO.class)})
@GetMapping(value = "info")
public ResultBody listTenderInfo(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
......@@ -81,13 +79,11 @@ public class TenderController extends BaseController{
return tenderService.listTenderInfo(pageNo, pageSize, tenderNewsId);
}
@ApiOperation(value = "修改招标快讯详情", hidden = true)
@ApiOperation(value = "修改-招标快讯详情")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PutMapping(value = "info")
public ResultBody updateTenderInfo(@RequestParam(value = "id", required = true) Integer id,
@RequestParam(value = "tenderContent", required = true) String tenderContent,
@RequestParam(required = false)BigDecimal tenderPrice){
return tenderService.updateTenderInfo(id, tenderContent, tenderPrice);
public ResultBody updateTenderInfo(@Validated(value = Update.class) @RequestBody TenderInfoVO tenderInfoVO){
return tenderService.updateTenderInfo(tenderInfoVO);
}
@ApiOperation(value = "合作申请提交")
......@@ -98,16 +94,14 @@ public class TenderController extends BaseController{
return tenderService.addTenderApply(tenderApplyVO, request);
}
@ApiOperation(value = "用户反馈列表-分页", hidden = true)
@ApiOperation(value = "用户反馈列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = TenderApplyDTO.class)})
@GetMapping(value = "apply")
public ResultBody listTenderApply(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
@RequestParam Integer tenderNewsId, @RequestParam(required = false) Integer tenderInfoId,
@RequestParam(required = false) String keyword){
return tenderService.listTenderApply(pageNo, pageSize, tenderNewsId, tenderInfoId, keyword);
@PostMapping(value = "applyList")
public ResultBody listTenderApply(@RequestBody TenderApplyQO tenderApplyQO){
return tenderService.listTenderApply(tenderApplyQO);
}
@ApiOperation(value = "app往期招标快讯详情列表-分页", hidden = true)
@ApiOperation(value = "app往期招标快讯详情列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = AppTenderInfoDTO.class)})
@GetMapping(value = "info/app")
public ResultBody listTenderInfoApp(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
......@@ -115,7 +109,7 @@ public class TenderController extends BaseController{
return tenderService.listTenderInfoApp(pageNo, pageSize, tenderNewsId, userAccountId);
}
@ApiOperation(value = "app最新招标快讯详情列表-分页", hidden = true)
@ApiOperation(value = "app最新招标快讯详情列表-分页")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = AppTenderInfoDTO.class)})
@GetMapping(value = "info/app/latest")
public ResultBody listTenderInfoAppLatest(@RequestParam Integer pageNo, @RequestParam Integer pageSize,
......@@ -129,5 +123,4 @@ public class TenderController extends BaseController{
public ResultBody listNewTenderInfo(@Validated(value = {Page.class})@RequestBody IndustryCaseQO industryCaseQO, HttpServletRequest request){
return tenderService.listNewTenderInfo(industryCaseQO, this.getUserLoginInfoFromRedis(request), request);
}
}
......@@ -5,6 +5,7 @@ import com.mmc.csf.release.entity.TenderApplyDO;
import com.mmc.csf.release.entity.TenderInfoDO;
import com.mmc.csf.release.entity.TenderNewsDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.Date;
......@@ -35,7 +36,7 @@ public interface TenderDao {
List<TenderInfoDO> listTenderInfo(int itemIndex, Integer pageSize, Integer tenderNewsId);
void updateTenderInfo(Integer id, String tenderContent, BigDecimal tenderPrice);
void updateTenderInfo(@Param("id") Integer id, @Param("tenderTitle") String tenderTitle, @Param("tenderPrice") BigDecimal tenderPrice, @Param("tenderContent") String tenderContent);
TenderApplyDO getTenderApplyByUId(Integer userAccountId, Integer tenderInfoId);
......
......@@ -31,7 +31,7 @@ public class TenderApplyDO implements Serializable {
private Date updateTime;
private String tenderInfoNo;
private String tenderContent;
private String tenderTitle;
public TenderApplyDO(TenderApplyVO tenderApplyVO) {
this.userAccountId = tenderApplyVO.getUserAccountId();
......@@ -44,7 +44,6 @@ public class TenderApplyDO implements Serializable {
public TenderApplyDTO buildTenderApplyDTO(){
return TenderApplyDTO.builder().id(this.id).tenderInfoId(this.tenderInfoId).nickName(this.nickName).userName(this.userName).phoneNum(this.phoneNum)
.createTime(this.createTime).tenderInfoNo(this.tenderInfoNo).tenderContent(this.tenderContent).build();
.createTime(this.createTime).tenderInfoNo(this.tenderInfoNo).tenderTitle(this.tenderTitle).build();
}
}
......@@ -2,6 +2,7 @@ package com.mmc.csf.release.entity;
import com.mmc.csf.infomation.dto.AppTenderInfoDTO;
import com.mmc.csf.infomation.dto.TenderInfoDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
......@@ -23,6 +24,8 @@ public class TenderInfoDO implements Serializable {
private Integer id;
private Integer tenderNewsId;
private String tenderInfoNo;
private String tenderTitle;
@ApiModelProperty(value = "招标快讯内容")
private String tenderContent;
private BigDecimal tenderPrice;
private Integer deleted;
......@@ -30,12 +33,12 @@ public class TenderInfoDO implements Serializable {
private Date updateTime;
public TenderInfoDTO buildTenderInfoDTO(){
return TenderInfoDTO.builder().id(this.id).tenderNewsId(this.tenderNewsId).tenderInfoNo(this.tenderInfoNo).tenderContent(this.tenderContent)
.tenderPrice(this.tenderPrice).createTime(this.createTime).build();
return TenderInfoDTO.builder().id(this.id).tenderNewsId(this.tenderNewsId).tenderInfoNo(this.tenderInfoNo).tenderTitle(this.tenderTitle)
.tenderPrice(this.tenderPrice).createTime(this.createTime).tenderContent(this.tenderContent).build();
}
public AppTenderInfoDTO buildAppTenderInfoDTO(){
return AppTenderInfoDTO.builder().id(this.id).tenderNewsId(this.tenderNewsId).tenderInfoNo(this.tenderInfoNo).tenderContent(this.tenderContent)
return AppTenderInfoDTO.builder().id(this.id).tenderNewsId(this.tenderNewsId).tenderInfoNo(this.tenderInfoNo).tenderContent(this.tenderTitle)
.tenderPrice(this.tenderPrice).createTime(this.createTime).apply(0).build();
}
}
package com.mmc.csf.release.entity.tender;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* author:zhenjie
* Date:2022/5/23
* time:10:47
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ExcelTarget("ExcelTenderInfo")
public class ExcelTenderInfo implements Serializable {
private static final long serialVersionUID = -3213483141870899916L;
@Excel(name = "*序号", width = 25)
@NotNull
private String tenderInfoNo;
@Excel(name = "*内容", width = 25)
@NotNull
@Size(max = 64, message = "标题长度过长")
private String tenderTitle;
@Excel(name = "价格(万元)", width = 25)
private BigDecimal tenderPrice;
}
......@@ -2,11 +2,12 @@ package com.mmc.csf.release.service;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.vo.TenderApplyQO;
import com.mmc.csf.infomation.vo.TenderApplyVO;
import com.mmc.csf.infomation.vo.TenderInfoVO;
import com.mmc.csf.infomation.vo.TenderNewsVO;
import com.mmc.csf.release.auth.dto.LoginSuccessDTO;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.math.BigDecimal;
......@@ -28,11 +29,11 @@ public interface TenderService {
ResultBody listTenderInfo(Integer pageNo, Integer pageSize, Integer tenderNewsId);
ResultBody updateTenderInfo(Integer id, String tenderContent, BigDecimal tenderPrice);
ResultBody updateTenderInfo(TenderInfoVO tenderInfoVO);
ResultBody addTenderApply(TenderApplyVO tenderApplyVO, HttpServletRequest request);
ResultBody listTenderApply(Integer pageNo, Integer pageSize, Integer tenderNewsId, Integer tenderInfoId, String keyword);
ResultBody listTenderApply(TenderApplyQO param);
ResultBody listTenderInfoApp(Integer pageNo, Integer pageSize, Integer tenderNewsId, Integer userAccountId);
......
package com.mmc.csf.release.service.impl;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import com.mmc.csf.common.util.page.PageResult;
import com.mmc.csf.common.util.web.ResultBody;
import com.mmc.csf.common.util.web.ResultEnum;
import com.mmc.csf.infomation.dto.*;
import com.mmc.csf.infomation.qo.IndustryCaseQO;
import com.mmc.csf.infomation.vo.TenderApplyQO;
import com.mmc.csf.infomation.vo.TenderApplyVO;
import com.mmc.csf.infomation.vo.TenderInfoVO;
import com.mmc.csf.infomation.vo.TenderNewsVO;
import com.mmc.csf.release.auth.dto.LoginSuccessDTO;
import com.mmc.csf.release.constant.TokenConstant;
......@@ -13,9 +17,12 @@ import com.mmc.csf.release.dao.TenderDao;
import com.mmc.csf.release.entity.TenderApplyDO;
import com.mmc.csf.release.entity.TenderInfoDO;
import com.mmc.csf.release.entity.TenderNewsDO;
import com.mmc.csf.release.entity.tender.ExcelTenderInfo;
import com.mmc.csf.release.feign.UserAppApi;
import com.mmc.csf.release.service.TenderService;
import com.mmc.csf.release.util.MultipartFileUtil;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -23,6 +30,7 @@ import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
......@@ -45,25 +53,23 @@ public class TenderServiceImpl implements TenderService {
private UserAppApi userAppApi;
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
public ResultBody addTenderNews(MultipartFile file, TenderNewsVO tenderNewsVO) throws IOException {
TenderNewsDO tenderNewsDO = new TenderNewsDO(tenderNewsVO);
//检查快讯标题名称是否重复
int count = tenderDao.countExistSameName(tenderNewsVO.getId(), tenderNewsDO.getTenderName());
if(count > 0){
if (count > 0) {
return ResultBody.error(ResultEnum.EXIST_SAME_NAME_ERROR);
}
tenderDao.addTenderNewsDO(tenderNewsDO);
List<TenderInfoDO> tenderInfoDOList = new ArrayList<>();
List<TenderInfoDO> tenderInfoDOList;
ResultBody resultBody = listTenderInfo(file, tenderNewsDO);
if(resultBody.getCode().toString().equals("200")){
tenderInfoDOList = (List<TenderInfoDO>)resultBody.getResult();
}else {
if(!resultBody.getCode().equals("200")){
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return resultBody;
}
tenderInfoDOList = (List<TenderInfoDO>) resultBody.getResult();
tenderDao.batchAddTenderInfo(tenderInfoDOList);
return ResultBody.success();
}
......@@ -75,9 +81,7 @@ public class TenderServiceImpl implements TenderService {
}
int itemIndex = (pageNo - 1) * pageSize;
List<TenderNewsDO> list = tenderDao.listTenderNews(itemIndex, pageSize, tenderName, startTime, endTime, using);
List<TenderNewsDTO> pageList = list.stream().map(d -> {
return d.buildTenderNewsDTO();
}).collect(Collectors.toList());
List<TenderNewsDTO> pageList = list.stream().map(TenderNewsDO::buildTenderNewsDTO).collect(Collectors.toList());
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count, pageList));
}
......@@ -87,18 +91,18 @@ public class TenderServiceImpl implements TenderService {
TenderNewsDO tenderNewsDO = new TenderNewsDO(tenderNewsVO);
//检查快讯标题名称是否重复
int count = tenderDao.countExistSameName(tenderNewsVO.getId(), tenderNewsDO.getTenderName());
if(count > 0){
if (count > 0) {
return ResultBody.error(ResultEnum.EXIST_SAME_NAME_ERROR);
}
if(file != null && !file.isEmpty()){
if (file != null && !file.isEmpty()) {
//把之前的覆盖
//删除之前的
tenderDao.batchRemoveTenderInfo(tenderNewsVO.getId());
List<TenderInfoDO> tenderInfoDOList = new ArrayList<>();
List<TenderInfoDO> tenderInfoDOList;
ResultBody resultBody = listTenderInfo(file, tenderNewsDO);
if(resultBody.getCode().toString().equals("200")){
tenderInfoDOList = (List<TenderInfoDO>)resultBody.getResult();
}else {
if (resultBody.getCode().equals("200")) {
tenderInfoDOList = (List<TenderInfoDO>) resultBody.getResult();
} else {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return resultBody;
}
......@@ -109,60 +113,52 @@ public class TenderServiceImpl implements TenderService {
}
private ResultBody listTenderInfo(MultipartFile file, TenderNewsDO tenderNewsDO) throws IOException {
//TenderNewsDO tenderNewsDO = new TenderNewsDO(tenderNewsVO);
// ImportParams params = new ImportParams();
// params.setTitleRows(0);
// params.setHeadRows(1);
// File importFile = MultipartFileUtil.multipartFileToFile(file);
// List<ExcelTenderInfo> list = ExcelImportUtil.importExcel(importFile, ExcelTenderInfo.class, params);
// //删除必填项都为空的记录,有一个空的情况不去除,可以提醒用户重新上传
// list.removeIf(d-> d.getTenderContent() == null && d.getTenderInfoNo() == null);
// // 删除临时文件
// MultipartFileUtil.delteTempFile(importFile);
// //判断是否为空,空的话,要提醒
// if(list.isEmpty()){
// return ResultBody.error(ResultEnum.FILE_PARSE_ERROR);
// }
// //把之前的覆盖
// //删除之前的
// //tenderDao.batchRemoveTenderInfo(tenderNewsVO.getId());
// //添加
// List<TenderInfoDO> tenderInfoDOList = new ArrayList<>();
// for(ExcelTenderInfo tenderInfo : list){
// TenderInfoDO tenderInfoDO = new TenderInfoDO();
// tenderInfoDO.setTenderNewsId(tenderNewsDO.getId());
// //不能为空,
// if(tenderInfo.getTenderInfoNo() == null || tenderInfo.getTenderInfoNo().trim().isEmpty()){
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return ResultBody.error(ResultEnum.TENDER_FORMAT_ERROR);
// }else {
// tenderInfoDO.setTenderInfoNo(tenderInfo.getTenderInfoNo().trim());
// }
// //判断长度,不能为空,且长度在64之内
// if(tenderInfo.getTenderContent() == null || tenderInfo.getTenderContent().trim().isEmpty()){
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return ResultBody.error(ResultEnum.TENDER_FORMAT_ERROR);
// }else {
// if(tenderInfo.getTenderContent().trim().length() > 120){
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return ResultBody.error(ResultEnum.TENDER_CONTENT_TOO_LONG_ERROR);
// }
// tenderInfoDO.setTenderContent(tenderInfo.getTenderContent().trim());
// }
// //做判断
// BigDecimal beforeTenderPrice = BigDecimal.valueOf(10000000);
// BigDecimal afterTenderPrice = tenderInfo.getTenderPrice() == null ? BigDecimal.ZERO : tenderInfo.getTenderPrice();
// if( afterTenderPrice.compareTo(BigDecimal.ZERO) >= 0 && afterTenderPrice.compareTo(beforeTenderPrice) <= 0 ){
// tenderInfoDO.setTenderPrice(afterTenderPrice);
// }else {
// //抛出异常
// TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
// return ResultBody.error(ResultEnum.PRICE_TO_HIGH_ERROR);
// }
// tenderInfoDOList.add(tenderInfoDO);
// }
// return ResultBody.success(tenderInfoDOList);
return ResultBody.success();
ImportParams params = new ImportParams();
params.setTitleRows(0);
params.setHeadRows(1);
File importFile = MultipartFileUtil.multipartFileToFile(file);
List<ExcelTenderInfo> list = ExcelImportUtil.importExcel(importFile, ExcelTenderInfo.class, params);
//删除必填项都为空的记录,有一个空的情况不去除,可以提醒用户重新上传
list.removeIf(d -> d.getTenderTitle() == null && d.getTenderInfoNo() == null);
// 删除临时文件
MultipartFileUtil.delteTempFile(importFile);
//判断是否为空,空的话,要提醒
if (list.isEmpty()) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(ResultEnum.FILE_PARSE_ERROR);
}
//添加
List<TenderInfoDO> tenderInfoDOList = new ArrayList<>();
for (ExcelTenderInfo tenderInfo : list) {
TenderInfoDO tenderInfoDO = new TenderInfoDO();
tenderInfoDO.setTenderNewsId(tenderNewsDO.getId());
//序号不能为空
if (StringUtils.isBlank(tenderInfo.getTenderInfoNo())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(ResultEnum.TENDER_FORMAT_ERROR);
}
tenderInfoDO.setTenderInfoNo(tenderInfo.getTenderInfoNo().trim());
//内容判断长度,不能为空,且长度在64之内
if (StringUtils.isBlank(tenderInfo.getTenderTitle())) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(ResultEnum.TENDER_FORMAT_ERROR);
}
if (tenderInfo.getTenderTitle().trim().length() > 64) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(ResultEnum.TENDER_CONTENT_TOO_LONG_ERROR);
}
tenderInfoDO.setTenderTitle(tenderInfo.getTenderTitle().trim());
BigDecimal beforeTenderPrice = BigDecimal.valueOf(10000000);
BigDecimal afterTenderPrice = tenderInfo.getTenderPrice() == null ? BigDecimal.ZERO : tenderInfo.getTenderPrice();
// 标价请确认在0-10000000万元内
if (afterTenderPrice.compareTo(BigDecimal.ZERO) <= 0 || afterTenderPrice.compareTo(beforeTenderPrice) >= 0) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return ResultBody.error(ResultEnum.PRICE_TO_HIGH_ERROR);
}
tenderInfoDO.setTenderPrice(afterTenderPrice);
tenderInfoDOList.add(tenderInfoDO);
}
return ResultBody.success(tenderInfoDOList);
}
@Override
......@@ -179,15 +175,13 @@ public class TenderServiceImpl implements TenderService {
}
int itemIndex = (pageNo - 1) * pageSize;
List<TenderInfoDO> list = tenderDao.listTenderInfo(itemIndex, pageSize, tenderNewsId);
List<TenderInfoDTO> pageList = list.stream().map(d -> {
return d.buildTenderInfoDTO();
}).collect(Collectors.toList());
List<TenderInfoDTO> pageList = list.stream().map(TenderInfoDO::buildTenderInfoDTO).collect(Collectors.toList());
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count, pageList));
}
@Override
public ResultBody updateTenderInfo(Integer id, String tenderContent, BigDecimal tenderPrice) {
tenderDao.updateTenderInfo(id, tenderContent, tenderPrice);
public ResultBody updateTenderInfo(TenderInfoVO param) {
tenderDao.updateTenderInfo(param.getId(), param.getTenderTitle(), param.getTenderPrice(),param.getTenderContent());
return ResultBody.success();
}
......@@ -195,7 +189,7 @@ public class TenderServiceImpl implements TenderService {
public ResultBody addTenderApply(TenderApplyVO tenderApplyVO, HttpServletRequest request) {
//判断之前有没有申请
TenderApplyDO beforeTenderApplyDO = tenderDao.getTenderApplyByUId(tenderApplyVO.getUserAccountId(), tenderApplyVO.getTenderInfoId());
if(beforeTenderApplyDO != null){
if (beforeTenderApplyDO != null) {
return ResultBody.error(ResultEnum.HAS_BEEN_APPLY_ERROR);
}
UserAccountSimpleDTO userAccountSimpleDTO = userAppApi.feignGetUserSimpleInfo(tenderApplyVO.getUserAccountId(), request.getHeader(TokenConstant.TOKEN));
......@@ -208,16 +202,16 @@ public class TenderServiceImpl implements TenderService {
}
@Override
public ResultBody listTenderApply(Integer pageNo, Integer pageSize, Integer tenderNewsId, Integer tenderInfoId, String keyword) {
int count = tenderDao.countListTenderApply(tenderNewsId, tenderInfoId, keyword);
public ResultBody listTenderApply(TenderApplyQO param) {
Integer pageNo = param.getPageNo();
Integer pageSize = param.getPageSize();
int count = tenderDao.countListTenderApply(param.getTenderNewsId(), param.getTenderInfoId(), param.getUserName());
if (count == 0) {
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count));
}
int itemIndex = (pageNo - 1) * pageSize;
List<TenderApplyDO> list = tenderDao.listTenderApply(itemIndex, pageSize, tenderNewsId, tenderInfoId, keyword);
List<TenderApplyDTO> pageList = list.stream().map(d -> {
return d.buildTenderApplyDTO();
}).collect(Collectors.toList());
List<TenderApplyDO> list = tenderDao.listTenderApply(itemIndex, pageSize, param.getTenderNewsId(), param.getTenderInfoId(), param.getUserName());
List<TenderApplyDTO> pageList = list.stream().map(TenderApplyDO::buildTenderApplyDTO).collect(Collectors.toList());
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count, pageList));
}
......@@ -233,12 +227,12 @@ public class TenderServiceImpl implements TenderService {
return d.buildAppTenderInfoDTO();
}).collect(Collectors.toList());
List<TenderApplyDO> applyDOList = tenderDao.listAppTenderApply(tenderNewsId, userAccountId);
if(userAccountId == null){
if (userAccountId == null) {
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count, pageList));
}
for(AppTenderInfoDTO appTenderInfoDTO : pageList){
for(TenderApplyDO tenderApplyDO : applyDOList){
if(tenderApplyDO.getTenderInfoId().toString().equals(appTenderInfoDTO.getId().toString())){
for (AppTenderInfoDTO appTenderInfoDTO : pageList) {
for (TenderApplyDO tenderApplyDO : applyDOList) {
if (tenderApplyDO.getTenderInfoId().toString().equals(appTenderInfoDTO.getId().toString())) {
appTenderInfoDTO.setApply(1);
break;
}
......@@ -250,7 +244,7 @@ public class TenderServiceImpl implements TenderService {
@Override
public ResultBody listTenderInfoAppLatest(Integer pageNo, Integer pageSize, Integer userAccountId) {
TenderNewsDO tenderNewsDO = tenderDao.latestTenderNewsDO();
if( tenderNewsDO == null ){
if (tenderNewsDO == null) {
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, 0));
}
int count = tenderDao.countListTenderInfoApp(tenderNewsDO.getId());
......@@ -259,13 +253,13 @@ public class TenderServiceImpl implements TenderService {
List<AppTenderInfoDTO> pageList = list.stream().map(d -> {
return d.buildAppTenderInfoDTO();
}).collect(Collectors.toList());
if(userAccountId == null){
if (userAccountId == null) {
return ResultBody.success(PageResult.buildPage(pageNo, pageSize, count, pageList));
}
List<TenderApplyDO> applyDOList = tenderDao.listAppTenderApply(tenderNewsDO.getId(), userAccountId);
for(AppTenderInfoDTO appTenderInfoDTO : pageList){
for(TenderApplyDO tenderApplyDO : applyDOList){
if(tenderApplyDO.getTenderInfoId().toString().equals(appTenderInfoDTO.getId().toString())){
for (AppTenderInfoDTO appTenderInfoDTO : pageList) {
for (TenderApplyDO tenderApplyDO : applyDOList) {
if (tenderApplyDO.getTenderInfoId().toString().equals(appTenderInfoDTO.getId().toString())) {
appTenderInfoDTO.setApply(1);
break;
}
......@@ -278,8 +272,8 @@ public class TenderServiceImpl implements TenderService {
public ResultBody listNewTenderInfo(IndustryCaseQO industryCaseQO,
LoginSuccessDTO loginSuccessDTO, HttpServletRequest request) {
//查询对应地区的用户, 默认查广东
industryCaseQO.setProvinceCode(industryCaseQO.getProvinceCode() == null ? 440000 : industryCaseQO.getProvinceCode());
List<Integer> userIds = userAppApi.feignListUserAccountIds(industryCaseQO.getProvinceCode() , industryCaseQO.getCityCode(), industryCaseQO.getDistrictCode(), request.getHeader(TokenConstant.TOKEN));
industryCaseQO.setProvinceCode(industryCaseQO.getProvinceCode() == null ? 440000 : industryCaseQO.getProvinceCode());
List<Integer> userIds = userAppApi.feignListUserAccountIds(industryCaseQO.getProvinceCode(), industryCaseQO.getCityCode(), industryCaseQO.getDistrictCode(), request.getHeader(TokenConstant.TOKEN));
industryCaseQO.setUserIds(userIds);
int count = tenderDao.countNewListTenderInfo(industryCaseQO);
if (count == 0) {
......@@ -296,10 +290,10 @@ public class TenderServiceImpl implements TenderService {
//查出已申请过的并做标记
List<Integer> applyTenderInfoIds = tenderDao.listApplyTenderInfoIds(tenderInfoIds, loginSuccessDTO.getUserAccountId());
if (CollectionUtils.isNotEmpty(applyTenderInfoIds)) {
pageList.forEach(d->{
if(applyTenderInfoIds.contains(d.getId())){
pageList.forEach(d -> {
if (applyTenderInfoIds.contains(d.getId())) {
d.setApply(1);
}else {
} else {
d.setApply(0);
}
});
......
package com.mmc.csf.release.util;
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
/**
* @author 作者 geDuo
* @version 创建时间:2021年11月18日 下午5:40:56
* @explain 类说明
*/
public class MultipartFileUtil {
/**
* MultipartFile 转 File
*
* @param file
* @throws Exception
*/
public static File multipartFileToFile(MultipartFile file) throws IOException {
File toFile = null;
if (file.equals("") || file.getSize() <= 0) {
file = null;
} else {
InputStream ins = null;
ins = file.getInputStream();
toFile = new File(file.getOriginalFilename());
inputStreamToFile(ins, toFile);
ins.close();
}
return toFile;
}
// 获取流文件
private static void inputStreamToFile(InputStream ins, File file) {
try {
OutputStream os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
os.close();
ins.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除本地临时文件
*
* @param file
*/
public static void delteTempFile(File file) {
if (file != null) {
File del = new File(file.toURI());
del.delete();
}
}
}
......@@ -17,11 +17,12 @@
<id column="id" property="id"/>
<result column="tender_news_id" property="tenderNewsId"/>
<result column="tender_info_no" property="tenderInfoNo"/>
<result column="tender_content" property="tenderContent"/>
<result column="tender_title" property="tenderTitle"/>
<result column="tender_price" property="tenderPrice"/>
<result column="is_deleted" property="deleted"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="tender_content" property="tenderContent"/>
</resultMap>
<resultMap id="tenderApplyResultMap" type="com.mmc.csf.release.entity.TenderApplyDO">
......@@ -36,26 +37,26 @@
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
<result column="tender_info_no" property="tenderInfoNo"/>
<result column="tender_content" property="tenderContent"/>
<result column="tender_title" property="tenderTitle"/>
</resultMap>
<insert id="addTenderNewsDO" useGeneratedKeys="true"
keyProperty="id" parameterType="com.mmc.csf.release.entity.TenderNewsDO">
insert into tender_news(tender_name,is_using,port,create_time)
values(#{tenderName},#{using},#{port},NOW())
insert into tender_news(tender_name, is_using, port, create_time)
values (#{tenderName}, #{using}, #{port}, NOW())
</insert>
<insert id="batchAddTenderInfo" useGeneratedKeys="true"
<insert id="batchAddTenderInfo" useGeneratedKeys="true"
keyProperty="id" parameterType="com.mmc.csf.release.entity.TenderInfoDO">
insert into
tender_info(tender_news_id,tender_info_no,tender_content,tender_price,create_time)
tender_info(tender_news_id,tender_info_no,tender_title,tender_price,create_time)
values
<foreach item="item" index="index" collection="list"
separator=",">
(
#{item.tenderNewsId},
#{item.tenderInfoNo},
#{item.tenderContent},
#{item.tenderTitle},
#{item.tenderPrice},
NOW()
)
......@@ -63,12 +64,15 @@
</insert>
<insert id="addTenderApply" parameterType="com.mmc.csf.release.entity.TenderApplyDO">
insert into tender_apply(user_account_id, tender_news_id, tender_info_id, nick_name, user_name, phone_num, create_time)
values(#{userAccountId},#{tenderNewsId},#{tenderInfoId},#{nickName},#{userName},#{phoneNum},NOW());
insert into tender_apply(user_account_id, tender_news_id, tender_info_id, nick_name, user_name, phone_num,
create_time)
values (#{userAccountId}, #{tenderNewsId}, #{tenderInfoId}, #{nickName}, #{userName}, #{phoneNum}, NOW());
</insert>
<update id="batchRemoveTenderInfo">
update tender_info set is_deleted = 1 where tender_news_id = #{tenderNewsId}
update tender_info
set is_deleted = 1
where tender_news_id = #{tenderNewsId}
</update>
<update id="updateTenderNews" parameterType="com.mmc.csf.release.entity.TenderNewsDO">
......@@ -88,17 +92,22 @@
</update>
<update id="removeTenderNews">
update tender_news set is_deleted = 1 where id = #{id}
update tender_news
set is_deleted = 1
where id = #{id}
</update>
<update id="updateTenderInfo">
update tender_info
<set>
<if test=" tenderContent != null ">
tender_content = #{tenderContent},
<if test=" tenderTitle != null ">
tender_title = #{tenderTitle},
</if>
<if test=" tenderPrice != null ">
tender_price = #{tenderPrice}
tender_price = #{tenderPrice},
</if>
<if test="tenderContent!=null">
tender_content = #{tenderContent}
</if>
</set>
where id = #{id}
......@@ -141,12 +150,15 @@
</select>
<select id="countListTenderInfoApp" resultType="java.lang.Integer">
select count(*) from tender_info
where is_deleted = 0 and tender_news_id = #{tenderNewsId}
select count(*)
from tender_info
where is_deleted = 0
and tender_news_id = #{tenderNewsId}
</select>
<select id="listTenderInfoApp" resultMap="tenderInfoResultMap">
select id, tender_news_id, tender_price, tender_info_no, tender_content, is_deleted, create_time, update_time
select id, tender_news_id, tender_price, tender_info_no, tender_title, is_deleted, create_time,
update_time,tender_content
from tender_info
where is_deleted = 0
<if test=" tenderNewsId != null ">
......@@ -157,12 +169,15 @@
</select>
<select id="countListTenderInfo" resultType="java.lang.Integer">
select count(*) from tender_info
where is_deleted = 0 and tender_news_id = #{tenderNewsId}
select count(*)
from tender_info
where is_deleted = 0
and tender_news_id = #{tenderNewsId}
</select>
<select id="listTenderInfo" resultMap="tenderInfoResultMap">
select id, tender_news_id, tender_price, tender_info_no, tender_content, is_deleted, create_time, update_time
select id, tender_news_id, tender_price, tender_info_no, tender_title, is_deleted, create_time,
update_time,tender_content
from tender_info
where is_deleted = 0
<if test=" tenderNewsId != null ">
......@@ -173,17 +188,26 @@
</select>
<select id="getTenderApplyByUId" resultMap="tenderApplyResultMap">
select id, user_account_id, tender_news_id, tender_info_id, nick_name,
user_name, phone_num, is_deleted, create_time, update_time
select id,
user_account_id,
tender_news_id,
tender_info_id,
nick_name,
user_name,
phone_num,
is_deleted,
create_time,
update_time
from tender_apply
where user_account_id = #{userAccountId} and tender_info_id = #{tenderInfoId}
where user_account_id = #{userAccountId}
and tender_info_id = #{tenderInfoId}
</select>
<select id="countListTenderApply" resultType="java.lang.Integer">
SELECT
count(*)
count(*)
FROM
tender_apply ta left join tender_info ti on ta.tender_info_id = ti.id
tender_apply ta left join tender_info ti on ta.tender_info_id = ti.id
where ti.is_deleted = 0
<if test=" tenderNewsId != null ">
and ta.tender_news_id = #{tenderNewsId}
......@@ -198,20 +222,20 @@
<select id="listTenderApply" resultMap="tenderApplyResultMap">
SELECT
ta.id,
ti.tender_info_no,
ta.user_account_id,
ti.tender_content,
ta.tender_news_id,
ta.tender_info_id,
ta.nick_name,
ta.user_name,
ta.phone_num,
ta.is_deleted,
ta.create_time,
ta.update_time
ta.id,
ti.tender_info_no,
ta.user_account_id,
ti.tender_title,
ta.tender_news_id,
ta.tender_info_id,
ta.nick_name,
ta.user_name,
ta.phone_num,
ta.is_deleted,
ta.create_time,
ta.update_time
FROM
tender_apply ta left join tender_info ti on ta.tender_info_id = ti.id
tender_apply ta left join tender_info ti on ta.tender_info_id = ti.id
where ti.is_deleted = 0
<if test=" tenderNewsId != null ">
and ta.tender_news_id = #{tenderNewsId}
......@@ -227,42 +251,43 @@
</select>
<select id="listAppTenderApply" resultMap="tenderApplyResultMap">
SELECT
ta.id,
ta.tender_info_id,
ti.tender_news_id,
ti.tender_info_no,
ti.tender_content,
ti.is_deleted,
ti.create_time,
ti.update_time,
ta.user_account_id
FROM
tender_apply ta
INNER JOIN tender_info ti ON ta.tender_info_id = ti.id
WHERE
ti.is_deleted = 0 and ta.tender_news_id = #{tenderNewsId} and ta.user_account_id = #{userAccountId}
SELECT ta.id,
ta.tender_info_id,
ti.tender_news_id,
ti.tender_info_no,
ti.tender_title,
ti.is_deleted,
ti.create_time,
ti.update_time,
ta.user_account_id
FROM tender_apply ta
INNER JOIN tender_info ti ON ta.tender_info_id = ti.id
WHERE ti.is_deleted = 0
and ta.tender_news_id = #{tenderNewsId}
and ta.user_account_id = #{userAccountId}
</select>
<select id="latestTenderNewsDO" resultMap="tenderNewsResultMap">
select id,tender_name,is_using,port,is_deleted,create_time from tender_news
where is_deleted = 0 and is_using = 1
order by create_time desc
limit 0, 1
select id, tender_name, is_using, port, is_deleted, create_time
from tender_news
where is_deleted = 0
and is_using = 1
order by create_time desc limit 0, 1
</select>
<select id="countExistSameName" resultType="java.lang.Integer">
select count(*) from tender_news
where is_deleted = 0
<if test=" id != null ">
and id &lt;&gt; #{id}
and id &lt;&gt; #{id}
</if>
<if test=" tenderName != null ">
and tender_name = #{tenderName}
</if>
</select>
<select id="countNewListTenderInfo" resultType="java.lang.Integer" parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
<select id="countNewListTenderInfo" resultType="java.lang.Integer"
parameterType="com.mmc.csf.infomation.qo.IndustryCaseQO">
select count(*) from tender_news tn INNER JOIN tender_info ti ON tn.id = ti.tender_news_id
where
tn.is_deleted = 0 and tn.is_using = 1 and ti.is_deleted = 0
......@@ -279,8 +304,9 @@
<select id="listNewListTenderInfo" resultType="com.mmc.csf.release.entity.TenderInfoDO">
select
ti.id, ti.tender_news_id, ti.tender_price, ti.tender_info_no, ti.tender_content, ti.is_deleted, ti.create_time, ti.update_time
from tender_news tn INNER JOIN tender_info ti ON tn.id = ti.tender_news_id
ti.id, ti.tender_news_id, ti.tender_price, ti.tender_info_no, ti.tender_title, ti.is_deleted, ti.create_time,
ti.update_time
from tender_news tn INNER JOIN tender_info ti ON tn.id = ti.tender_news_id
where
tn.is_deleted = 0 and tn.is_using = 1 and ti.is_deleted = 0
<if test=" date != null ">
......@@ -298,7 +324,8 @@
<select id="listApplyTenderInfoIds" resultType="java.lang.Integer">
select ti.id
from tender_news tn INNER JOIN tender_info ti ON tn.id = ti.tender_news_id INNER JOIN tender_apply ta ON ta.tender_info_id = ti.id
from tender_news tn INNER JOIN tender_info ti ON tn.id = ti.tender_news_id INNER JOIN tender_apply ta ON
ta.tender_info_id = ti.id
where ta.user_account_id = #{applyUserId} and ta.is_deleted = 0
<if test="tenderInfoIds != null">
<foreach collection="tenderInfoIds" item="id" index="index"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论