suntianwu 2 лет назад
Родитель
Сommit
491c0e4f32

+ 28 - 0
purchase-common/src/main/java/com/ozs/common/enums/BidWinningStatus.java

@@ -0,0 +1,28 @@
+package com.ozs.common.enums;
+
+/**
+ * 中标状态
+ *
+ * @author buzhanyi
+ */
+public enum BidWinningStatus {
+    NORMAL("0", "正常"),
+    BE_REPLACED("1", "被替换"),
+    BE_BID_FAILURE("2", "被质疑流标");
+
+    private final String code;
+    private final String info;
+
+    BidWinningStatus(String code, String info) {
+        this.code = code;
+        this.info = info;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getInfo() {
+        return info;
+    }
+}

+ 3 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmBidWinning.java

@@ -56,6 +56,9 @@ public class PmBidWinning implements Serializable {
     @TableField("BID_ANNOUNCEMENT_CLOSE_TIME")
     private Date bidAnnouncementCloseTime;
 
+    @ApiModelProperty("状态:0正常,1被替换,2被质疑流标")
+    @TableField("STATUS")
+    private String status;
 
     @ApiModelProperty("创建者")
     @TableField("CREATE_BY")

+ 3 - 0
purchase-system/src/main/java/com/ozs/pm/doman/PmBidWinningOpeningRef.java

@@ -46,6 +46,9 @@ public class PmBidWinningOpeningRef implements Serializable {
     @TableField("OPENING_ID")
     private Long openingId;
 
+    @ApiModelProperty("状态:0正常,1被替换,2被质疑流标")
+    @TableField("STATUS")
+    private String status;
 
     @ApiModelProperty("创建者")
     @TableField("CREATE_BY")

+ 68 - 16
purchase-system/src/main/java/com/ozs/pm/service/impl/PmDemandServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.stream.Collectors;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -1106,17 +1107,41 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
     @Transactional(rollbackFor = Exception.class)
     public boolean insertPmBidWinning(PmBidWinningReqVo pmBidWinningReqVo) throws Exception {
         List<Long> pmBidOpeningIdList = pmBidWinningReqVo.getPmBidOpeningIdList();
+        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())) {
+            throw new Exception("中标金额不能为空");
+        }
         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(ObjectUtils.isEmpty(pmBidWinningReqVo.getId())){ //属于新增
+            LambdaQueryWrapper<PmBidWinning> pmBidWinningLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            pmBidWinningLambdaQueryWrapper.eq(PmBidWinning::getDemandId,pmBidWinningReqVo.getDemandId())
+                    .eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+            List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(pmBidWinningLambdaQueryWrapper);
+            if(!ObjectUtils.isEmpty(pmBidWinninglist)){
+                for(PmBidWinning item : pmBidWinninglist) {
+                    UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>();
+                    updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode())
+                            .eq(PmBidWinning::getId,item.getId());
+                    pmBidWinningService.update(updateWrapper1);
+
+                    UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>();
+                    updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode())
+                            .eq(PmBidWinningOpeningRef::getWinningId,item.getId())
+                            .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+                    pmBidWinningOpeningRefService.update(updateWrapper2);
+                }
+            }
+        }
+
         if (pmBidWinningService.saveOrUpdate(pmBidWinning)) {
             List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>();
             for (Long pmBidOpeningId : pmBidOpeningIdList) {
@@ -1136,6 +1161,7 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
                 pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef);
             }
             if (pmBidWinningOpeningRefService.saveOrUpdateBatch(pmBidWinningOpeningRefList)) {
+
                 uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(), pmBidWinningReqVo.getSysFileRefs(), pmBidWinningReqVo.getUpdateBy());
                 PmDemand pmDemandUpdate = new PmDemand();
                 pmDemandUpdate.setDemandId(pmBidWinningReqVo.getDemandId());
@@ -1161,53 +1187,79 @@ public class PmDemandServiceImpl extends ServiceImpl<PmDemandMapper, PmDemand> i
         if (ObjectUtils.isEmpty(pmBidOpeningIdList)) {
             throw new Exception("中标单位信息列表不能为空");
         }
-        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())) {
-            throw new Exception("上传附件不能为空");
-        }
         if (ObjectUtils.isEmpty(pmBidWinningReqVo.getBidWinningAmount())) {
             throw new Exception("中标金额不能为空");
         }
+        if (ObjectUtils.isEmpty(pmBidWinningReqVo.getSysFileRefs())) {
+            throw new Exception("上传附件不能为空");
+        }
 
         LambdaQueryWrapper<PmBidWinning> lw = new LambdaQueryWrapper<>();
