招标信息模板下载和招标信息导入
This commit is contained in:
parent
4cd953ff08
commit
345b931de9
|
@ -125,6 +125,7 @@ public interface Converts {
|
|||
|
||||
EquipmentUseRecordEntity toEquipmentUseRecordEntity(EquipmentUseRecordReq req);
|
||||
BiddingInfoEntity toBiddingInfoReq (BiddingInfoReq req);
|
||||
List<BiddingInfoEntity> toBiddingInfoReq (List<BiddingInfoReq> req);
|
||||
TenderInfoEntity toTenderInfoEntity (TenderInfoReq req);
|
||||
OutbidInfoEntity toOutbidInfoEntity (OutbidInfoReq req);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.dite.znpt.domain.entity;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
package com.dite.znpt.domain.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
@ -21,31 +24,46 @@ import java.time.LocalDateTime;
|
|||
public class BiddingInfoReq implements Serializable {
|
||||
@Serial
|
||||
private static final long serialVersionUID = 6967025339487392364L;
|
||||
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty(index = 0, value = "招标项目")
|
||||
@ApiModelProperty("招标项目")
|
||||
@Size(max = 50, message = "招标项目不能超过50个字符")
|
||||
private String biddingProject;
|
||||
|
||||
@ColumnWidth(40)
|
||||
@ExcelProperty(index = 1, value = "招标公司")
|
||||
@ApiModelProperty("招标公司")
|
||||
@Size(max = 50, message = "招标公司不能超过50个字符")
|
||||
private String biddingCompany;
|
||||
|
||||
@ColumnWidth(20)
|
||||
@ExcelProperty(index = 2, value = "招标金额\n(单位元,精确到分)")
|
||||
@ApiModelProperty("招标金额")
|
||||
private BigDecimal biddingAmount;
|
||||
|
||||
@ColumnWidth(30)
|
||||
@ExcelProperty(index = 3, value = "招标截止时间\n(yyyy-MM-dd HH:mm:ss)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty("招标截止时间")
|
||||
private LocalDateTime biddingDeadline;
|
||||
|
||||
@ColumnWidth(30)
|
||||
@ExcelProperty(index = 4, value = "信息录入时间\n(yyyy-MM-dd HH:mm:ss)")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty("信息录入时间")
|
||||
private LocalDateTime infoEntryTime;
|
||||
|
||||
@ColumnWidth(20)
|
||||
@ExcelProperty(index = 5, value = "信息来源")
|
||||
@ApiModelProperty("信息来源")
|
||||
@NotBlank(message = "信息来源不能为空")
|
||||
@Size(max = 50, message = "信息来源不能超过50个字符")
|
||||
private String source;
|
||||
|
||||
@ColumnWidth(60)
|
||||
@ExcelProperty(index = 6, value = "信息来源网址")
|
||||
@ApiModelProperty("信息来源网址")
|
||||
@NotBlank(message = "信息来源网址不能为空")
|
||||
@Size(max = 100, message = "信息来源网址不能超过100个字符")
|
||||
private String sourceWebsite;
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package com.dite.znpt.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.dite.znpt.domain.Result;
|
||||
import com.dite.znpt.domain.entity.BiddingInfoEntity;
|
||||
import com.dite.znpt.domain.vo.BiddingInfoReq;
|
||||
import com.dite.znpt.domain.vo.BiddingInfoResp;
|
||||
import org.springframework.validation.BindingResult;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -20,4 +22,5 @@ public interface BiddingInfoService extends IService<BiddingInfoEntity> {
|
|||
void update(String biddingInfoId, BiddingInfoReq req);
|
||||
void uploadBiddingInfoFile(String biddingInfoId, String biddingFileId);
|
||||
void apply(String biddingInfoId);
|
||||
Result<?> importData(List<BiddingInfoReq> dataList, BindingResult bindingResult);
|
||||
}
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package com.dite.znpt.service.impl;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.dite.znpt.constant.Constants;
|
||||
import com.dite.znpt.constant.Message;
|
||||
import com.dite.znpt.converts.Converts;
|
||||
import com.dite.znpt.domain.Result;
|
||||
import com.dite.znpt.domain.entity.AttachInfoEntity;
|
||||
import com.dite.znpt.domain.entity.BiddingInfoEntity;
|
||||
import com.dite.znpt.domain.vo.BiddingInfoReq;
|
||||
|
@ -13,11 +15,16 @@ import com.dite.znpt.mapper.BiddingInfoMapper;
|
|||
import com.dite.znpt.service.AttachInfoService;
|
||||
import com.dite.znpt.service.BiddingInfoService;
|
||||
import com.dite.znpt.util.PageUtil;
|
||||
import com.pig4cloud.plugin.excel.vo.ErrorMessage;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.BindingResult;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author Bear.G
|
||||
|
@ -87,4 +94,19 @@ public class BiddingInfoServiceImpl extends ServiceImpl<BiddingInfoMapper, Biddi
|
|||
entity.setStatus("1");
|
||||
this.updateById(entity);
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@Override
|
||||
public Result<?> importData(List<BiddingInfoReq> dataList, BindingResult bindingResult) {
|
||||
List<String> sourceWebsites = dataList.stream().map(BiddingInfoReq::getSourceWebsite).distinct().toList();
|
||||
if(sourceWebsites.size() != dataList.size()){
|
||||
return Result.error(Constants.SERVICE_EXCEPTION, "导入失败,存在重复数据");
|
||||
}
|
||||
List<String> existSourceWebsites = this.list().stream().map(BiddingInfoEntity::getSourceWebsite).toList();
|
||||
if(CollUtil.containsAny(existSourceWebsites, sourceWebsites)){
|
||||
return Result.error(Constants.SERVICE_EXCEPTION, "导入失败,存在重复数据");
|
||||
}
|
||||
this.saveBatch(Converts.INSTANCE.toBiddingInfoReq(dataList));
|
||||
return Result.okM("导入"+ dataList.size()+"条数据");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,11 @@ import com.dite.znpt.domain.Result;
|
|||
import com.dite.znpt.domain.vo.BiddingInfoReq;
|
||||
import com.dite.znpt.domain.vo.BiddingInfoResp;
|
||||
import com.dite.znpt.service.BiddingInfoService;
|
||||
import com.pig4cloud.plugin.excel.annotation.RequestExcel;
|
||||
import com.pig4cloud.plugin.excel.annotation.ResponseExcel;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.validation.BindingResult;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
@ -64,4 +67,19 @@ public class BiddingInfoController {
|
|||
biddingInfoService.apply(biddingInfoId);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation(value = "下载导入模板", httpMethod = "GET")
|
||||
@GetMapping("/download-template")
|
||||
@ResponseExcel(name = "招标信息导入模板")
|
||||
public List<?> downloadTemplate() {
|
||||
return List.of(new BiddingInfoReq());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "导入招标信息", httpMethod = "POST")
|
||||
@PostMapping("/import")
|
||||
public Result<?> importData(@RequestExcel List<BiddingInfoReq> dataList, BindingResult bindingResult) {
|
||||
return biddingInfoService.importData(dataList, bindingResult);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue