|
@@ -17,6 +17,7 @@ import com.ozs.common.utils.bean.BeanUtils;
|
|
|
import com.ozs.pm.doman.*;
|
|
|
import com.ozs.pm.doman.vo.requestVo.*;
|
|
|
import com.ozs.pm.doman.vo.responseVo.*;
|
|
|
+import com.ozs.pm.mapper.PmBidWinningOpeningRefMapper;
|
|
|
import com.ozs.pm.mapper.PmDemandMapper;
|
|
|
import com.ozs.pm.service.*;
|
|
|
import com.ozs.system.domain.SysFileInfo;
|
|
@@ -75,7 +76,10 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
private PmBidWinningService pmBidWinningService;
|
|
|
@Autowired
|
|
|
private PmBidFailureService pmBidFailureService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private PmProjectConstructionService pmProjectConstructionService;
|
|
|
+ @Autowired
|
|
|
+ private PmBidWinningOpeningRefService pmBidWinningOpeningRefService;
|
|
|
/**
|
|
|
* 查询采购需求
|
|
|
*
|
|
@@ -278,6 +282,20 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
} else if("5".equals(detailType)) { //合同信息
|
|
|
|
|
|
} else if("6".equals(detailType)) { //建设情况
|
|
|
+ LambdaQueryWrapper<PmProjectConstruction> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ lambdaQueryWrapper.eq(PmProjectConstruction::getDemandId,demandId);
|
|
|
+ PmProjectConstruction pmProjectConstruction = pmProjectConstructionService.getOne(lambdaQueryWrapper);
|
|
|
+ if(pmProjectConstruction != null){
|
|
|
+ PmProjectConstructionResVo pmProjectConstructionResVo = new PmProjectConstructionResVo();
|
|
|
+ BeanUtils.copyProperties(pmProjectConstruction,pmProjectConstructionResVo);
|
|
|
+
|
|
|
+ //建设情况文件
|
|
|
+ HashMap<String, String> projectConstructionFileMap = getFileMap(vo.getDemandId(),SysFileRefEnum.PM_PROJECT_CONSTRUCTION.getType());
|
|
|
+ if(projectConstructionFileMap != null){
|
|
|
+ pmProjectConstructionResVo.setFileMap(projectConstructionFileMap);
|
|
|
+ }
|
|
|
+ vo.setPmProjectConstructionResVo(pmProjectConstructionResVo);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|
|
@@ -859,6 +877,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
throw new Exception("参数错误");
|
|
|
}
|
|
|
|
|
|
+ //从专家库中查询符合项目类型的以及是白名单的全部列表
|
|
|
LambdaQueryWrapper<BaseExpert> lw = new LambdaQueryWrapper<BaseExpert>();
|
|
|
lw.eq(BaseExpert::getVarietyPurchase,pmDemand.getProjectType())
|
|
|
.eq(BaseExpert::getStatus,NameListType.WHITE.getCode());
|
|
@@ -867,26 +886,29 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
throw new Exception("没抽取到符合条件的专家");
|
|
|
}
|
|
|
|
|
|
+ //从列表中挑出来各个类型的子列表
|
|
|
List<BaseExpert> technicalExpertList = new ArrayList<>();
|
|
|
List<BaseExpert> economicExpertList = new ArrayList<>();
|
|
|
List<BaseExpert> legalAffairsExpertList = new ArrayList<>();
|
|
|
List<BaseExpert> spareExpertList = new ArrayList<>();
|
|
|
|
|
|
+ //TODO 所在区域判读
|
|
|
+
|
|
|
for(BaseExpert baseExpert : baseExpertList){
|
|
|
if(technicalExpertNumber > 0) {
|
|
|
- if(ExpertType.TECHNICAL_EXPERT.getCode().equals(baseExpert.getExpertType())){
|
|
|
+ if(baseExpert.getExpertType().contains(ExpertType.TECHNICAL_EXPERT.getCode())){
|
|
|
technicalExpertList.add(baseExpert);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if(economicExpertNumber > 0) {
|
|
|
- if(ExpertType.ECONOMIC_EXPERT.getCode().equals(baseExpert.getExpertType())){
|
|
|
+ if(baseExpert.getExpertType().contains(ExpertType.ECONOMIC_EXPERT.getCode())){
|
|
|
economicExpertList.add(baseExpert);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
if (legalAffairsExpertNumber > 0) {
|
|
|
- if(ExpertType.LEGALAFFAIRS_EXPERT.getCode().equals(baseExpert.getExpertType())){
|
|
|
+ if(baseExpert.getExpertType().contains(ExpertType.LEGALAFFAIRS_EXPERT.getCode())){
|
|
|
legalAffairsExpertList.add(baseExpert);
|
|
|
}
|
|
|
}
|
|
@@ -895,16 +917,17 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
String[] arr = professional.split(",");
|
|
|
List<String> professionalList = Arrays.asList(arr);
|
|
|
String majorType = baseExpert.getMajorType();
|
|
|
- //TODO 所在区域判读
|
|
|
-
|
|
|
if(!ObjectUtils.isEmpty(majorType)){
|
|
|
- if(professionalList.contains(majorType)){
|
|
|
+ String[] arr2 = majorType.split(",");
|
|
|
+ List<String> majorTypeList = Arrays.asList(arr2);
|
|
|
+ if(hasIntersection(professionalList,majorTypeList)){
|
|
|
spareExpertList.add(baseExpert);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //从子列表中随机抽取符合数据量的
|
|
|
List<BaseExpert> alltExpertList = new ArrayList<>();
|
|
|
if(!ObjectUtils.isEmpty(technicalExpertList)){
|
|
|
alltExpertList.addAll(RandomUtil.getRandomList(technicalExpertList,technicalExpertNumber));
|
|
@@ -938,6 +961,19 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //二个列表是否有交集
|
|
|
+ private boolean hasIntersection(List<String> professionalList, List<String> majorTypeList) {
|
|
|
+ for (String professiona : professionalList) {
|
|
|
+ for(String majorType : majorTypeList) {
|
|
|
+ if(professiona.equals(majorType)){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public boolean insertBidOpeningBatch(PmBidOpeningFillReqVo pmBidOpeningFillReqVo) throws Exception {
|
|
|
PmDemand pmDemand = this.getById(pmBidOpeningFillReqVo.getDemandId());
|
|
@@ -953,8 +989,10 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
if(ObjectUtils.isEmpty(pmBidOpening.getScore())){
|
|
|
throw new Exception("分数不能为空");
|
|
|
}
|
|
|
+ if(ObjectUtils.isEmpty(pmBidOpening.getOpenBidTime())){
|
|
|
+ throw new Exception("开标时间不能为空");
|
|
|
+ }
|
|
|
pmBidOpening.setDemandId(pmBidOpeningFillReqVo.getDemandId());
|
|
|
- pmBidOpening.setOpenBidTime(now); //TODO
|
|
|
pmBidOpening.setCreateBy(pmBidOpeningFillReqVo.getCreateBy());
|
|
|
pmBidOpening.setCreateTime(now);
|
|
|
pmBidOpening.setUpdateBy(pmBidOpeningFillReqVo.getUpdateBy());
|
|
@@ -973,25 +1011,96 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
|
|
|
}
|
|
|
|
|
|
public boolean insertPmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception {
|
|
|
- uploadFile(pmBidWinningReqVo.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(),pmBidWinningReqVo.getSysFileRefs(),pmBidWinningReqVo.getUpdateBy());
|
|
|
+ List<Long> pmBidOpeningIdList = pmBidWinningReqVo.getPmBidOpeningIdList();
|
|
|
+ if(ObjectUtils.isEmpty(pmBidOpeningIdList)) {
|
|
|
+ throw new Exception("中标单位信息列表不能为空");
|
|
|
+ }
|
|
|
+ if(ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())){
|
|
|
+ throw new Exception("上传附件不能为空");
|
|
|
+ }
|
|
|
+ if(ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())){
|
|
|
+ throw new Exception("中标金额不能为空");
|
|
|
+ }
|
|
|
PmBidWinning pmBidWinning = new PmBidWinning();
|
|
|
BeanUtils.copyProperties(pmBidWinningReqVo,pmBidWinning);
|
|
|
if(pmBidWinningService.save(pmBidWinning)){
|
|
|
- if(uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(),pmBidWinningReqVo.getSysFileRefs(),pmBidWinningReqVo.getUpdateBy())) {
|
|
|
- PmDemand pmDemandUpdate = new PmDemand();
|
|
|
- pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId());
|
|
|
- pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.BIDDING_PUBLICITY.getCode()));
|
|
|
- pmDemandUpdate.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
|
|
|
- pmDemandUpdate.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
|
|
|
- return this.updateById(pmDemandUpdate);
|
|
|
- } else {
|
|
|
- return false;
|
|
|
+ List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>();
|
|
|
+ for(Long pmBidOpeningId : pmBidOpeningIdList){
|
|
|
+ PmBidWinningOpeningRef pmBidWinningOpeningRef = new PmBidWinningOpeningRef();
|
|
|
+ pmBidWinningOpeningRef.setOpeningId(pmBidOpeningId);
|
|
|
+ pmBidWinningOpeningRef.setWinningId(pmBidWinning.getId());
|
|
|
+ pmBidWinningOpeningRef.setCreateBy(pmBidWinningReqVo.getCreateBy());
|
|
|
+ pmBidWinningOpeningRef.setCreateTime(pmBidWinningReqVo.getCreateTime());
|
|
|
+ pmBidWinningOpeningRef.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
|
|
|
+ pmBidWinningOpeningRef.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
|
|
|
+ pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef);
|
|
|
}
|
|
|
+ if (pmBidWinningOpeningRefService.saveBatch(pmBidWinningOpeningRefList)) {
|
|
|
+ if(uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(),pmBidWinningReqVo.getSysFileRefs(),pmBidWinningReqVo.getUpdateBy())) {
|
|
|
+ PmDemand pmDemandUpdate = new PmDemand();
|
|
|
+ pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId());
|
|
|
+ pmDemandUpdate.setProjectStatus(Long.parseLong(PmProjectStatus.BIDDING_PUBLICITY.getCode()));
|
|
|
+ pmDemandUpdate.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
|
|
|
+ pmDemandUpdate.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
|
|
|
+ return this.updateById(pmDemandUpdate);
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ public boolean updatePmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception {
|
|
|
+ List<Long> pmBidOpeningIdList = pmBidWinningReqVo.getPmBidOpeningIdList();
|
|
|
+ if(ObjectUtils.isEmpty(pmBidOpeningIdList)) {
|
|
|
+ throw new Exception("中标单位信息列表不能为空");
|
|
|
+ }
|
|
|
+ if(ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())){
|
|
|
+ throw new Exception("上传附件不能为空");
|
|
|
+ }
|
|
|
+ if(ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())){
|
|
|
+ throw new Exception("中标金额不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>();
|
|
|
+ lw.eq(PmBidWinning::getDemandId,pmBidWinningReqVo.getDemandId());
|
|
|
+ PmBidWinning pmBidWinning = pmBidWinningService.getOne(lw);
|
|
|
+ if(pmBidWinning == null){
|
|
|
+ throw new Exception("原中标信息不存在");
|
|
|
+ }
|
|
|
+
|
|
|
+ pmBidWinning.setBidWinningAmount(pmBidWinningReqVo.getBidWinningAmount());
|
|
|
+ pmBidWinning.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
|
|
|
+ pmBidWinning.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
|
|
|
+ if(pmBidWinningService.updateById(pmBidWinning)){
|
|
|
+ //删除老的:
|
|
|
+ QueryWrapper<PmBidWinningOpeningRef> queryWrapper = new QueryWrapper<>();
|
|
|
+ queryWrapper.lambda().eq(PmBidWinningOpeningRef::getWinningId,pmBidWinning.getId());
|
|
|
+ pmBidWinningOpeningRefService.remove(queryWrapper);
|
|
|
+
|
|
|
+ //添加新的
|
|
|
+ List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>();
|
|
|
+ for(Long pmBidOpeningId : pmBidOpeningIdList){
|
|
|
+ PmBidWinningOpeningRef pmBidWinningOpeningRef = new PmBidWinningOpeningRef();
|
|
|
+ pmBidWinningOpeningRef.setOpeningId(pmBidOpeningId);
|
|
|
+ pmBidWinningOpeningRef.setWinningId(pmBidWinning.getId());
|
|
|
+ pmBidWinningOpeningRef.setCreateBy(pmBidWinningReqVo.getCreateBy());
|
|
|
+ pmBidWinningOpeningRef.setCreateTime(pmBidWinningReqVo.getCreateTime());
|
|
|
+ pmBidWinningOpeningRef.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
|
|
|
+ pmBidWinningOpeningRef.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
|
|
|
+ pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef);
|
|
|
+ }
|
|
|
+ return pmBidWinningOpeningRefService.saveBatch(pmBidWinningOpeningRefList);
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public boolean insertPmBidFailure(PmBidFailureReqVo pmBidFailureReqVo) throws Exception {
|
|
|
|
|
|
PmBidFailure pmBidFailure = new PmBidFailure();
|