-        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId());
-        PmBidWinning pmBidWinning = pmBidWinningService.getOne(lw);
-        if (pmBidWinning == null) {
+        lw.eq(PmBidWinning::getDemandId, pmBidWinningReqVo.getDemandId()).eq(PmBidWinning::getStatus,BidWinningStatus.NORMAL.getCode());
+        List<PmBidWinning> pmBidWinninglist = pmBidWinningService.list(lw);
+        if (ObjectUtils.isEmpty(pmBidWinninglist)) {
             throw new Exception("原中标信息不存在");
         }
+        //修改老的状态
+        for(PmBidWinning item : pmBidWinninglist) {
+            UpdateWrapper<PmBidWinning> updateWrapper1 = new UpdateWrapper<>();
+            updateWrapper1.lambda().set(PmBidWinning::getStatus,BidWinningStatus.BE_REPLACED.getCode())
+                    .eq(PmBidWinning::getId,item.getId());
+            pmBidWinningService.update(updateWrapper1);
 
+            UpdateWrapper<PmBidWinningOpeningRef> updateWrapper2 = new UpdateWrapper<>();
+            updateWrapper2.lambda().set(PmBidWinningOpeningRef::getStatus,BidWinningStatus.BE_REPLACED.getCode())
+                    .eq(PmBidWinningOpeningRef::getWinningId,item.getId())
+                    .eq(PmBidWinningOpeningRef::getStatus,BidWinningStatus.NORMAL.getCode());
+            pmBidWinningOpeningRefService.update(updateWrapper2);
+        }
+
+        //新增
+        PmBidWinning pmBidWinning = new PmBidWinning();
+        BeanUtils.copyProperties(pmBidWinninglist.get(0),pmBidWinning);
         pmBidWinning.setBidWinningAmount(pmBidWinningReqVo.getBidWinningAmount());
+        pmBidWinning.setStatus(BidWinningStatus.NORMAL.getCode());
         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);
-
-            //添加新的
+        if (pmBidWinningService.save(pmBidWinning)) {
             List<PmBidWinningOpeningRef> pmBidWinningOpeningRefList = new ArrayList<>();
             for (Long pmBidOpeningId : pmBidOpeningIdList) {
                 PmBidWinningOpeningRef pmBidWinningOpeningRef = new PmBidWinningOpeningRef();
                 pmBidWinningOpeningRef.setOpeningId(pmBidOpeningId);
                 pmBidWinningOpeningRef.setWinningId(pmBidWinning.getId());
+                pmBidWinningOpeningRef.setStatus(BidWinningStatus.NORMAL.getCode());
+
                 pmBidWinningOpeningRef.setCreateBy(pmBidWinningReqVo.getCreateBy());
                 pmBidWinningOpeningRef.setCreateTime(pmBidWinningReqVo.getCreateTime());
                 pmBidWinningOpeningRef.setUpdateBy(pmBidWinningReqVo.getUpdateBy());
                 pmBidWinningOpeningRef.setUpdateTime(pmBidWinningReqVo.getUpdateTime());
                 pmBidWinningOpeningRefList.add(pmBidWinningOpeningRef);
             }
+            LambdaQueryWrapper<SysFileRef> sysFileRefLambdaQueryWrapper = new LambdaQueryWrapper<>();
+            sysFileRefLambdaQueryWrapper.eq(SysFileRef::getType,SysFileRefEnum.PM_BID_WINNING_FILE.getType())
+                    .eq(SysFileRef::getRedId,pmBidWinninglist.get(0));
+            List<SysFileRef> sysFileRefs = sysFileRefService.list(sysFileRefLambdaQueryWrapper);
+            uploadFile(pmBidWinning.getId(), SysFileRefEnum.PM_BID_WINNING_FILE.getType(), sysFileRefs, pmBidWinningReqVo.getUpdateBy());
+
             return pmBidWinningOpeningRefService.saveBatch(pmBidWinningOpeningRefList);
         } else {
             return false;
         }
     }
 
+    /**
+     * 流标
+     * @param pmBidFailureReqVo
+     * @return
+     * @throws Exception
+     */
     @Override
     @Transactional(rollbackFor = Exception.class)
     public boolean insertPmBidFailure(PmBidFailureReqVo pmBidFailureReqVo) throws Exception {
         PmBidFailure pmBidFailure = new PmBidFailure();
         BeanUtils.copyProperties(pmBidFailureReqVo, pmBidFailure);
         if (pmBidFailureService.saveOrUpdate(pmBidFailure)) {
+
             uploadFile(pmBidFailure.getId(), SysFileRefEnum.PM_BID_FAILURE_FILE.getType(), pmBidFailureReqVo.getSysFileRefs(), pmBidFailureReqVo.getUpdateBy());
             PmDemand pmDemandUpdate = new PmDemand();
             pmDemandUpdate.setDemandId(pmBidFailureReqVo.getDemandId());