Переглянути джерело

修复上传初验材料状态校验

tags/24080901
WendyYang 6 місяці тому
джерело
коміт
bee0d39f85
11 змінених файлів з 81 додано та 46 видалено
  1. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java
  2. +2
    -1
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java
  3. +2
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java
  4. +24
    -15
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java
  5. +5
    -5
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java
  6. +12
    -2
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java
  7. +12
    -13
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java
  8. +10
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java
  9. +5
    -0
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java
  10. +4
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java
  11. +3
    -3
      hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java

+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/common/statemachine/event/TenderStatusChangeEvent.java Переглянути файл

@@ -52,11 +52,11 @@ public enum TenderStatusChangeEvent {
/**
* 终验申报重新提交
*/
RESUBMIT_FINALLY_INSPECTED(402, null, null),
RESUBMIT_FINALLY_INSPECTED(502, null, null),
/**
* 终验申报通过
*/
FINALLY_INSPECTED_PASSED(502, null, null),
FINALLY_INSPECTED_PASSED(501, null, null),
/**
* 终验申报拒绝
*/


+ 2
- 1
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/ConstructionController.java Переглянути файл

@@ -21,6 +21,7 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;

/**
@@ -106,7 +107,7 @@ public class ConstructionController {
@ApiOperation("信创符合性申请")
@WebLog("信创符合性申请")
@PostMapping("/submitXcfhxApply")
public void submitXcfhxApply(@RequestBody XcfhxApplyReq req) {
public void submitXcfhxApply(@RequestBody @Valid XcfhxApplyReq req) {
constructionManage.submitXcfhxApply(req);
}



+ 2
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/controller/DeclaredProjectController.java Переглянути файл

@@ -78,14 +78,14 @@ public class DeclaredProjectController {
@WebLog("申报项目保存至草稿箱")
@PostMapping("/save-to-draft")
public Object saveToDraft(@Validated @RequestBody ProjectDraftSaveDTO dto) {
return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.PROJECT_DECLARED.getCode());
return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.PROJECT_DECLARED);
}

@ApiOperation(value = "立项备案保存至草稿箱", notes = "立项备案保存至草稿箱")
@WebLog("立项备案保存至草稿箱")
@PostMapping("/declaredRecord/save-to-draft")
public Object declaredRecordSaveToDraft(@Validated @RequestBody ProjectDraftSaveDTO dto) {
return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.DECLARED_RECORD.getCode());
return declaredProjectManage.saveToDraft(dto, ProjectDraftTypeEnum.DECLARED_RECORD);
}

@ApiOperation(value = "申报项目", notes = "申报项目")


+ 24
- 15
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/ConstructionManage.java Переглянути файл

@@ -29,16 +29,16 @@ import com.hz.pm.api.projectdeclared.model.vo.ProjectContractListVO;
import com.hz.pm.api.projectdeclared.service.*;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
import com.hz.pm.api.projectlib.model.entity.Project;
import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.model.entity.ProjectAnnualPaymentPlan;
import com.hz.pm.api.projectlib.model.entity.ProjectInst;
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum;
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum;
import com.hz.pm.api.projectlib.model.enumeration.TenderStatusEnum;
import com.hz.pm.api.projectlib.model.req.ProjectListReq;
import com.hz.pm.api.projectlib.model.vo.ProjectLibListItemVO;
import com.hz.pm.api.projectlib.model.vo.TenderListInfoVO;
import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectAnnualPaymentPlanService;
import com.hz.pm.api.projectlib.service.IProjectInstService;
import com.hz.pm.api.projectlib.service.IProjectService;
import com.hz.pm.api.user.security.model.UserFullInfoDTO;
import com.hz.pm.api.user.security.model.UserInfoDetails;
@@ -334,6 +334,16 @@ public class ConstructionManage {
return "填写成功";
}

private static final List<TenderStatusEnum> PRE_INSPECTED_PURCHASE_STATUS;

static {
PRE_INSPECTED_PURCHASE_STATUS = new ArrayList<>();
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO);
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_XCFHX_APPLY);
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.ON_XCFHX_APPLY);
PRE_INSPECTED_PURCHASE_STATUS.add(TenderStatusEnum.XCFHX_APPLY_FAILED);
}

/**
* 待初验项目列表
*
@@ -342,11 +352,12 @@ public class ConstructionManage {
*/
public PageVo<ProjectLibListItemVO> preProjectList(ProjectListReq req) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
VUtils.isTrue(Objects.isNull(user)).throwMessage("获取登录用户失败!");
Set<Long> projectIds = purchaseService.listProjectIdByStatus(PRE_INSPECTED_PURCHASE_STATUS);
if (projectIds.isEmpty()) {
return PageVo.empty();
}
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
//建设中状态
query.in(Project::getStatus, ProjectStatusEnum.TO_BE_FIRST_INSPECTED.getCode(),
ProjectStatusEnum.ON_FIRST_INSPECTED.getCode());
query.in(Project::getId, projectIds);
query.eq(Project::getStage, ProjectStatusEnum.PROJECT_APPROVED.getCode());
query.eq(Project::getNewest, Boolean.TRUE);
//只能看自己单位的
@@ -357,12 +368,8 @@ public class ConstructionManage {
if ((total = page.getTotal()) == 0) {
return PageVo.empty();
}

List<Long> projectIds = new ArrayList<>();
for (Project project : page.getRecords()) {
projectIds.add(project.getId());
}
List<Purchase> purchases = purchaseService.listByProjectIds(projectIds);
List<Long> currPageProjectIds = CollUtils.fieldList(page.getRecords(), Project::getId);
List<Purchase> purchases = purchaseService.listByProjectIds(currPageProjectIds);
Map<Long, List<Purchase>> purchaseMap = CollUtils.group(purchases, Purchase::getProjectId);
Map<Long, Contract> contractMap = contractService.listByProjectIds(projectIds);
Map<Long, List<ProjectAnnualPaymentPlan>> paymentPlansMap = projectPaymentPlanService.listByProjectIds(projectIds);
@@ -621,9 +628,11 @@ public class ConstructionManage {
purchase.setActualPerformanceIndicators(req.getActualPerformanceIndicators());
purchaseService.updateById(purchase);
// 判断是否所有标段都上传了初验材料
List<Purchase> purchases = purchaseService.listByProjectId(req.getProjectId());
boolean finishedPreInst = purchases.stream().noneMatch(w -> TenderStatusEnum.TO_BE_SUBMIT_FIRST_INSPECTED_INFO.eq(w.getStatus()));
if (finishedPreInst) {
LambdaQueryWrapper<Purchase> purchaseQuery = Wrappers.lambdaQuery(Purchase.class)
.eq(Purchase::getProjectId, req.getProjectId())
.apply("LENGTH(NVL(preliminary_inspection_materials,'')) = 0")
.last(BizConst.LIMIT_1);
if (purchaseService.count(purchaseQuery) == 0) {
Project project = projectService.getById(req.getProjectId());
stateMachineUtil.pass(project);
projectService.updateById(project);


+ 5
- 5
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/DeclaredProjectManage.java Переглянути файл

@@ -26,6 +26,7 @@ import com.hz.pm.api.irs.manage.ProjectIrsManage;
import com.hz.pm.api.projectdeclared.contants.DeclaredProjectConst;
import com.hz.pm.api.projectdeclared.model.dto.*;
import com.hz.pm.api.projectdeclared.model.entity.ProjectDraft;
import com.hz.pm.api.projectdeclared.model.enumerization.ProjectDraftTypeEnum;
import com.hz.pm.api.projectdeclared.model.vo.ProjectDraftVO;
import com.hz.pm.api.projectdeclared.service.IProjectDraftService;
import com.hz.pm.api.projectlib.helper.ProjectHelper;
@@ -312,9 +313,8 @@ public class DeclaredProjectManage {
* @param dto \
* @return \
*/
public Long saveToDraft(ProjectDraftSaveDTO dto, Integer draftType) {
public Long saveToDraft(ProjectDraftSaveDTO dto, ProjectDraftTypeEnum draftType) {
UserInfoDetails user = LoginUserUtil.loginUserDetail();
Long userId = user.getUserId();

ProjectDTO projectInfo = dto.getProjectInfo();
ProjectDraft draft = new ProjectDraft();
@@ -323,7 +323,7 @@ public class DeclaredProjectManage {
//写死 是否有主管单位
draft.setIsHigherSuperOrg(CommonEnum.YES.getCode());
draft.setIsSuperOrg(CommonEnum.YES.getCode());
draft.setUserId(String.valueOf(userId));
draft.setUserId(user.getUserIdStr());
draft.setBuildOrgCode(user.getMhUnitIdStr());
draft.setBuildOrgName(user.getMhUnitName());

@@ -344,9 +344,9 @@ public class DeclaredProjectManage {
draft.setCreateOn(LocalDateTime.now());
}
}
draft.setDraftType(draftType);
draft.setDraftType(draftType.getCode());
draft.setUpdateOn(LocalDateTime.now());
draft.setUserId(String.valueOf(userId));
draft.setUserId(user.getUserIdStr());
projectDraftService.saveOrUpdate(draft);
return draft.getId();
}


+ 12
- 2
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/manage/FinalAcceptanceManage.java Переглянути файл

@@ -1,6 +1,7 @@
package com.hz.pm.api.projectdeclared.manage;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Assert;
@@ -89,6 +90,15 @@ public class FinalAcceptanceManage {
private final IProjectInstService projectInstService;
private final HandlerManage handlerManage;

private static final List<TenderStatusEnum> FINAL_INSPECTED_TENDER_STATUS;

static {
FINAL_INSPECTED_TENDER_STATUS = new ArrayList<>();
FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.FINALLY_INSPECTED_FAILED);
FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY);
FINAL_INSPECTED_TENDER_STATUS.add(TenderStatusEnum.ON_FINALLY_INSPECTED_APPLY);
}


/**
* 待采购的-项目列表
@@ -97,12 +107,12 @@ public class FinalAcceptanceManage {
* @return \
*/
public PageVo<ProjectLibListItemVO> projectLibList(ProjectListReq req) {

UserInfoDetails user = LoginUserUtil.loginUserDetail();
LambdaQueryWrapper<Project> query = ProjectHelper.projectQuery(req);
//待终验 并且还未过期
//只能看自己单位的
Set<Long> projectIds = purchaseService.listProjectIdByStatus(TenderStatusEnum.FINALLY_INSPECTED_FAILED,
TenderStatusEnum.TO_BE_SUBMIT_FINALLY_INSPECTED_APPLY);
Set<Long> projectIds = purchaseService.listProjectIdByStatus(FINAL_INSPECTED_TENDER_STATUS);
if (projectIds.isEmpty()) {
return PageVo.empty();
}


+ 12
- 13
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/entity/Purchase.java Переглянути файл

@@ -1,27 +1,24 @@
package com.hz.pm.api.projectdeclared.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.hz.pm.api.common.compare.Compare;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
* @Classname Purchase
* @Description
* @Date 2023/5/29 10:00
* @Author PoffyZhang
* <p>
* 采购信息(标段)
* </p>
*
* @author WendyYang
* @since 15:07 2024/2/28
*/
@TableName("nd_purchase")
@ApiModel(value = "采购对象", description = "采购对象")
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("nd_purchase")
@ApiModel(value = "采购对象")
public class Purchase {

@TableId(type = IdType.AUTO)
@@ -43,9 +40,11 @@ public class Purchase {
private LocalDateTime updateOn;

@ApiModelProperty("创建人 工号")
@TableField(fill = FieldFill.INSERT)
private String createBy;

@ApiModelProperty("修改人 工号")
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;

@ApiModelProperty("供应商")
@@ -104,10 +103,10 @@ public class Purchase {
@ApiModelProperty("初验材料")
private String preliminaryInspectionMaterials;

@ApiModelProperty("是否完成日志数据归集")
@ApiModelProperty("(初验)是否完成日志数据归集")
private Boolean isCompletedLogCollection;

@ApiModelProperty("实际成效指标")
@ApiModelProperty("(初验)实际成效指标")
private String actualPerformanceIndicators;

@ApiModelProperty("终验申报材料")


+ 10
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/SubmitPurchaseNoticeReq.java Переглянути файл

@@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@@ -27,6 +29,7 @@ public class SubmitPurchaseNoticeReq {
private Long projectId;

@ApiModelProperty("标段信息")
@NotEmpty(message = "标段信息不能为空")
private List<PurchaseNoticeTenderDTO> tenders;

@Data
@@ -36,26 +39,33 @@ public class SubmitPurchaseNoticeReq {
private Long bidId;

@ApiModelProperty("标段名称")
@NotBlank(message = "标段名称不能为空")
private String bidName;

@ApiModelProperty("标段预算")
@NotNull(message = "标段预算不能为空")
private BigDecimal bidBudget;

@ApiModelProperty("开标时间")
@NotNull(message = "开标时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime bidStartTime;

@ApiModelProperty("投标截止时间")
@NotNull(message = "投标截止时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm")
private LocalDateTime bidEndTime;

@ApiModelProperty("投标地址")
@NotBlank(message = "投标地址不能为空")
private String bidAddress;

@ApiModelProperty("采购方式")
@NotBlank(message = "采购方式不能为空")
private String purchaseMethod;

@ApiModelProperty("招标文件")
@NotBlank(message = "招标文件不能为空")
private String bidDoc;

}


+ 5
- 0
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/model/req/XcfhxApplyReq.java Переглянути файл

@@ -3,6 +3,8 @@ package com.hz.pm.api.projectdeclared.model.req;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;

/**
* <p>
* 信创符合性申请参数类
@@ -15,12 +17,15 @@ import lombok.Data;
public class XcfhxApplyReq {

@ApiModelProperty("项目ID")
@NotNull(message = "项目ID不能为空")
private Long projectId;

@ApiModelProperty("标段ID")
@NotNull(message = "标段ID不能为空")
private Long bidId;

@ApiModelProperty("是否符合信创符合性要求")
@NotNull(message = "是否符合信创符合性要求不能为空")
private Boolean matchXcfhx;

@ApiModelProperty("备注")


+ 4
- 3
hz-pm-api/src/main/java/com/hz/pm/api/projectdeclared/service/IPurchaseService.java Переглянути файл

@@ -1,5 +1,6 @@
package com.hz.pm.api.projectdeclared.service;

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ArrayUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -33,11 +34,11 @@ public interface IPurchaseService extends IService<Purchase> {
.orderByAsc(Purchase::getId));
}

default Set<Long> listProjectIdByStatus(TenderStatusEnum... status) {
if (ArrayUtil.isEmpty(status)) {
default Set<Long> listProjectIdByStatus(Collection<TenderStatusEnum> status) {
if (CollUtil.isEmpty(status)) {
return Collections.emptySet();
}
List<Integer> statusCodes = Arrays.stream(status)
List<Integer> statusCodes = status.stream()
.map(TenderStatusEnum::getTenderStatus)
.collect(Collectors.toList());
LambdaQueryWrapper<Purchase> query = Wrappers.lambdaQuery(Purchase.class)


+ 3
- 3
hz-pm-api/src/main/java/com/hz/pm/api/todocenter/manage/HandlerManage.java Переглянути файл

@@ -417,7 +417,7 @@ public class HandlerManage {

// 保存到草稿箱中
private void saveToDraft(Project req) {
ProjectDraftSaveDTO draftSaveDto = new ProjectDraftSaveDTO();
ProjectDraftSaveDTO projectDraft = new ProjectDraftSaveDTO();
ProjectDTO projectInfo = new ProjectDTO();
BeanUtils.copyProperties(req, projectInfo);
// 查询出项目关联的应用信息
@@ -432,8 +432,8 @@ public class HandlerManage {
new TypeReference<Map<String, Object>>() {
});
projectInfo.setDynamicForm(dynamicMap);
draftSaveDto.setProjectInfo(projectInfo);
declaredProjectManage.saveToDraft(draftSaveDto, ProjectDraftTypeEnum.PROJECT_DECLARED.getCode());
projectDraft.setProjectInfo(projectInfo);
declaredProjectManage.saveToDraft(projectDraft, ProjectDraftTypeEnum.PROJECT_DECLARED);
}

/**


Завантаження…
Відмінити
Зберегти