diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java index 5405fa4..8176cdb 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/action/ProjectDeclareAction.java @@ -226,7 +226,7 @@ public class ProjectDeclareAction { Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); // 终验审核通过后,项目一级状态变更为已归档 project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); - project.setStatus(ProjectStatusEnum.ARCHIVED.getCode()); + project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); } @OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java index ff5574e..35febc2 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/common/statemachine/event/ProjectStatusChangeEvent.java @@ -105,7 +105,7 @@ public enum ProjectStatusChangeEvent { /** * 终验审核通过(项目状态变为:已归档) */ - FINAL_ACCEPTANCE_PASS(null, null, null), + FINAL_ACCEPTANCE_PASS(20004, null, null), // 下个节点还未提交审核意见时,流程发起人和前一个审核人可以点击撤回 diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingEmployeeInfoController.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingEmployeeInfoController.java deleted file mode 100644 index 46358ef..0000000 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingEmployeeInfoController.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.ningdatech.pmapi.organization.controller; - - -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.stereotype.Controller; - -/** - *

- * 前端控制器 - *

- * - * @author Lierbao - * @since 2023-02-11 - */ -@Controller -@RequestMapping("/pmapi.organization/ding-employee-info") -public class DingEmployeeInfoController { - -} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java index 2ce1a10..f16e421 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/DingOrganizationController.java @@ -1,10 +1,22 @@ package com.ningdatech.pmapi.organization.controller; +import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.organization.manage.OrganizationManage; +import com.ningdatech.pmapi.organization.model.po.ReqOrganizationListPO; +import com.ningdatech.pmapi.organization.model.vo.ResOrganizationListVO; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiModelProperty; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; /** *

@@ -14,14 +26,27 @@ import org.springframework.web.bind.annotation.RequestMapping; * @author Lierbao * @since 2023-02-09 */ -@Controller + +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@Api(value = "DingOrganizationController", tags = "单位管理") @RequestMapping("/api/v1/organization") public class DingOrganizationController { + private final OrganizationManage organizationManage; + @ApiModelProperty("单位成员配置") @PostMapping("/member/config") public void organizationManage() { } + @ApiModelProperty("单位列表筛选") + @PostMapping("/list") + public PageVo organizationList(@Valid @RequestBody ReqOrganizationListPO reqOrganizationListPO) { + return organizationManage.organizationList(reqOrganizationListPO); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationProcdefController.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationProcdefController.java index 2ed8f47..94cb5f5 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationProcdefController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/controller/OrganizationProcdefController.java @@ -57,14 +57,14 @@ public class OrganizationProcdefController { @ApiOperation(value = "单位流程配置启用", notes = "单位流程配置启用") @PutMapping("/enable/{processDefId}") public String enableProcess(@PathVariable String processDefId) { - orgProcessModelService.enableProcess(processDefId,Boolean.FALSE); + orgProcessModelService.enableProcess(processDefId, Boolean.FALSE); return "启用成功"; } @ApiOperation(value = "单位流程配置禁用", notes = "单位流程配置禁用") @PutMapping("/disable/{processDefId}") public String disableProcess(@PathVariable String processDefId) { - orgProcessModelService.enableProcess(processDefId,Boolean.TRUE); + orgProcessModelService.enableProcess(processDefId, Boolean.TRUE); return "禁用成功"; } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java index 24b7171..69e314a 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/manage/OrganizationManage.java @@ -1,8 +1,21 @@ package com.ningdatech.pmapi.organization.manage; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ningdatech.basic.model.PageVo; +import com.ningdatech.pmapi.organization.model.entity.DingOrganization; +import com.ningdatech.pmapi.organization.model.po.ReqOrganizationListPO; +import com.ningdatech.pmapi.organization.model.vo.ResOrganizationListVO; +import com.ningdatech.pmapi.organization.service.IDingOrganizationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** * @author liuxinxin * @date 2023/1/13 下午2:55 @@ -11,7 +24,34 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class OrganizationManage { -// private final + private final IDingOrganizationService iDingOrganizationService; + + public PageVo organizationList(ReqOrganizationListPO reqOrganizationListPO) { + String orgName = reqOrganizationListPO.getOrgName(); + + Page page = iDingOrganizationService + .page(new Page<>(reqOrganizationListPO.getPageNumber(), reqOrganizationListPO.getPageSize()) + , Wrappers.lambdaQuery(DingOrganization.class) + .like(StringUtils.isNotBlank(orgName), DingOrganization::getOrganizationName, orgName)); + + long total = page.getTotal(); + List records = page.getRecords(); + + List resVOList = new ArrayList<>(); + if (CollUtil.isNotEmpty(records)) { + resVOList = records.stream().map(r -> { + ResOrganizationListVO resOrganizationListVO = new ResOrganizationListVO(); + resOrganizationListVO.setOrgCode(r.getOrganizationCode()); + resOrganizationListVO.setOrgName(r.getOrganizationName()); + // TODO 补充其他字段 + return resOrganizationListVO; + }).collect(Collectors.toList()); + } + PageVo pageVo = new PageVo<>(); + pageVo.setTotal(total); + pageVo.setRecords(resVOList); + return pageVo; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqOrganizationListPO.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqOrganizationListPO.java new file mode 100644 index 0000000..b0a4e43 --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/po/ReqOrganizationListPO.java @@ -0,0 +1,31 @@ +package com.ningdatech.pmapi.organization.model.po; + +import com.ningdatech.basic.model.PagePo; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuxinxin + * @date 2023/2/16 上午11:50 + */ +@Data +@ApiModel("组织列表 请求PO") +public class ReqOrganizationListPO extends PagePo { + + @ApiModelProperty("单位名称") + private String orgName; + + @ApiModelProperty("浙政钉编码") + private String orgCode; + + @ApiModelProperty("所属区域id") + private String regionId; + + @ApiModelProperty("是否为主管单位") + private Boolean isCompetentUnit; + + @ApiModelProperty("是否为上级条线主管单位") + private Boolean isSuperiorLineCompetentUnit; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/ResOrganizationListVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/ResOrganizationListVO.java new file mode 100644 index 0000000..89007ef --- /dev/null +++ b/pmapi/src/main/java/com/ningdatech/pmapi/organization/model/vo/ResOrganizationListVO.java @@ -0,0 +1,38 @@ +package com.ningdatech.pmapi.organization.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author liuxinxin + * @date 2023/2/16 上午11:50 + */ +@Data +@ApiModel("组织列表VO") +public class ResOrganizationListVO { + + public String id; + + @ApiModelProperty("单位名称") + private String orgName; + + @ApiModelProperty("浙政钉编码") + private String orgCode; + + @ApiModelProperty("财政编码") + private String fiscalCode; + + @ApiModelProperty("所属区域id") + private String regionId; + + @ApiModelProperty("所属区域") + private String regionName; + + @ApiModelProperty("是否为主管单位") + private Boolean isCompetentUnit; + + @ApiModelProperty("是否为上级条线主管单位") + private Boolean isSuperiorLineCompetentUnit; + +} diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java index 3f54677..ffc0bb1 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectdeclared/manage/ConstructionPlanManage.java @@ -81,7 +81,7 @@ public class ConstructionPlanManage { //首先要判断 项目当前状态 是不是 方案待申报 VUtils.isTrue(!ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode().equals(projectInfo.getStatus()) || !ProjectStatusEnum.NOT_APPROVED.getCode().equals(projectInfo.getStage())) - .throwMessage("提交失败 该项目不是 待预审状态或者未立项阶段"); + .throwMessage("提交失败 该项目不是 方案待申报状态或者未立项阶段"); // TODO 再判断 该项目是否 真实走完 预审审批 ProcessStartParamsVo params = new ProcessStartParamsVo(); diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java index dd2b85b..1353309 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/enumeration/ProjectStatusEnum.java @@ -54,7 +54,8 @@ public enum ProjectStatusEnum { /** * 项目阶段:已归档 */ - ARCHIVED(30000, "已归档"); + ARCHIVED(30000, "已归档"), + ACCEPTED(30001, "已验收"); private Integer code; private String desc; diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java index acbf29d..6f60913 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/projectlib/manage/ProjectRenewalFundManage.java @@ -1,9 +1,11 @@ package com.ningdatech.pmapi.projectlib.manage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ningdatech.basic.function.VUtils; import com.ningdatech.basic.model.PageVo; import com.ningdatech.basic.util.CollUtils; import com.ningdatech.pmapi.projectlib.enumeration.ProjectRenewalApprovalStatusEnum; +import com.ningdatech.pmapi.projectlib.enumeration.ProjectStatusEnum; import com.ningdatech.pmapi.projectlib.model.dto.ProjectRenewalFundDeclarationDTO; import com.ningdatech.pmapi.projectlib.model.entity.Project; import com.ningdatech.pmapi.projectlib.model.entity.ProjectRenewalFundDeclaration; @@ -90,14 +92,26 @@ public class ProjectRenewalFundManage { * @return */ public Long declared(ProjectRenewalFundDeclarationDTO dto) { + //要判断 项目id 是否 以及状态是 已验收 + Long projectId = dto.getProjectId(); + Project project = projectService.getById(projectId); + VUtils.isTrue(Objects.isNull(project)).throwMessage(String.format("关联的项目【%s】不存在 提交失败!",projectId)); + VUtils.isTrue(!ProjectStatusEnum.ACCEPTED.getCode().equals(project.getStatus()) || + !ProjectStatusEnum.ARCHIVED.getCode().equals(project.getStage())) + .throwMessage("提交失败 该项目不是 已验收状态或者已归档阶段"); ProjectRenewalFundDeclaration declaration = new ProjectRenewalFundDeclaration(); + //如果是重新申报 + if(Objects.nonNull(dto.getId())){ + ProjectRenewalFundDeclaration oldDeclaration = projectRenewalFundDeclarationService.getById(dto.getId()); + VUtils.isTrue(Objects.isNull(oldDeclaration)).throwMessage(String.format("重新申报失败 【%s】 该申报不存在!",dto.getId())); + BeanUtils.copyProperties(oldDeclaration,declaration); + } BeanUtils.copyProperties(dto,declaration); - declaration.setId(null); declaration.setCreateOn(LocalDateTime.now()); declaration.setUpdateOn(LocalDateTime.now()); declaration.setApprovalStatus(ProjectRenewalApprovalStatusEnum.PENDING.name()); - if(!projectRenewalFundDeclarationService.save(declaration)){ - throw new BusinessException("申报失败"); + if(!projectRenewalFundDeclarationService.saveOrUpdate(declaration)){ + throw new BusinessException(String.format("申报失败 【%s】",dto.getId())); } return declaration.getId(); } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java index 683d334..e12d07e 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/controller/UserInfoController.java @@ -55,4 +55,10 @@ public class UserInfoController { userInfoManage.userInfoDetailEdit(reqUserDetailEditPO); } + @ApiOperation(value = "获取当前登陆用户详情信息", notes = "用户详情") + @PostMapping("/current-user-info") + public ResUserDetailVO currentUserInfo() { + return userInfoManage.currentUserInfo(); + } + } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java index 78cd657..31caf14 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/manage/UserInfoManage.java @@ -93,7 +93,7 @@ public class UserInfoManage { return null; } ResUserDetailVO resUserDetailVO = new ResUserDetailVO(); - + resUserDetailVO.setRealName(userInfo.getRealName()); resUserDetailVO.setUserId(userInfo.getId()); resUserDetailVO.setPhoneNo(userInfo.getMobile()); resUserDetailVO.setStatus(userInfo.getAvailable()); @@ -141,6 +141,7 @@ public class UserInfoManage { .accountId(dingEmployeeInfo.getAccountId()) .username(dingEmployeeInfo.getEmployeeName()) .realName(dingEmployeeInfo.getEmployeeName()) + .employeeCode(dingEmployeeInfo.getEmployeeCode()) .available(UserAvailableEnum.DISABLE.name()) .createBy(-1L) .updateBy(-1L) @@ -153,4 +154,7 @@ public class UserInfoManage { } + public ResUserDetailVO currentUserInfo() { + return null; + } } diff --git a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserDetailVO.java b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserDetailVO.java index 7b65b6a..f5badb4 100644 --- a/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserDetailVO.java +++ b/pmapi/src/main/java/com/ningdatech/pmapi/user/model/vo/ResUserDetailVO.java @@ -17,6 +17,9 @@ public class ResUserDetailVO { @ApiModelProperty("userId") private Long userId; + @ApiModelProperty("用户姓名") + private String realName; + @ApiModelProperty("手机号") private String phoneNo; diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java new file mode 100644 index 0000000..61d2527 --- /dev/null +++ b/pmapi/src/test/java/com/ningdatech/pmapi/instance/InstanceTest.java @@ -0,0 +1,28 @@ +package com.ningdatech.pmapi.instance; + +import com.alibaba.fastjson.JSON; +import com.ningdatech.pmapi.AppTests; +import com.wflow.workflow.bean.dto.ProcessInstanceUserDto; +import org.flowable.engine.RuntimeService; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * @Classname InstanceTest + * @Description + * @Date 2023/2/16 14:44 + * @Author PoffyZhang + */ +public class InstanceTest extends AppTests { + + @Autowired + private RuntimeService runtimeService; + + @Test + public void test(){ + String instanceId = "896fa188-96d8-11ed-9539-e2d4e8f16b2f"; + Object user = runtimeService.getVariable(instanceId, + "owner"); + System.out.println(JSON.toJSONString(user)); + } +} diff --git a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java index 1819a47..a6ccbcd 100644 --- a/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java +++ b/pmapi/src/test/java/com/ningdatech/pmapi/statemachine/StateMachineTest.java @@ -1,5 +1,6 @@ package com.ningdatech.pmapi.statemachine; +import com.alibaba.fastjson.JSON; import com.ningdatech.pmapi.AppTests; import com.ningdatech.pmapi.common.statemachine.util.StateMachineUtils; import com.ningdatech.pmapi.common.statemachine.event.ProjectStatusChangeEvent; @@ -24,9 +25,11 @@ public class StateMachineTest extends AppTests { @Test public void stateMachineTest() throws Exception { Project project = new Project(); - project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); + project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); + project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); project.setDeclareAmount(BigDecimal.valueOf(2000)); // stateMachineUtils.execute(project, ProjectStatusChangeEvent.UNDER_INTERNAL_PASS); stateMachineUtils.execute(project, stateMachineUtils.getProjectStatusPassEvent(project.getStatus())); + System.out.println(String.format("project:%s", JSON.toJSONString(project))); } }