@@ -9,9 +9,6 @@ | |||||
</parent> | </parent> | ||||
<artifactId>hz-pm-api</artifactId> | <artifactId>hz-pm-api</artifactId> | ||||
<version>1.0.0</version> | <version>1.0.0</version> | ||||
<properties> | |||||
<jjwt.version>0.11.5</jjwt.version> | |||||
</properties> | |||||
<dependencies> | <dependencies> | ||||
<dependency> | <dependency> | ||||
@@ -108,12 +105,6 @@ | |||||
<groupId>org.apache.poi</groupId> | <groupId>org.apache.poi</groupId> | ||||
<artifactId>poi-ooxml</artifactId> | <artifactId>poi-ooxml</artifactId> | ||||
</dependency> | </dependency> | ||||
<!-- 阿里云oss --> | |||||
<dependency> | |||||
<groupId>com.aliyun.oss</groupId> | |||||
<artifactId>aliyun-sdk-oss</artifactId> | |||||
<version>3.15.0</version> | |||||
</dependency> | |||||
<dependency> | <dependency> | ||||
<groupId>junit</groupId> | <groupId>junit</groupId> | ||||
<artifactId>junit</artifactId> | <artifactId>junit</artifactId> | ||||
@@ -128,12 +119,6 @@ | |||||
<groupId>org.springframework.boot</groupId> | <groupId>org.springframework.boot</groupId> | ||||
<artifactId>spring-boot-starter-test</artifactId> | <artifactId>spring-boot-starter-test</artifactId> | ||||
</dependency> | </dependency> | ||||
<!--引入jwt--> | |||||
<dependency> | |||||
<groupId>com.auth0</groupId> | |||||
<artifactId>java-jwt</artifactId> | |||||
<version>3.10.3</version> | |||||
</dependency> | |||||
<dependency> | <dependency> | ||||
<groupId>org.springframework.boot</groupId> | <groupId>org.springframework.boot</groupId> | ||||
<artifactId>spring-boot-configuration-processor</artifactId> | <artifactId>spring-boot-configuration-processor</artifactId> | ||||
@@ -274,6 +259,13 @@ | |||||
</properties> | </properties> | ||||
</profile> | </profile> | ||||
<profile> | <profile> | ||||
<id>test</id> | |||||
<properties> | |||||
<!--使用${environment}获取值--> | |||||
<environment>test</environment> | |||||
</properties> | |||||
</profile> | |||||
<profile> | |||||
<id>prod</id> | <id>prod</id> | ||||
<properties> | <properties> | ||||
<environment>prod</environment> | <environment>prod</environment> | ||||
@@ -39,14 +39,4 @@ public interface RegionLimitHelper { | |||||
*/ | */ | ||||
RegionContainsBO getContainsRegionBo(Integer regionLevel, String regionCode); | RegionContainsBO getContainsRegionBo(Integer regionLevel, String regionCode); | ||||
/** | |||||
* 根据专家管理员用户id 获取专家管理员管辖区域列表 | |||||
* | |||||
* @param expertAdminUserId 专家管理员用户id | |||||
* @return | |||||
*/ | |||||
List<RegionContainsBO> getExpertAdminContainsRegion(Long expertAdminUserId); | |||||
} | } |
@@ -1,7 +1,9 @@ | |||||
package com.hz.pm.api.common.helper; | package com.hz.pm.api.common.helper; | ||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import cn.hutool.core.util.NumberUtil; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import java.util.Collection; | import java.util.Collection; | ||||
import java.util.List; | import java.util.List; | ||||
@@ -14,18 +16,17 @@ import java.util.List; | |||||
public interface UserInfoHelper { | public interface UserInfoHelper { | ||||
/** | |||||
* 根据用户id 获取 用户所属组织code organizationCode | |||||
* | |||||
* @param userId \ | |||||
* @return \ | |||||
*/ | |||||
String getOrganizationCode(Long userId); | |||||
UserFullInfoDTO getUserFullInfoByMhUserIdOrOpenId(String mhUserId); | UserFullInfoDTO getUserFullInfoByMhUserIdOrOpenId(String mhUserId); | ||||
UserFullInfoDTO getUserFullInfo(Long userId); | UserFullInfoDTO getUserFullInfo(Long userId); | ||||
default UserFullInfoDTO getUserFullInfo(String userId) { | |||||
if (NumberUtil.isLong(userId)) { | |||||
return getUserFullInfo(Long.parseLong(userId)); | |||||
} | |||||
return null; | |||||
} | |||||
UserFullInfoDTO getUserFullInfo(UserInfo userInfo); | UserFullInfoDTO getUserFullInfo(UserInfo userInfo); | ||||
List<UserFullInfoDTO> getUserFullInfos(List<UserInfo> userInfos); | List<UserFullInfoDTO> getUserFullInfos(List<UserInfo> userInfos); | ||||
@@ -39,16 +40,11 @@ public interface UserInfoHelper { | |||||
*/ | */ | ||||
boolean isSuperOrRegionAdmin(Long userId); | boolean isSuperOrRegionAdmin(Long userId); | ||||
UserFullInfoDTO getUserFullInfoByEmployeeCode(String employeeCode); | |||||
List<UserFullInfoDTO> listUserFullInfoByUserIds(Collection<Long> userIds); | |||||
List<UserFullInfoDTO> getUserFullInfoByEmployeeCodes(Collection<String> employeeCodes); | |||||
/** | |||||
* 获取用户任职所在单位code \ | |||||
* | |||||
* @return \ | |||||
*/ | |||||
String getUserEmpPosUnitCode(Long userId); | |||||
default List<UserFullInfoDTO> listUserFullInfoByUserIds(List<String> userIds){ | |||||
List<Long> userIdsLong = CollUtils.convert(userIds, Long::parseLong); | |||||
return listUserFullInfoByUserIds(userIdsLong); | |||||
} | |||||
String getMainOrgCode(String empPosUnitCode); | |||||
} | } |
@@ -1,15 +1,10 @@ | |||||
package com.hz.pm.api.common.helper.impl; | package com.hz.pm.api.common.helper.impl; | ||||
import cn.hutool.core.collection.CollectionUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | import com.hz.pm.api.common.helper.RegionCacheHelper; | ||||
import com.hz.pm.api.common.helper.basic.AbstractRegionLimitHelper; | import com.hz.pm.api.common.helper.basic.AbstractRegionLimitHelper; | ||||
import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | import com.hz.pm.api.expert.service.IExpertUserFullInfoService; | ||||
import com.hz.pm.api.meta.model.bo.RegionContainsBO; | import com.hz.pm.api.meta.model.bo.RegionContainsBO; | ||||
import com.hz.pm.api.sys.model.entity.Region; | |||||
import com.hz.pm.api.sys.service.IRegionService; | import com.hz.pm.api.sys.service.IRegionService; | ||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
import org.apache.commons.collections4.CollectionUtils; | import org.apache.commons.collections4.CollectionUtils; | ||||
import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
@@ -28,8 +23,6 @@ import java.util.Objects; | |||||
@Component | @Component | ||||
public class RegionLimitHelperImpl extends AbstractRegionLimitHelper { | public class RegionLimitHelperImpl extends AbstractRegionLimitHelper { | ||||
private static final Logger logger = LoggerFactory.getLogger(RegionLimitHelperImpl.class); | |||||
public RegionLimitHelperImpl(RegionCacheHelper regionCache, IExpertUserFullInfoService expertUserFullInfoService | public RegionLimitHelperImpl(RegionCacheHelper regionCache, IExpertUserFullInfoService expertUserFullInfoService | ||||
, IUserInfoService iUserInfoService, IRegionService regionService) { | , IUserInfoService iUserInfoService, IRegionService regionService) { | ||||
super(regionCache, expertUserFullInfoService, iUserInfoService, regionService); | super(regionCache, expertUserFullInfoService, iUserInfoService, regionService); | ||||
@@ -91,29 +84,4 @@ public class RegionLimitHelperImpl extends AbstractRegionLimitHelper { | |||||
return regionContains; | return regionContains; | ||||
} | } | ||||
@Override | |||||
public List<RegionContainsBO> getExpertAdminContainsRegion(Long expertAdminUserId) { | |||||
if (Objects.isNull(expertAdminUserId)) { | |||||
logger.error("getExpertAdminContainsRegion expertAdminUserId is null"); | |||||
return new ArrayList<>(); | |||||
} | |||||
UserInfo userInfo = iUserInfoService.getById(expertAdminUserId); | |||||
if (Objects.isNull(userInfo) || StringUtils.isBlank(userInfo.getRegionCode())) { | |||||
logger.error("getExpertAdminContainsRegion userInfo is null Or regionCode is null"); | |||||
return new ArrayList<>(); | |||||
} | |||||
String regionCode = userInfo.getRegionCode(); | |||||
List<Region> regionList = regionService.list(Wrappers.lambdaQuery(Region.class) | |||||
.eq(Region::getRegionCode, regionCode) | |||||
.orderByDesc(Region::getRegionLevel)); | |||||
Region region = regionList.get(0); | |||||
Collection<String> regionCodes = regionCache | |||||
.listChildRegionCodeList(region.getRegionCode(), region.getRegionLevel()); | |||||
RegionContainsBO regionContainsBO = new RegionContainsBO(); | |||||
regionContainsBO.setContainsRegionCodeList(new ArrayList<>(regionCodes)); | |||||
regionContainsBO.setParentRegionTreeLevel(region.getRegionLevel()); | |||||
return CollectionUtil.toList(regionContainsBO); | |||||
} | |||||
} | } |
@@ -1,31 +1,28 @@ | |||||
package com.hz.pm.api.common.helper.impl; | package com.hz.pm.api.common.helper.impl; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.collection.CollectionUtil; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.organization.model.entity.DingEmployeeInfo; | |||||
import com.hz.pm.api.organization.model.entity.DingOrganization; | |||||
import com.hz.pm.api.organization.service.IDingEmployeeInfoService; | |||||
import com.hz.pm.api.organization.service.IDingOrganizationService; | |||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.sys.mapper.RoleMapper; | import com.hz.pm.api.sys.mapper.RoleMapper; | ||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.model.entity.UserRole; | import com.hz.pm.api.sys.model.entity.UserRole; | ||||
import com.hz.pm.api.sys.service.IUserRoleService; | import com.hz.pm.api.sys.service.IUserRoleService; | ||||
import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | |||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | |||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.*; | |||||
import java.util.Collection; | |||||
import java.util.Collections; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import java.util.stream.Stream; | |||||
/** | /** | ||||
* @author liuxinxin | * @author liuxinxin | ||||
@@ -37,22 +34,14 @@ public class UserInfoHelperImpl implements UserInfoHelper { | |||||
private final IUserInfoService userInfoService; | private final IUserInfoService userInfoService; | ||||
private final IDingEmployeeInfoService iDingEmployeeInfoService; | |||||
private final IDingOrganizationService iDingOrganizationService; | |||||
private final IUserRoleService iUserRoleService; | private final IUserRoleService iUserRoleService; | ||||
private final RoleMapper roleMapper; | private final RoleMapper roleMapper; | ||||
@Override | @Override | ||||
public String getOrganizationCode(Long userId) { | |||||
UserFullInfoDTO userFullInfo = getUserFullInfo(userId); | |||||
return userFullInfo.getOrganizationCode(); | |||||
} | |||||
@Override | |||||
public UserFullInfoDTO getUserFullInfoByMhUserIdOrOpenId(String mhUserId) { | public UserFullInfoDTO getUserFullInfoByMhUserIdOrOpenId(String mhUserId) { | ||||
LambdaQueryWrapper<UserInfo> query = Wrappers.lambdaQuery(UserInfo.class) | LambdaQueryWrapper<UserInfo> query = Wrappers.lambdaQuery(UserInfo.class) | ||||
.eq(UserInfo::getMhUserId, mhUserId) | .eq(UserInfo::getMhUserId, mhUserId) | ||||
.or(q1 -> q1.eq(UserInfo::getWechatOpenId,mhUserId)); | |||||
.or(q1 -> q1.eq(UserInfo::getWechatOpenId, mhUserId)); | |||||
UserInfo userInfo = userInfoService.getOne(query); | UserInfo userInfo = userInfoService.getOne(query); | ||||
if (Objects.isNull(userInfo)) { | if (Objects.isNull(userInfo)) { | ||||
return null; | return null; | ||||
@@ -74,65 +63,25 @@ public class UserInfoHelperImpl implements UserInfoHelper { | |||||
@Override | @Override | ||||
public UserFullInfoDTO getUserFullInfo(UserInfo userInfo) { | public UserFullInfoDTO getUserFullInfo(UserInfo userInfo) { | ||||
UserFullInfoDTO userFullInfo = new UserFullInfoDTO(); | UserFullInfoDTO userFullInfo = new UserFullInfoDTO(); | ||||
// 获取浙政钉雇员信息 组织信息 | |||||
String employeeCode = userInfo.getEmployeeCode(); | |||||
if (StringUtils.isNotBlank(employeeCode)) { | |||||
List<DingEmployeeInfo> dingEmployeeInfoList = iDingEmployeeInfoService | |||||
.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
.eq(DingEmployeeInfo::getEmployeeCode, employeeCode) | |||||
.eq(DingEmployeeInfo::getMainJob, "true")); | |||||
DingEmployeeInfo dingEmployeeInfo = dingEmployeeInfoList.get(0); | |||||
// 装配用户任职所在单位 | |||||
String empPosUnitCode = dingEmployeeInfo.getEmpPosUnitCode(); | |||||
if (StringUtils.isNotBlank(empPosUnitCode)) { | |||||
DingOrganization dingOrganization = iDingOrganizationService.getByOrgCode(empPosUnitCode); | |||||
if (Objects.nonNull(dingOrganization)) { | |||||
userFullInfo.setEmpPosUnitCode(empPosUnitCode); | |||||
userFullInfo.setEmpPosUnitName(dingOrganization.getOrganizationName()); | |||||
userFullInfo.setRegionCode(dingOrganization.getDivisionCode()); | |||||
} | |||||
} | |||||
// 装配用户所在orgCode | |||||
String organizationCode = dingEmployeeInfo.getOrganizationCode(); | |||||
List<DingOrganization> dingOrganizationList = iDingOrganizationService.list(Wrappers | |||||
.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getOrganizationCode, organizationCode)); | |||||
if (CollectionUtil.isNotEmpty(dingOrganizationList)) { | |||||
DingOrganization dingOrganization = dingOrganizationList.get(0); | |||||
userFullInfo.setOrganizationCode(dingOrganization.getOrganizationCode()); | |||||
userFullInfo.setOrganizationName(dingOrganization.getOrganizationName()); | |||||
// 测试使用 | |||||
userFullInfo.setRegionLevel(3); | |||||
} | |||||
} | |||||
List<Role> roleList = new ArrayList<>(); | |||||
// 获取用户角色列表信息 | // 获取用户角色列表信息 | ||||
List<UserRole> userRoleList = iUserRoleService | |||||
.list(Wrappers.lambdaQuery(UserRole.class) | |||||
.eq(UserRole::getUserId, userInfo.getId())); | |||||
if (CollectionUtil.isNotEmpty(userRoleList)) { | |||||
List<UserRole> userRoleList = iUserRoleService.listByUserId(userInfo.getId()); | |||||
if (CollUtil.isNotEmpty(userRoleList)) { | |||||
List<Long> roleIdList = userRoleList.stream() | List<Long> roleIdList = userRoleList.stream() | ||||
.map(UserRole::getRoleId).distinct() | .map(UserRole::getRoleId).distinct() | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
roleList = roleMapper.selectBatchIds(roleIdList); | |||||
userFullInfo.setUserRoleList(roleMapper.selectBatchIds(roleIdList)); | |||||
} | } | ||||
userFullInfo.setUserRoleList(roleList); | |||||
// 装配用户任职所在单位 | |||||
// 装配返回 | // 装配返回 | ||||
userFullInfo.setUserId(userInfo.getId()); | userFullInfo.setUserId(userInfo.getId()); | ||||
userFullInfo.setMhUserId(userInfo.getMhUserId()); | |||||
userFullInfo.setIdentifier(userInfo.getRealName()); | userFullInfo.setIdentifier(userInfo.getRealName()); | ||||
userFullInfo.setRealName(userInfo.getRealName()); | userFullInfo.setRealName(userInfo.getRealName()); | ||||
userFullInfo.setEmployeeCode(employeeCode); | |||||
userFullInfo.setMhUnitId(userInfo.getMhUnitId()); | |||||
userFullInfo.setMhUnitName(userInfo.getMhUnitName()); | |||||
userFullInfo.setUsername(userInfo.getRealName()); | userFullInfo.setUsername(userInfo.getRealName()); | ||||
userFullInfo.setMobile(userInfo.getMobile()); | userFullInfo.setMobile(userInfo.getMobile()); | ||||
userFullInfo.setAccountId(userInfo.getAccountId()); | userFullInfo.setAccountId(userInfo.getAccountId()); | ||||
String available = userInfo.getAvailable(); | String available = userInfo.getAvailable(); | ||||
if (StringUtils.isNotBlank(available)) { | if (StringUtils.isNotBlank(available)) { | ||||
userFullInfo.setAvailable(UserAvailableEnum.valueOf(available)); | userFullInfo.setAvailable(UserAvailableEnum.valueOf(available)); | ||||
@@ -151,60 +100,20 @@ public class UserInfoHelperImpl implements UserInfoHelper { | |||||
if (CollUtil.isEmpty(userInfos)) { | if (CollUtil.isEmpty(userInfos)) { | ||||
return Collections.emptyList(); | return Collections.emptyList(); | ||||
} | } | ||||
Map<String, UserInfo> userMap = userInfos.stream().collect(Collectors.toMap(UserInfo::getEmployeeCode, e -> e)); | |||||
// 获取浙政钉雇员信息 组织信息 | |||||
List<String> employeeCodes = userInfos.stream().map(UserInfo::getEmployeeCode).collect(Collectors.toList()); | |||||
List<DingEmployeeInfo> dingEmployeeInfoList = iDingEmployeeInfoService | |||||
.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
.in(DingEmployeeInfo::getEmployeeCode, employeeCodes) | |||||
.eq(DingEmployeeInfo::getMainJob, "true")); | |||||
if (CollUtil.isEmpty(dingEmployeeInfoList)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
// 装配用户任职所在单位 | |||||
List<String> empPosUnitCodes = dingEmployeeInfoList.stream().map(DingEmployeeInfo::getEmpPosUnitCode).collect(Collectors.toList()); | |||||
List<String> orgCodes = dingEmployeeInfoList.stream().map(DingEmployeeInfo::getOrganizationCode).collect(Collectors.toList()); | |||||
List<String> allOrgCodes = Stream.concat(empPosUnitCodes.stream(), orgCodes.stream()).collect(Collectors.toList()); | |||||
if (CollUtil.isEmpty(allOrgCodes)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
List<DingOrganization> dingOrganizations = iDingOrganizationService.listByCodes(allOrgCodes); | |||||
if (CollUtil.isEmpty(dingOrganizations)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
Map<String, DingOrganization> orgMap = dingOrganizations.stream().collect(Collectors.toMap(DingOrganization::getOrganizationCode, d -> d)); | |||||
return dingEmployeeInfoList.stream().map(e -> { | |||||
return userInfos.stream().map(userInfo -> { | |||||
UserFullInfoDTO userFullInfo = new UserFullInfoDTO(); | UserFullInfoDTO userFullInfo = new UserFullInfoDTO(); | ||||
if (orgMap.containsKey(e.getEmpPosUnitCode())) { | |||||
DingOrganization organization = orgMap.get(e.getEmpPosUnitCode()); | |||||
userFullInfo.setEmpPosUnitCode(e.getEmpPosUnitCode()); | |||||
userFullInfo.setEmpPosUnitName(organization.getOrganizationName()); | |||||
userFullInfo.setRegionCode(organization.getDivisionCode()); | |||||
} | |||||
if (orgMap.containsKey(e.getOrganizationCode())) { | |||||
DingOrganization organization = orgMap.get(e.getOrganizationCode()); | |||||
userFullInfo.setOrganizationCode(organization.getOrganizationCode()); | |||||
userFullInfo.setOrganizationName(organization.getOrganizationName()); | |||||
// 测试使用 | |||||
userFullInfo.setRegionLevel(3); | |||||
} | |||||
if (userMap.containsKey(e.getEmployeeCode())) { | |||||
UserInfo userInfo = userMap.get(e.getEmployeeCode()); | |||||
// 装配返回 | |||||
userFullInfo.setUserId(userInfo.getId()); | |||||
userFullInfo.setIdentifier(userInfo.getRealName()); | |||||
userFullInfo.setRealName(userInfo.getRealName()); | |||||
userFullInfo.setEmployeeCode(e.getEmployeeCode()); | |||||
userFullInfo.setUsername(userInfo.getRealName()); | |||||
userFullInfo.setMobile(userInfo.getMobile()); | |||||
userFullInfo.setAccountId(userInfo.getAccountId()); | |||||
String available = userInfo.getAvailable(); | |||||
if (StringUtils.isNotBlank(available)) { | |||||
userFullInfo.setAvailable(UserAvailableEnum.valueOf(available)); | |||||
} | |||||
// 装配返回 | |||||
userFullInfo.setMhUnitName(userInfo.getMhUnitName()); | |||||
userFullInfo.setMhUnitId(userInfo.getMhUnitId()); | |||||
userFullInfo.setUserId(userInfo.getId()); | |||||
userFullInfo.setIdentifier(userInfo.getRealName()); | |||||
userFullInfo.setRealName(userInfo.getRealName()); | |||||
userFullInfo.setUsername(userInfo.getRealName()); | |||||
userFullInfo.setMobile(userInfo.getMobile()); | |||||
userFullInfo.setAccountId(userInfo.getAccountId()); | |||||
String available = userInfo.getAvailable(); | |||||
if (StrUtils.isNotBlank(available)) { | |||||
userFullInfo.setAvailable(UserAvailableEnum.valueOf(available)); | |||||
} | } | ||||
return userFullInfo; | return userFullInfo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
@@ -231,31 +140,9 @@ public class UserInfoHelperImpl implements UserInfoHelper { | |||||
} | } | ||||
@Override | @Override | ||||
public UserFullInfoDTO getUserFullInfoByEmployeeCode(String employeeCode) { | |||||
UserInfo userInfo = userInfoService.getUserInfoByEmployeeCode(employeeCode); | |||||
return getUserFullInfo(userInfo); | |||||
} | |||||
@Override | |||||
public List<UserFullInfoDTO> getUserFullInfoByEmployeeCodes(Collection<String> employeeCodes) { | |||||
List<UserInfo> userInfos = userInfoService.getUserInfoByEmployeeCodes(employeeCodes); | |||||
public List<UserFullInfoDTO> listUserFullInfoByUserIds(Collection<Long> userIds) { | |||||
List<UserInfo> userInfos = userInfoService.listByIds(userIds); | |||||
return getUserFullInfos(userInfos); | return getUserFullInfos(userInfos); | ||||
} | } | ||||
@Override | |||||
public String getUserEmpPosUnitCode(Long userId) { | |||||
UserFullInfoDTO userFullInfo = getUserFullInfo(userId); | |||||
return userFullInfo.getEmpPosUnitCode(); | |||||
} | |||||
@Override | |||||
public String getMainOrgCode(String empPosUnitCode) { | |||||
DingOrganization org = iDingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getOrganizationCode, empPosUnitCode) | |||||
.last(BizConst.LIMIT_1)); | |||||
if(Objects.isNull(org)){ | |||||
return null; | |||||
} | |||||
return org.getParentCode(); | |||||
} | |||||
} | } |
@@ -65,6 +65,7 @@ public class BizConst { | |||||
* 浙江省的region_id | * 浙江省的region_id | ||||
*/ | */ | ||||
public static final long ZJ_REGION_CODE = 330000L; | public static final long ZJ_REGION_CODE = 330000L; | ||||
public static final String NINE_AREA_CODE_LAST = "000"; | public static final String NINE_AREA_CODE_LAST = "000"; | ||||
/** | /** | ||||
@@ -25,7 +25,7 @@ public interface RegionConst { | |||||
//---------------------------------------地区编码(缩写RC)------------------------------------------------------------- | //---------------------------------------地区编码(缩写RC)------------------------------------------------------------- | ||||
/** | /** | ||||
* 丽水行政区划编码 | |||||
* 杭州市行政区划编码 | |||||
*/ | */ | ||||
String RC_HZ = "330100"; | String RC_HZ = "330100"; | ||||
//丽水开发区 | //丽水开发区 | ||||
@@ -7,8 +7,10 @@ package com.hz.pm.api.common.model.constant; | |||||
public class StateMachineConst { | public class StateMachineConst { | ||||
private StateMachineConst() { | |||||
} | |||||
public static final String PROJECT_DECLARE = "projectDeclare"; | public static final String PROJECT_DECLARE = "projectDeclare"; | ||||
public static final String APPLICATION_DECLARE = "applicationDeclare"; | public static final String APPLICATION_DECLARE = "applicationDeclare"; | ||||
public static final String LI_SHUI_CITY_AREA_CODE = "331100"; | |||||
} | } |
@@ -1,7 +1,7 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | package com.hz.pm.api.common.statemachine.action; | ||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | import com.hz.pm.api.common.model.constant.StateMachineConst; | ||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.builder.ProjectDeclareStateMachineBuilderImpl; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
@@ -17,8 +17,8 @@ import org.springframework.statemachine.annotation.WithStateMachine; | |||||
* @since 2023/02/08 13:48 | * @since 2023/02/08 13:48 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@WithStateMachine(id = RegionContant.LS_SBJ_CODE) | |||||
public class ProjectDeclareSBJAction { | |||||
@WithStateMachine(id = ProjectDeclareStateMachineBuilderImpl.MACHINE_ID) | |||||
public class HzProjectDeclareAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | ||||
@@ -1,273 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_SBJ_CODE) | |||||
public class ProjectDeclareAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,6 +1,8 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | package com.hz.pm.api.common.statemachine.action; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.json.JSONUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; | import com.hz.pm.api.common.model.constant.ProjectDeclareConst; | ||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | import com.hz.pm.api.common.model.constant.StateMachineConst; | ||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
@@ -32,7 +34,7 @@ public class ProjectDeclareChoiceAction implements Action<ProjectStatusEnum, Pro | |||||
public void execute(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | public void execute(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | ||||
log.info(String.valueOf(stateContext.getTarget().getId())); | log.info(String.valueOf(stateContext.getTarget().getId())); | ||||
ProjectStatusEnum projectStatusEnum = stateContext.getTarget().getId(); | ProjectStatusEnum projectStatusEnum = stateContext.getTarget().getId(); | ||||
switch (projectStatusEnum){ | |||||
switch (projectStatusEnum) { | |||||
case PENDING_PREQUALIFICATION_CHOICE: | case PENDING_PREQUALIFICATION_CHOICE: | ||||
preDeclareChoice(stateContext); | preDeclareChoice(stateContext); | ||||
break; | break; | ||||
@@ -48,49 +50,51 @@ public class ProjectDeclareChoiceAction implements Action<ProjectStatusEnum, Pro | |||||
} | } | ||||
private void approvedAfterChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | private void approvedAfterChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | ||||
List<ProjectApplication> projectApplications = stateContext.getMessage().getHeaders().get(APPLICATION_DECLARE, List.class); | |||||
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | |||||
log.info("立项批复之后,项目的状态为:{}" + project.getStatus()); | |||||
Project project = getProject(stateContext); | |||||
List<ProjectApplication> projectApplications = getProjectApplication(stateContext); | |||||
log.info("立项批复之后,项目的状态为:{}", project.getStatus()); | |||||
// 判断 是否有初次创建的应用 | // 判断 是否有初次创建的应用 | ||||
if (CollUtil.isEmpty(projectApplications)){ | |||||
if (CollUtil.isEmpty(projectApplications)) { | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | ||||
} | } | ||||
final Boolean[] isFirstApp = {Boolean.FALSE}; | |||||
projectApplications.stream().forEach(app -> { | |||||
final boolean[] isFirstApp = {Boolean.FALSE}; | |||||
projectApplications.forEach(app -> { | |||||
Integer isFirst = app.getIsFirst(); | Integer isFirst = app.getIsFirst(); | ||||
if(isFirst.equals(CommonEnum.YES.getCode())){ | |||||
if (isFirst.equals(CommonEnum.YES.getCode())) { | |||||
isFirstApp[0] = Boolean.TRUE; | isFirstApp[0] = Boolean.TRUE; | ||||
} | } | ||||
}); | }); | ||||
if(isFirstApp[0]){ | |||||
if (isFirstApp[0]) { | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_APP_REGISTER.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_APP_REGISTER.getCode()); | ||||
}else{ | |||||
} else { | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | ||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | ||||
} | } | ||||
} | } | ||||
private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | private void preDeclareChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | ||||
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | |||||
log.info("预审申报事件之前,项目的状态为:{}"+project.getStatus()); | |||||
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project, | |||||
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS.getCode()); | |||||
}else { | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
Project project = getProject(stateContext); | |||||
log.info("预审申报事件之前,项目的状态为:{}", project.getStatus()); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | } | ||||
private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | private void preWithDrawChoice(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | ||||
Project project = getProject(stateContext); | |||||
log.info("预审中撤回事件之前,项目的状态为:{}", project.getStatus()); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
private Project getProject(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | Project project = stateContext.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | ||||
log.info("预审中撤回事件之前,项目的状态为:{}"+project.getStatus()); | |||||
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project, | |||||
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
}else { | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
Assert.notNull(project, "项目信息获取失败%s", JSONUtil.toJsonStr(stateContext.getMessage())); | |||||
return project; | |||||
} | |||||
@SuppressWarnings("unchecked") | |||||
private List<ProjectApplication> getProjectApplication(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> stateContext) { | |||||
return stateContext.getMessage().getHeaders().get(APPLICATION_DECLARE, List.class); | |||||
} | } | ||||
} | } |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 景宁畲族自治县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_JN_CODE) | |||||
public class ProjectDeclareJNAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 缙云县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_JY_CODE) | |||||
public class ProjectDeclareJYAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 开发区 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_KFQ_CODE) | |||||
public class ProjectDeclareKFBAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 莲都区 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_LD_CODE) | |||||
public class ProjectDeclareLDAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* ;龙泉市 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_LQ_CODE) | |||||
public class ProjectDeclareLQAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "TO_BE_APPROVED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 青田县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_QT_CODE) | |||||
public class ProjectDeclareQTAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 庆元县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_QY_CODE) | |||||
public class ProjectDeclareQYAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,287 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 遂昌县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_SC_CODE) | |||||
public class ProjectDeclareSCAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "APPROVED_AFTER_CHOICE") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.APPROVED_AFTER_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APP_REGISTER", target = "TO_BE_PURCHASED") | |||||
public void REGISTER_APP(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,279 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 松阳县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_SY_CODE) | |||||
public class ProjectDeclareSYAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -1,280 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.action; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.messaging.Message; | |||||
import org.springframework.statemachine.annotation.OnTransition; | |||||
import org.springframework.statemachine.annotation.WithStateMachine; | |||||
/** | |||||
* 项目申报状态机action集合类 | |||||
* 云和县 | |||||
* @author CMM | |||||
* @since 2023/02/08 13:48 | |||||
*/ | |||||
@Slf4j | |||||
@WithStateMachine(id = RegionContant.LS_YH_CODE) | |||||
public class ProjectDeclareYHAction { | |||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "PENDING_PREQUALIFICATION") | |||||
public void UNDER_INTERNAL_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "UNDER_INTERNAL_AUDIT_NOT_PASS") | |||||
public void UNDER_INTERNAL_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT", target = "TO_BE_DECLARED") | |||||
public void UNDER_INTERNAL_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_INTERNAL_AUDIT_NOT_PASS", target = "UNDER_INTERNAL_AUDIT") | |||||
public void UNDER_INTERNAL_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PENDING_PREQUALIFICATION", target = "UNDER_INTERNAL_AUDIT") | |||||
public void PENDING_PREQUALIFICATION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_INTERNAL_AUDIT.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS", target = "PRE_APPLYING") | |||||
public void PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED") | |||||
public void PROVINCIAL_DEPARTMENT_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS", target = "PENDING_PREQUALIFICATION") | |||||
public void JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void PRELIMINARY_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_FAILED") | |||||
public void PRELIMINARY_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "PREQUALIFICATION_FAILED", target = "PENDING_PREQUALIFICATION_CHOICE") | |||||
public void PRELIMINARY_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "PRE_APPLYING", target = "PREQUALIFICATION_WITHDRAW_CHOICE") | |||||
public void PRE_APPLYING_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "IN_THE_ANNUAL_PLAN") | |||||
public void DEPARTMENT_UNITED_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "DEPARTMENT_JOINT_REVIEW_FAILED") | |||||
public void DEPARTMENT_UNITED_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "DEPARTMENT_JOINT_REVIEW", target = "PRE_APPLYING") | |||||
public void DEPARTMENT_JOINT_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PRE_APPLYING.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "PLAN_TO_BE_DECLARED") | |||||
public void ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "BE_SUSPENDED") | |||||
public void ANNUAL_PLAN_SUSPEND(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.BE_SUSPENDED.getCode()); | |||||
} | |||||
@OnTransition(source = "IN_THE_ANNUAL_PLAN", target = "DEPARTMENT_JOINT_REVIEW") | |||||
public void IN_THE_ANNUAL_PLAN_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "PLAN_TO_BE_DECLARED", target = "IN_THE_ANNUAL_PLAN") | |||||
public void PLAN_TO_DECLARE_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.IN_THE_ANNUAL_PLAN.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void DECLARE_PLAN_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "TO_BE_APPROVED") | |||||
public void PLAN_REVIEW_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "SCHEME_REVIEW_FAILED") | |||||
public void PLAN_REVIEW_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_REVIEW_FAILED", target = "SCHEME_UNDER_REVIEW") | |||||
public void PLAN_REVIEW_REJECT_RESUBMIT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "SCHEME_UNDER_REVIEW", target = "PLAN_TO_BE_DECLARED") | |||||
public void SCHEME_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.PLAN_TO_BE_DECLARED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "TO_BE_PURCHASED") | |||||
public void PROJECT_APPROVAL(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待立项批复批复后,项目一级状态变更为已立项 | |||||
project.setStage(ProjectStatusEnum.PROJECT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_APPROVED", target = "SCHEME_UNDER_REVIEW") | |||||
public void TO_BE_APPROVED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.SCHEME_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "OPERATION") | |||||
public void PURCHASE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.OPERATION.getCode()); | |||||
} | |||||
@OnTransition(source = "OPERATION", target = "UNDER_CONSTRUCTION") | |||||
public void START_TO_WORK(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_PURCHASED", target = "TO_BE_APPROVED") | |||||
public void TO_BE_PURCHASED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 待采购状态撤回后,项目一级状态回退到未立项 | |||||
project.setStage(ProjectStatusEnum.NOT_APPROVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_APPROVED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_FINALLY_INSPECTED") | |||||
public void PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode()); | |||||
} | |||||
@OnTransition(source = "UNDER_CONSTRUCTION", target = "TO_BE_PURCHASED") | |||||
public void UNDER_CONSTRUCTION_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.TO_BE_PURCHASED.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "TO_BE_FINALLY_INSPECTED", target = "UNDER_CONSTRUCTION") | |||||
public void TO_BE_FINALLY_INSPECTED_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "ARCHIVED") | |||||
public void FINAL_ACCEPTANCE_PASS(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
// 终验审核通过后,项目一级状态变更为已归档 | |||||
project.setStage(ProjectStatusEnum.ARCHIVED.getCode()); | |||||
project.setStatus(ProjectStatusEnum.ACCEPTED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_REVIEW_FAILED") | |||||
public void FINAL_ACCEPTANCE_REJECT(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
@OnTransition(source = "FINAL_ACCEPTANCE_REVIEW_FAILED", target = "FINAL_ACCEPTANCE_IS_UNDER_REVIEW") | |||||
public void FINAL_RE_ACCEPTANCE_APPLICATION(Message<ProjectStatusChangeEvent> message) { | |||||
Project project = (Project) message.getHeaders().get(PROJECT_DECLARE); | |||||
project.setStatus(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW.getCode()); | |||||
} | |||||
} |
@@ -14,10 +14,11 @@ import org.springframework.statemachine.persist.StateMachinePersister; | |||||
* @since 2023/02/07 15:56 | * @since 2023/02/07 15:56 | ||||
*/ | */ | ||||
public interface ProjectDeclareStateMachineBuilder { | public interface ProjectDeclareStateMachineBuilder { | ||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception; | StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception; | ||||
/** | /** | ||||
* 构建状态机 | * 构建状态机 | ||||
* @param beanFactory | |||||
* @param beanFactory \ | |||||
* @author CMM | * @author CMM | ||||
* @since 2023/02/07 16:15 | * @since 2023/02/07 16:15 | ||||
*/ | */ | ||||
@@ -29,4 +30,5 @@ public interface ProjectDeclareStateMachineBuilder { | |||||
* @since 2023/02/07 16:22 | * @since 2023/02/07 16:22 | ||||
*/ | */ | ||||
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister(); | StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister(); | ||||
} | } |
@@ -1,14 +1,12 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | package com.hz.pm.api.common.statemachine.builder; | ||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | ||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | ||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory.PendingPreQualificationChoiceGuard; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.BeanFactory; | import org.springframework.beans.factory.BeanFactory; | ||||
import org.springframework.context.annotation.Bean; | import org.springframework.context.annotation.Bean; | ||||
import org.springframework.statemachine.StateMachine; | import org.springframework.statemachine.StateMachine; | ||||
@@ -26,32 +24,31 @@ import java.util.EnumSet; | |||||
/** | /** | ||||
* 项目申报状态机 | * 项目申报状态机 | ||||
* 市本级 | * 市本级 | ||||
* | |||||
* @author CMM | * @author CMM | ||||
* @since 2023/02/07 15:56 | * @since 2023/02/07 15:56 | ||||
*/ | */ | ||||
@Slf4j | |||||
@Component | @Component | ||||
@EnableStateMachine(name= ProjectDeclareStateMachineSBJBuilder.MACHINEID_TO) | |||||
@EnableStateMachine(name = ProjectDeclareStateMachineBuilderImpl.MACHINE_ID) | |||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
public class ProjectDeclareStateMachineBuilderImpl implements ProjectDeclareStateMachineBuilder { | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_SBJ_CODE; | |||||
public static final String MACHINE_ID = "projectDeclareStateMachine"; | |||||
private final BeanFactory beanFactory; | |||||
@Override | @Override | ||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | ||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | ||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
log.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | stateMachine.start(); | ||||
return stateMachine; | return stateMachine; | ||||
} | } | ||||
/** | /** | ||||
* 构建状态机 | * 构建状态机 | ||||
* | |||||
* @param beanFactory | * @param beanFactory | ||||
* @author CMM | * @author CMM | ||||
* @since 2023/02/07 16:15 | * @since 2023/02/07 16:15 | ||||
@@ -61,7 +58,7 @@ public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareState | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | ||||
builder.configureConfiguration() | builder.configureConfiguration() | ||||
.withConfiguration() | .withConfiguration() | ||||
.machineId(MACHINEID_TO) | |||||
.machineId(MACHINE_ID) | |||||
.beanFactory(beanFactory); | .beanFactory(beanFactory); | ||||
builder.configureStates() | builder.configureStates() | ||||
@@ -101,8 +98,8 @@ public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareState | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | // 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS, new PendingPreQualificationChoiceGuard(), new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING, new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | // 省级部门联审通过,从省级部门联审中到省级部门联审成功 | ||||
.withExternal() | .withExternal() | ||||
@@ -143,9 +140,9 @@ public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareState | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | // 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | .source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | ||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS, new PendingPreQualificationChoiceGuard() | |||||
, new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION, new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | // 预审不通过重新提交,从预审不通过到待预审选择 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | .source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | ||||
@@ -154,8 +151,8 @@ public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareState | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | // 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | ||||
.withChoice() | .withChoice() | ||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | .source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | ||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS, new PendingPreQualificationChoiceGuard(), new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING, new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | // 部门联审通过,从部门联审中到年度计划中 | ||||
.withExternal() | .withExternal() | ||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | .source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | ||||
@@ -257,29 +254,25 @@ public class ProjectDeclareStateMachineSBJBuilder implements ProjectDeclareState | |||||
/** | /** | ||||
* 持久化配置 | * 持久化配置 | ||||
* | |||||
* @author CMM | * @author CMM | ||||
* @since 2023/02/07 16:22 | * @since 2023/02/07 16:22 | ||||
*/ | */ | ||||
@Bean(name = "projectDeclareStateMachineSBJPersister") | |||||
@Bean(name = "projectDeclareStatePersister") | |||||
@Override | @Override | ||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | ||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
return new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | @Override | ||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | ||||
log.info("当前项目为:{}", contextObj); | |||||
} | } | ||||
@Override | @Override | ||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | ||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_SBJ_CODE); | |||||
return result; | |||||
return new DefaultStateMachineContext<>(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, MACHINE_ID); | |||||
} | } | ||||
}); | }); | ||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | } | ||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} | } |
@@ -1,284 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 景宁畲族自治县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineJNBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineJNBuilder implements ProjectDeclareStateMachineBuilder{ | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
private StateMachinePersister stateMachinePersister; | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_JN_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineJNPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_JN_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 缙云县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineJYBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineJYBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
private StateMachinePersister stateMachinePersister; | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_JY_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineJYPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_JY_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 开发区 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineKFQBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineKFQBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
private StateMachinePersister stateMachinePersister; | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_KFQ_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineKFQPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_KFQ_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 莲都区 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineLDBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineLDBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_LD_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineLDPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_LD_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,286 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 龙泉市 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineLQBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineLQBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_LQ_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineLQPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_LQ_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 青田县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineQTBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineQTBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_QT_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineQTPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_QT_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 庆元县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineQYBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineQYBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_QY_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineQYPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_QY_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,295 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 遂昌县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineSCBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineSCBuilder implements ProjectDeclareStateMachineBuilder{ | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_SC_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.choice(ProjectStatusEnum.APPROVED_AFTER_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.APPROVED_AFTER_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.APPROVED_AFTER_CHOICE) | |||||
.first(ProjectStatusEnum.TO_BE_APP_REGISTER,projectDeclareGuardFactory.new ApprovedAfterChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.TO_BE_PURCHASED,new ProjectDeclareChoiceAction()).and() | |||||
//待所有应用都注册 并且 绑定了关系后 再进入下一状态 待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APP_REGISTER) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.REGISTER_APP).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineSCPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_SC_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 松阳县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineSYBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineSYBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_SY_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineSYPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_SY_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,285 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.builder; | |||||
import com.hz.pm.api.common.statemachine.action.ProjectDeclareChoiceAction; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | |||||
import com.hz.pm.api.common.statemachine.factory.ProjectDeclareGuardFactory; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import lombok.RequiredArgsConstructor; | |||||
import org.slf4j.Logger; | |||||
import org.slf4j.LoggerFactory; | |||||
import org.springframework.beans.factory.BeanFactory; | |||||
import org.springframework.context.annotation.Bean; | |||||
import org.springframework.statemachine.StateMachine; | |||||
import org.springframework.statemachine.StateMachineContext; | |||||
import org.springframework.statemachine.StateMachinePersist; | |||||
import org.springframework.statemachine.config.EnableStateMachine; | |||||
import org.springframework.statemachine.config.StateMachineBuilder; | |||||
import org.springframework.statemachine.persist.DefaultStateMachinePersister; | |||||
import org.springframework.statemachine.persist.StateMachinePersister; | |||||
import org.springframework.statemachine.support.DefaultStateMachineContext; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.EnumSet; | |||||
/** | |||||
* 项目申报状态机 | |||||
* 云和县 | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Component | |||||
@EnableStateMachine(name= ProjectDeclareStateMachineYHBuilder.MACHINEID_TO) | |||||
@RequiredArgsConstructor | |||||
public class ProjectDeclareStateMachineYHBuilder implements ProjectDeclareStateMachineBuilder { | |||||
private static final ProjectDeclareGuardFactory projectDeclareGuardFactory = new ProjectDeclareGuardFactory(); | |||||
private final BeanFactory beanFactory; | |||||
private StateMachinePersister stateMachinePersister; | |||||
private Logger logger = LoggerFactory.getLogger(getClass()); | |||||
/** | |||||
* TO状态机 | |||||
*/ | |||||
public final static String MACHINEID_TO = RegionContant.LS_YH_CODE; | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build() throws Exception { | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = build(beanFactory); | |||||
logger.info("状态机ID:" + stateMachine.getId()); | |||||
stateMachine.start(); | |||||
return stateMachine; | |||||
} | |||||
/** | |||||
* 构建状态机 | |||||
* @param beanFactory | |||||
* @author CMM | |||||
* @since 2023/02/07 16:15 | |||||
*/ | |||||
@Override | |||||
public StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> build(BeanFactory beanFactory) throws Exception { | |||||
StateMachineBuilder.Builder<ProjectStatusEnum, ProjectStatusChangeEvent> builder = StateMachineBuilder.builder(); | |||||
builder.configureConfiguration() | |||||
.withConfiguration() | |||||
.machineId(MACHINEID_TO) | |||||
.beanFactory(beanFactory); | |||||
builder.configureStates() | |||||
.withStates() | |||||
.initial(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.choice(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.choice(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.states(EnumSet.allOf(ProjectStatusEnum.class)); | |||||
builder.configureTransitions() | |||||
// 单位内部审核通过,从单位内部审核中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_PASS).and() | |||||
// 单位内部审核驳回,从单位内部审核中到单位内部审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT).and() | |||||
// 单位内部审核中撤回,从单位内部审核中到待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.target(ProjectStatusEnum.TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_WITHDRAW).and() | |||||
// 单位内部审核不通过重新提交,从单位内部审核不通过到单位内部审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_INTERNAL_AUDIT_NOT_PASS) | |||||
.target(ProjectStatusEnum.UNDER_INTERNAL_AUDIT) | |||||
.event(ProjectStatusChangeEvent.UNDER_INTERNAL_REJECT_RESUBMIT).and() | |||||
// 待预审预审申报,从待预审到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_DECLARE).and() | |||||
// 待预审申报,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 省级部门联审通过,从省级部门联审中到省级部门联审成功 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_PASS).and() | |||||
// 省级部门联审通过,从省级部门联审成功到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_PASS_TO_PRELIMINARY_REVIEW).and() | |||||
// 省级部门联审不通过,从省级部门联审中到省级部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.THE_JOINT_REVIEW_OF_PROVINCIAL_DEPARTMENTS_FAILED) | |||||
.event(ProjectStatusChangeEvent.PROVINCIAL_DEPARTMENT_REVIEW_REJECT).and() | |||||
// 省级部门联审中撤回,从省级部门联审中到待预审 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION) | |||||
.event(ProjectStatusChangeEvent.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_WITHDRAW).and() | |||||
// 预审通过,从预审中到部门联审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_PASS).and() | |||||
// 预审驳回,从预审中到预审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT).and() | |||||
// 预审中撤回,从预审中到预审中撤回选择态 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PRE_APPLYING) | |||||
.target(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRE_APPLYING_WITHDRAW).and() | |||||
// 预审中撤回,从预审中撤回选择态->省级部门联审成功,待预审,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_WITHDRAW_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS_SUCCESS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard() | |||||
,new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PENDING_PREQUALIFICATION,new ProjectDeclareChoiceAction()).and() | |||||
// 预审不通过重新提交,从预审不通过到待预审选择 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PREQUALIFICATION_FAILED) | |||||
.target(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_REVIEW_REJECT_RESUBMIT).and() | |||||
// 预审不通过重新提交,从待预审选择->省级部门联审中,预审中,完成其中一种状态 | |||||
.withChoice() | |||||
.source(ProjectStatusEnum.PENDING_PREQUALIFICATION_CHOICE) | |||||
.first(ProjectStatusEnum.JOINT_REVIEW_BY_PROVINCIAL_DEPARTMENTS,projectDeclareGuardFactory.new PendingPreQualificationChoiceGuard(),new ProjectDeclareChoiceAction()) | |||||
.last(ProjectStatusEnum.PRE_APPLYING,new ProjectDeclareChoiceAction()).and() | |||||
// 部门联审通过,从部门联审中到年度计划中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_PASS).and() | |||||
// 部门联审驳回,从部门联审中到部门联审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_UNITED_REVIEW_REJECT).and() | |||||
// 部门联审中撤回,从部门联审中到预审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.DEPARTMENT_JOINT_REVIEW) | |||||
.target(ProjectStatusEnum.PRE_APPLYING) | |||||
.event(ProjectStatusChangeEvent.DEPARTMENT_JOINT_REVIEW_WITHDRAW).and() | |||||
// 年度计划中开启方案申报,从年度计划中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_PROJECT_OPEN_PLAN_DECLARE).and() | |||||
// 年度计划中暂缓,从年度计划中到被暂缓 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.IN_THE_ANNUAL_PLAN) | |||||
.target(ProjectStatusEnum.BE_SUSPENDED) | |||||
.event(ProjectStatusChangeEvent.ANNUAL_PLAN_SUSPEND).and() | |||||
// 方案待申报申报方案,从方案待申报到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.DECLARE_PLAN).and() | |||||
// 方案评审通过,从方案评审中到待立项批复 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_PASS).and() | |||||
// 方案评审驳回,从方案评审中到方案评审不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT).and() | |||||
// 方案评审中撤回,从方案评审中到方案待申报 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.PLAN_TO_BE_DECLARED) | |||||
.event(ProjectStatusChangeEvent.SCHEME_UNDER_REVIEW_WITHDRAW).and() | |||||
// 方案评审不通过重新提交,从方案评审不通过到方案评审中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.SCHEME_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.SCHEME_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.PLAN_REVIEW_REJECT_RESUBMIT).and() | |||||
// 待立项批复批复,从待立项批复到待采购 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_APPROVED) | |||||
.target(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.event(ProjectStatusChangeEvent.PROJECT_APPROVAL).and() | |||||
// 待采购采购备案,从待采购到实施中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_PURCHASED) | |||||
.target(ProjectStatusEnum.OPERATION) | |||||
.event(ProjectStatusChangeEvent.PURCHASE_PUT_ON_RECORD).and() | |||||
// 待开工 实施,从实施到建设中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.OPERATION) | |||||
.target(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.event(ProjectStatusChangeEvent.START_TO_WORK).and() | |||||
// 建设中初验备案,从建设中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.UNDER_CONSTRUCTION) | |||||
.target(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.event(ProjectStatusChangeEvent.PRELIMINARY_ACCEPTANCE_PUT_ON_RECORD).and() | |||||
// 待终验终验申请,从待终验到终验审核中 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.TO_BE_FINALLY_INSPECTED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_APPLICATION).and() | |||||
// 终审审核通过,从终审审核中到已归档 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.ARCHIVED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_PASS).and() | |||||
// 终审审核不通过,从终审审核中到终审审核不通过 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_REJECT).and() | |||||
// 终审审核中撤回,从终审审核中到待终验 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_ACCEPTANCE_IS_UNDER_REVIEW_WITHDRAW).and() | |||||
// 终验中 重新提交 | |||||
.withExternal() | |||||
.source(ProjectStatusEnum.FINAL_ACCEPTANCE_REVIEW_FAILED) | |||||
.target(ProjectStatusEnum.FINAL_ACCEPTANCE_IS_UNDER_REVIEW) | |||||
.event(ProjectStatusChangeEvent.FINAL_RE_ACCEPTANCE_APPLICATION).and(); | |||||
return builder.build(); | |||||
} | |||||
/** | |||||
* 持久化配置 | |||||
* @author CMM | |||||
* @since 2023/02/07 16:22 | |||||
*/ | |||||
@Bean(name = "projectDeclareStateMachineYHPersister") | |||||
@Override | |||||
public StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> getProjectPersister() { | |||||
StateMachinePersister sp = new DefaultStateMachinePersister<>(new StateMachinePersist<ProjectStatusEnum, ProjectStatusChangeEvent, Project>() { | |||||
@Override | |||||
public void write(StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> context, Project contextObj) { | |||||
} | |||||
@Override | |||||
public StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> read(Project contextObj) { | |||||
StateMachineContext<ProjectStatusEnum, ProjectStatusChangeEvent> result = new DefaultStateMachineContext(ProjectStatusEnum.match(contextObj.getStatus()), | |||||
null, null, null, null, RegionContant.LS_YH_CODE); | |||||
return result; | |||||
} | |||||
}); | |||||
stateMachinePersister = sp; | |||||
return sp; | |||||
} | |||||
public StateMachinePersister getStateMachinePersister(){ | |||||
return stateMachinePersister; | |||||
} | |||||
} |
@@ -1,34 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.contant; | |||||
/** | |||||
* @Classname RegionContant | |||||
* @Description | |||||
* @Date 2023/6/13 13:57 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
public class RegionContant { | |||||
//市本级 | |||||
public static final String LS_SBJ_CODE = "330100"; | |||||
//莲都区 | |||||
public static final String LS_LD_CODE = "331102"; | |||||
//青田县 | |||||
public static final String LS_QT_CODE = "331121"; | |||||
//缙云县 | |||||
public static final String LS_JY_CODE = "331122"; | |||||
//遂昌县 | |||||
public static final String LS_SC_CODE = "331123"; | |||||
//松阳县 | |||||
public static final String LS_SY_CODE = "331124"; | |||||
//云和县 | |||||
public static final String LS_YH_CODE = "331125"; | |||||
//庆元县 | |||||
public static final String LS_QY_CODE = "331126"; | |||||
//景宁畲族自治县 | |||||
public static final String LS_JN_CODE = "331127"; | |||||
//龙泉市 | |||||
public static final String LS_LQ_CODE = "331181"; | |||||
//开发区 | |||||
public static final String LS_KFQ_CODE = "331199"; | |||||
public static final String MORE_CODE = "000"; | |||||
} |
@@ -1,21 +1,10 @@ | |||||
package com.hz.pm.api.common.statemachine.factory; | package com.hz.pm.api.common.statemachine.factory; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.hz.pm.api.common.model.constant.ProjectDeclareConst; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | |||||
import com.hz.pm.api.common.enumeration.CommonEnum; | |||||
import com.hz.pm.api.common.statemachine.util.StateMachineUtil; | |||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | |||||
import org.springframework.statemachine.StateContext; | import org.springframework.statemachine.StateContext; | ||||
import org.springframework.statemachine.guard.Guard; | import org.springframework.statemachine.guard.Guard; | ||||
import java.util.List; | |||||
import static com.hz.pm.api.common.model.constant.StateMachineConst.APPLICATION_DECLARE; | |||||
/** | /** | ||||
* 项目申报状态机guard集合类 | * 项目申报状态机guard集合类 | ||||
* | * | ||||
@@ -24,37 +13,13 @@ import static com.hz.pm.api.common.model.constant.StateMachineConst.APPLICATION_ | |||||
*/ | */ | ||||
public class ProjectDeclareGuardFactory { | public class ProjectDeclareGuardFactory { | ||||
private static final String PROJECT_DECLARE = StateMachineConst.PROJECT_DECLARE; | |||||
public class PendingPreQualificationChoiceGuard implements Guard<ProjectStatusEnum, ProjectStatusChangeEvent> { | |||||
public static class PendingPreQualificationChoiceGuard implements Guard<ProjectStatusEnum, ProjectStatusChangeEvent> { | |||||
@Override | @Override | ||||
public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) { | public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) { | ||||
Project project = context.getMessage().getHeaders().get(PROJECT_DECLARE, Project.class); | |||||
// 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元 | // 判断申报项目是否是市级项目,且申报金额是否大于等于1000万元 | ||||
if (StateMachineUtil.isCityProject(project) && StateMachineUtil.judgeDeclareAmount(project, | |||||
ProjectDeclareConst.Number.DECLARE_AMOUNT_JUDGEMENT)){ | |||||
return true; | |||||
} | |||||
return false; | |||||
return true; | |||||
} | } | ||||
} | } | ||||
public class ApprovedAfterChoiceGuard implements Guard<ProjectStatusEnum, ProjectStatusChangeEvent> { | |||||
@Override | |||||
public boolean evaluate(StateContext<ProjectStatusEnum, ProjectStatusChangeEvent> context) { | |||||
List<ProjectApplication> projectApplications = context.getMessage().getHeaders().get(APPLICATION_DECLARE, List.class); | |||||
final Boolean[] res = {Boolean.FALSE}; | |||||
// 判断 是否有初次创建的应用 | |||||
if (CollUtil.isEmpty(projectApplications)){ | |||||
return res[0]; | |||||
} | |||||
projectApplications.stream().forEach(app -> { | |||||
Integer isFirst = app.getIsFirst(); | |||||
if(isFirst.equals(CommonEnum.YES.getCode())){ | |||||
res[0] = Boolean.TRUE; | |||||
} | |||||
}); | |||||
return res[0]; | |||||
} | |||||
} | |||||
} | } |
@@ -1,57 +0,0 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | |||||
import com.hz.pm.api.common.statemachine.builder.*; | |||||
import com.hz.pm.api.common.statemachine.contant.RegionContant; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.stereotype.Component; | |||||
import javax.annotation.PostConstruct; | |||||
import java.util.HashMap; | |||||
import java.util.Map; | |||||
/** | |||||
* 项目申报状态机 | |||||
* | |||||
* @author CMM | |||||
* @since 2023/02/07 15:56 | |||||
*/ | |||||
@Slf4j | |||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class MachineBuilderFounder { | |||||
private static final Map<String, ProjectDeclareStateMachineBuilder> MACHINE_BUILDER_MAP = new HashMap<>(16); | |||||
public static ProjectDeclareStateMachineBuilder getByRegion(String regionCode) { | |||||
return MACHINE_BUILDER_MAP.get(regionCode); | |||||
} | |||||
private final ProjectDeclareStateMachineSBJBuilder projectDeclareStateMachineSBJBuilder; | |||||
private final ProjectDeclareStateMachineLDBuilder projectDeclareStateMachineLDBuilder; | |||||
private final ProjectDeclareStateMachineQTBuilder projectDeclareStateMachineQTBuilder; | |||||
private final ProjectDeclareStateMachineJYBuilder projectDeclareStateMachineJYBuilder; | |||||
private final ProjectDeclareStateMachineSCBuilder projectDeclareStateMachineSCBuilder; | |||||
private final ProjectDeclareStateMachineSYBuilder projectDeclareStateMachineSYBuilder; | |||||
private final ProjectDeclareStateMachineYHBuilder projectDeclareStateMachineYHBuilder; | |||||
private final ProjectDeclareStateMachineQYBuilder projectDeclareStateMachineQYBuilder; | |||||
private final ProjectDeclareStateMachineJNBuilder projectDeclareStateMachineJNBuilder; | |||||
private final ProjectDeclareStateMachineLQBuilder projectDeclareStateMachineLQBuilder; | |||||
private final ProjectDeclareStateMachineKFQBuilder projectDeclareStateMachineKFQBuilder; | |||||
@PostConstruct | |||||
public void machineBuilderFounder(){ | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_SBJ_CODE, projectDeclareStateMachineSBJBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_LD_CODE, projectDeclareStateMachineLDBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_QT_CODE, projectDeclareStateMachineQTBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_JY_CODE, projectDeclareStateMachineJYBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_SC_CODE, projectDeclareStateMachineSCBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_SY_CODE, projectDeclareStateMachineSYBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_YH_CODE, projectDeclareStateMachineYHBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_QY_CODE, projectDeclareStateMachineQYBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_JN_CODE, projectDeclareStateMachineJNBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_LQ_CODE, projectDeclareStateMachineLQBuilder); | |||||
MACHINE_BUILDER_MAP.put(RegionContant.LS_KFQ_CODE, projectDeclareStateMachineKFQBuilder); | |||||
} | |||||
} |
@@ -1,16 +1,14 @@ | |||||
package com.hz.pm.api.common.statemachine.util; | package com.hz.pm.api.common.statemachine.util; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.model.constant.StateMachineConst; | import com.hz.pm.api.common.model.constant.StateMachineConst; | ||||
import com.hz.pm.api.common.statemachine.builder.ProjectDeclareStateMachineBuilder; | import com.hz.pm.api.common.statemachine.builder.ProjectDeclareStateMachineBuilder; | ||||
import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | import com.hz.pm.api.common.statemachine.event.ProjectStatusChangeEvent; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService; | import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService; | ||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | import com.hz.pm.api.projectlib.service.IProjectApplicationService; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
@@ -39,6 +37,10 @@ public class StateMachineUtil { | |||||
private static final String APPLICATION_DECLARE = StateMachineConst.APPLICATION_DECLARE; | private static final String APPLICATION_DECLARE = StateMachineConst.APPLICATION_DECLARE; | ||||
//================================================================================================================== | |||||
private final ProjectDeclareStateMachineBuilder projectDeclareStateMachineBuilder; | |||||
private final INdProjectStatusChangeService projectStatusChangeService; | private final INdProjectStatusChangeService projectStatusChangeService; | ||||
private final IProjectApplicationService projectApplicationService; | private final IProjectApplicationService projectApplicationService; | ||||
@@ -79,17 +81,14 @@ public class StateMachineUtil { | |||||
ProjectStatusChange projectStatusChange = new ProjectStatusChange(); | ProjectStatusChange projectStatusChange = new ProjectStatusChange(); | ||||
projectStatusChange.setBeforeStatus(project.getStatus()); | projectStatusChange.setBeforeStatus(project.getStatus()); | ||||
ProjectDeclareStateMachineBuilder builder = MachineBuilderFounder.getByRegion(project.getAreaCode()); | |||||
VUtils.isTrue(Objects.isNull(builder)).throwMessage("状态机初始化失败!"); | |||||
//获取TO状态机 | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = builder.build(); | |||||
// 获取TO状态机 | |||||
StateMachine<ProjectStatusEnum, ProjectStatusChangeEvent> stateMachine = projectDeclareStateMachineBuilder.build(); | |||||
Message<ProjectStatusChangeEvent> message = MessageBuilder.withPayload(event) | Message<ProjectStatusChangeEvent> message = MessageBuilder.withPayload(event) | ||||
.setHeader(PROJECT_DECLARE, project) | .setHeader(PROJECT_DECLARE, project) | ||||
.setHeader(APPLICATION_DECLARE, projectApplicationService.getApplicationsByProject(project)) | .setHeader(APPLICATION_DECLARE, projectApplicationService.getApplicationsByProject(project)) | ||||
.build(); | .build(); | ||||
//初始化状态机 | //初始化状态机 | ||||
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> projectDeclareStateMachinePersister = builder.getProjectPersister(); | |||||
StateMachinePersister<ProjectStatusEnum, ProjectStatusChangeEvent, Project> projectDeclareStateMachinePersister = projectDeclareStateMachineBuilder.getProjectPersister(); | |||||
projectDeclareStateMachinePersister.restore(stateMachine, project); | projectDeclareStateMachinePersister.restore(stateMachine, project); | ||||
stateMachine.sendEvent(message); | stateMachine.sendEvent(message); | ||||
projectStatusChange.setProjectId(project.getId()); | projectStatusChange.setProjectId(project.getId()); | ||||
@@ -114,18 +113,6 @@ public class StateMachineUtil { | |||||
return flag > 0 || flag == 0; | return flag > 0 || flag == 0; | ||||
} | } | ||||
/** | |||||
* 判断申报项目是否为市级项目 | |||||
* | |||||
* @param project \ | |||||
* @return boolean | |||||
* @since 2023/02/07 17:05 | |||||
*/ | |||||
public static boolean isCityProject(Project project) { | |||||
String areaCode = project.getAreaCode(); | |||||
return areaCode.equals(RegionConst.RC_HZ); | |||||
} | |||||
public ProjectStatusChangeEvent getProjectStatusPassEvent(Integer status) { | public ProjectStatusChangeEvent getProjectStatusPassEvent(Integer status) { | ||||
ProjectStatusChangeEvent event = ProjectStatusChangeEvent.getPassValueByCode(status); | ProjectStatusChangeEvent event = ProjectStatusChangeEvent.getPassValueByCode(status); | ||||
if (Objects.isNull(event)) { | if (Objects.isNull(event)) { | ||||
@@ -66,10 +66,8 @@ public class FreemarkerWordUtil { | |||||
//输出文件 | //输出文件 | ||||
File outFile = new File(filePath + File.separator + fileName); | File outFile = new File(filePath + File.separator + fileName); | ||||
//如果输出目标文件夹不存在,则创建 | //如果输出目标文件夹不存在,则创建 | ||||
if (!outFile.getParentFile().exists()) { | |||||
if (outFile.getParentFile().mkdirs()) { | |||||
log.info("创建文件目录:{}", outFile.getParentFile().getAbsolutePath()); | |||||
} | |||||
if (!outFile.getParentFile().exists() && (outFile.getParentFile().mkdirs())) { | |||||
log.info("创建文件目录:{}", outFile.getParentFile().getAbsolutePath()); | |||||
} | } | ||||
//将模板和数据模型合并生成文件 | //将模板和数据模型合并生成文件 | ||||
Writer out = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(outFile.toPath()), StandardCharsets.UTF_8)); | Writer out = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(outFile.toPath()), StandardCharsets.UTF_8)); | ||||
@@ -1,15 +1,16 @@ | |||||
package com.hz.pm.api.common.util; | package com.hz.pm.api.common.util; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.model.GenericResult; | |||||
import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | ||||
import com.ningdatech.basic.model.GenericResult; | |||||
import com.ningdatech.zwdd.client.ZwddClient; | import com.ningdatech.zwdd.client.ZwddClient; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.List; | |||||
import java.util.concurrent.*; | |||||
import java.util.concurrent.CompletableFuture; | |||||
import java.util.concurrent.ExecutionException; | |||||
import java.util.concurrent.ThreadPoolExecutor; | |||||
/** | /** | ||||
* 异步发送工作通知工具类 | * 异步发送工作通知工具类 | ||||
@@ -18,8 +19,8 @@ import java.util.concurrent.*; | |||||
* @since 2023/02/23 13:50 | * @since 2023/02/23 13:50 | ||||
*/ | */ | ||||
@Slf4j | @Slf4j | ||||
@RequiredArgsConstructor | |||||
@Component | @Component | ||||
@RequiredArgsConstructor | |||||
public class SendWorkNoticeUtil { | public class SendWorkNoticeUtil { | ||||
private final ZwddClient zwddClient; | private final ZwddClient zwddClient; | ||||
@@ -27,10 +28,21 @@ public class SendWorkNoticeUtil { | |||||
/** | /** | ||||
* 初始化线程池 | * 初始化线程池 | ||||
*/ | */ | ||||
public static ThreadPoolExecutor threadPool = new ThreadPoolExecutor(2, 10, | |||||
60, TimeUnit.SECONDS, new ArrayBlockingQueue(10), new ThreadPoolExecutor.AbortPolicy()); | |||||
public static final ThreadPoolTaskExecutor EXECUTOR; | |||||
public Boolean sendWorkNotice(WorkNoticeInfo workNoticeInfo){ | |||||
static { | |||||
EXECUTOR = new ThreadPoolTaskExecutor(); | |||||
EXECUTOR.setCorePoolSize(2); | |||||
EXECUTOR.setMaxPoolSize(4); | |||||
EXECUTOR.setQueueCapacity(200); | |||||
EXECUTOR.setKeepAliveSeconds(120); | |||||
EXECUTOR.setThreadNamePrefix("sendWorkNotice-"); | |||||
EXECUTOR.setWaitForTasksToCompleteOnShutdown(true); | |||||
EXECUTOR.setRejectedExecutionHandler(new ThreadPoolExecutor.AbortPolicy()); | |||||
EXECUTOR.initialize(); | |||||
} | |||||
public Boolean sendWorkNotice(WorkNoticeInfo workNoticeInfo) { | |||||
// 将发送工作通知交给异步任务Future | // 将发送工作通知交给异步任务Future | ||||
String msg = workNoticeInfo.getMsg(); | String msg = workNoticeInfo.getMsg(); | ||||
@@ -44,23 +56,18 @@ public class SendWorkNoticeUtil { | |||||
log.info("异步任务执行完成, " + workNoticeInfo.getBizMsgId() + " 当前线程:" + Thread.currentThread().getName()); | log.info("异步任务执行完成, " + workNoticeInfo.getBizMsgId() + " 当前线程:" + Thread.currentThread().getName()); | ||||
long endTime = System.currentTimeMillis(); | long endTime = System.currentTimeMillis(); | ||||
log.info("方法执行完成返回,耗时:" + (endTime - startTime)); | log.info("方法执行完成返回,耗时:" + (endTime - startTime)); | ||||
}else { | |||||
} else { | |||||
return "发送工作通知失败!"; | return "发送工作通知失败!"; | ||||
} | } | ||||
return "发送工作通知成功!"; | return "发送工作通知成功!"; | ||||
}, threadPool); | |||||
String s; | |||||
try { | |||||
s = future.get(); | |||||
} catch (Exception e) { | |||||
throw new BizException("获取异步线程处理结果失败!"); | |||||
} | |||||
threadPool.shutdown(); | |||||
while (!threadPool.isTerminated()) { | |||||
log.info(s); | |||||
return Boolean.FALSE; | |||||
} | |||||
log.info(s); | |||||
return Boolean.TRUE; | |||||
}, EXECUTOR); | |||||
try { | |||||
future.get(); | |||||
} catch (InterruptedException | ExecutionException e) { | |||||
log.error("获取异步线程处理结果失败!", e); | |||||
Thread.currentThread().interrupt(); | |||||
} | |||||
return Boolean.TRUE; | |||||
} | } | ||||
} | } |
@@ -7,6 +7,8 @@ package com.hz.pm.api.dashboard.constant; | |||||
public class AnalysisBasicConstant { | public class AnalysisBasicConstant { | ||||
private AnalysisBasicConstant() { | |||||
} | |||||
/** | /** | ||||
* 丽水市区域编码 | * 丽水市区域编码 | ||||
@@ -5,13 +5,13 @@ import cn.hutool.core.collection.CollUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.google.common.collect.Maps; | import com.google.common.collect.Maps; | ||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | import com.hz.pm.api.common.helper.RegionCacheHelper; | ||||
import com.hz.pm.api.dashboard.constant.DashboardConstant; | |||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.dashboard.enums.CockpitAppcationTypeEnum; | import com.hz.pm.api.dashboard.enums.CockpitAppcationTypeEnum; | ||||
import com.hz.pm.api.dashboard.model.entity.CockpitApplication; | import com.hz.pm.api.dashboard.model.entity.CockpitApplication; | ||||
import com.hz.pm.api.dashboard.model.entity.CockpitStats; | import com.hz.pm.api.dashboard.model.entity.CockpitStats; | ||||
import com.hz.pm.api.dashboard.model.vo.CockpitStatsVO; | import com.hz.pm.api.dashboard.model.vo.CockpitStatsVO; | ||||
import com.hz.pm.api.dashboard.model.vo.CockpitStatsVO.*; | |||||
import com.hz.pm.api.dashboard.service.ICockpitStatsService; | import com.hz.pm.api.dashboard.service.ICockpitStatsService; | ||||
import com.hz.pm.api.sys.model.dto.RegionDTO; | import com.hz.pm.api.sys.model.dto.RegionDTO; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -24,6 +24,8 @@ import java.math.RoundingMode; | |||||
import java.util.*; | import java.util.*; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import static com.hz.pm.api.dashboard.constant.DashboardConstant.CockpitStats.*; | |||||
/** | /** | ||||
* @Classname CockpitStatsHandler | * @Classname CockpitStatsHandler | ||||
* @Description | * @Description | ||||
@@ -39,23 +41,23 @@ public class CockpitStatsHandler { | |||||
private final ICockpitStatsService cockpitStatsService; | private final ICockpitStatsService cockpitStatsService; | ||||
private static final List<Integer> years = Lists.newArrayList(2021,2022,2023,2024,2025); | |||||
private static final List<Integer> years = Lists.newArrayList(2021, 2022, 2023, 2024, 2025); | |||||
public CockpitStatsVO convertCockpitStats(CockpitStats cockpitStats, String regionCode, Integer year | public CockpitStatsVO convertCockpitStats(CockpitStats cockpitStats, String regionCode, Integer year | ||||
, List<CockpitApplication> appDatas) { | , List<CockpitApplication> appDatas) { | ||||
CockpitStatsVO res = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.class); | |||||
CockpitStatsVO res = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.class); | |||||
if(Objects.isNull(cockpitStats)){ | |||||
if (Objects.isNull(cockpitStats)) { | |||||
return res; | return res; | ||||
} | } | ||||
//监测数据 | //监测数据 | ||||
res.setMonitorData(convertMonitor(cockpitStats,regionCode)); | |||||
res.setMonitorData(convertMonitor(cockpitStats, regionCode)); | |||||
//专家数据 | //专家数据 | ||||
res.setExpertData(convertExpertData(cockpitStats)); | res.setExpertData(convertExpertData(cockpitStats)); | ||||
//顶部数据 | //顶部数据 | ||||
res.setTopData(convertTopData(cockpitStats)); | res.setTopData(convertTopData(cockpitStats)); | ||||
//地图数据 | //地图数据 | ||||
res.setMapProjectData(convertMapProjectsData(cockpitStats,year)); | |||||
res.setMapProjectData(convertMapProjectsData(cockpitStats, year)); | |||||
//项目项目数据 | //项目项目数据 | ||||
res.setStatusProjectsData(convertStatusProjectsData(cockpitStats)); | res.setStatusProjectsData(convertStatusProjectsData(cockpitStats)); | ||||
//项目效益 优秀项目 | //项目效益 优秀项目 | ||||
@@ -69,23 +71,23 @@ public class CockpitStatsHandler { | |||||
//最佳/重大应用 | //最佳/重大应用 | ||||
res.setAppDatas(convertCockpitApps(appDatas)); | res.setAppDatas(convertCockpitApps(appDatas)); | ||||
//数据质量分数 | //数据质量分数 | ||||
res.setQualityDatas(convertQualityDatas(year)); | |||||
res.setQualityDatas(convertQualityData(year)); | |||||
return res; | return res; | ||||
} | } | ||||
private List<CockpitStatsVO.QualityData> convertQualityDatas(Integer year) { | |||||
List<CockpitStats> datas = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | |||||
private List<QualityData> convertQualityData(Integer year) { | |||||
List<CockpitStats> dataList = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | |||||
.eq(Objects.nonNull(year), CockpitStats::getYear, year) | .eq(Objects.nonNull(year), CockpitStats::getYear, year) | ||||
.eq(Objects.isNull(year), CockpitStats::getYear, DashboardConstant.CockpitStats.NONE_YEAR) | |||||
.ne(CockpitStats::getRegionCode,DashboardConstant.CockpitStats.TOTAL) | |||||
.eq(Objects.isNull(year), CockpitStats::getYear, NONE_YEAR) | |||||
.ne(CockpitStats::getRegionCode, TOTAL) | |||||
.orderByAsc(CockpitStats::getRegionCode)); | .orderByAsc(CockpitStats::getRegionCode)); | ||||
if(CollUtil.isEmpty(datas)){ | |||||
if (CollUtil.isEmpty(dataList)) { | |||||
return Collections.emptyList(); | return Collections.emptyList(); | ||||
} | } | ||||
return datas.stream().map(d -> { | |||||
CockpitStatsVO.QualityData data = new CockpitStatsVO.QualityData(); | |||||
return dataList.stream().map(d -> { | |||||
QualityData data = new QualityData(); | |||||
data.setRegionCode(d.getRegionCode()); | data.setRegionCode(d.getRegionCode()); | ||||
data.setRegionName(d.getRegionName()); | data.setRegionName(d.getRegionName()); | ||||
data.setQuality(d.getDataQuality()); | data.setQuality(d.getDataQuality()); | ||||
@@ -105,150 +107,144 @@ public class CockpitStatsHandler { | |||||
} | } | ||||
private CockpitStatsVO.PerformanceData convertPerformanceData(CockpitStats cockpitStats) { | private CockpitStatsVO.PerformanceData convertPerformanceData(CockpitStats cockpitStats) { | ||||
CockpitStatsVO.PerformanceData data = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.PerformanceData.class); | |||||
CockpitStatsVO.PerformanceData data = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.PerformanceData.class); | |||||
data.setPerformanceTops(convertTops(cockpitStats)); | data.setPerformanceTops(convertTops(cockpitStats)); | ||||
return data; | return data; | ||||
} | } | ||||
private List<CockpitStatsVO.PerformanceTop> convertTops(CockpitStats cockpitStats) { | |||||
List<CockpitStatsVO.PerformanceTop> tops = Lists.newArrayList(); | |||||
tops.add(new CockpitStatsVO.PerformanceTop("一星",cockpitStats.getPerformanceTop1Score(),cockpitStats.getPerformanceTop1Name())); | |||||
tops.add(new CockpitStatsVO.PerformanceTop("二星",cockpitStats.getPerformanceTop2Score(),cockpitStats.getPerformanceTop2Name())); | |||||
tops.add(new CockpitStatsVO.PerformanceTop("三星",cockpitStats.getPerformanceTop3Score(),cockpitStats.getPerformanceTop3Name())); | |||||
tops.add(new CockpitStatsVO.PerformanceTop("四星",cockpitStats.getPerformanceTop4Score(),cockpitStats.getPerformanceTop4Name())); | |||||
tops.add(new CockpitStatsVO.PerformanceTop("五星",cockpitStats.getPerformanceTop5Score(),cockpitStats.getPerformanceTop5Name())); | |||||
private List<PerformanceTop> convertTops(CockpitStats cockpitStats) { | |||||
List<PerformanceTop> tops = Lists.newArrayList(); | |||||
tops.add(new PerformanceTop("一星", cockpitStats.getPerformanceTop1Score(), cockpitStats.getPerformanceTop1Name())); | |||||
tops.add(new PerformanceTop("二星", cockpitStats.getPerformanceTop2Score(), cockpitStats.getPerformanceTop2Name())); | |||||
tops.add(new PerformanceTop("三星", cockpitStats.getPerformanceTop3Score(), cockpitStats.getPerformanceTop3Name())); | |||||
tops.add(new PerformanceTop("四星", cockpitStats.getPerformanceTop4Score(), cockpitStats.getPerformanceTop4Name())); | |||||
tops.add(new PerformanceTop("五星", cockpitStats.getPerformanceTop5Score(), cockpitStats.getPerformanceTop5Name())); | |||||
return tops; | return tops; | ||||
} | } | ||||
private CockpitStatsVO.ProduceData convertProduceData(CockpitStats cockpitStats) { | private CockpitStatsVO.ProduceData convertProduceData(CockpitStats cockpitStats) { | ||||
return BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.ProduceData.class); | |||||
return BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.ProduceData.class); | |||||
} | } | ||||
private CockpitStatsVO.ReduceData convertReduceData(CockpitStats cockpitStats) { | private CockpitStatsVO.ReduceData convertReduceData(CockpitStats cockpitStats) { | ||||
CockpitStatsVO.ReduceData data = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.ReduceData.class); | |||||
CockpitStatsVO.ReduceData data = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.ReduceData.class); | |||||
data.setAmountComparisonCharts(convertAmountComparisonChart(cockpitStats)); | data.setAmountComparisonCharts(convertAmountComparisonChart(cockpitStats)); | ||||
return data; | return data; | ||||
} | } | ||||
private List<CockpitStatsVO.AmountComparisonChart> convertAmountComparisonChart(CockpitStats cockpitStats) { | |||||
List<CockpitStatsVO.AmountComparisonChart> res = Lists.newArrayList(); | |||||
res.add(new CockpitStatsVO.AmountComparisonChart("申报", cockpitStats.getDeclaredAmountApprove(),cockpitStats.getApprovalAmountApprove(),cockpitStats.getDifferenceApprove())); | |||||
res.add(new CockpitStatsVO.AmountComparisonChart("批复", cockpitStats.getDeclaredAmountApproval(),cockpitStats.getApprovalAmountApproval(),cockpitStats.getDifferenceApproval())); | |||||
res.add(new CockpitStatsVO.AmountComparisonChart("合同", cockpitStats.getDeclaredAmountContract(),cockpitStats.getApprovalAmountContract(),cockpitStats.getDifferenceContract())); | |||||
private List<AmountComparisonChart> convertAmountComparisonChart(CockpitStats cockpitStats) { | |||||
List<AmountComparisonChart> res = Lists.newArrayList(); | |||||
res.add(new AmountComparisonChart("申报", cockpitStats.getDeclaredAmountApprove(), cockpitStats.getApprovalAmountApprove(), cockpitStats.getDifferenceApprove())); | |||||
res.add(new AmountComparisonChart("批复", cockpitStats.getDeclaredAmountApproval(), cockpitStats.getApprovalAmountApproval(), cockpitStats.getDifferenceApproval())); | |||||
res.add(new AmountComparisonChart("合同", cockpitStats.getDeclaredAmountContract(), cockpitStats.getApprovalAmountContract(), cockpitStats.getDifferenceContract())); | |||||
return res; | return res; | ||||
} | } | ||||
private CockpitStatsVO.ExcellentData convertExcellentData(CockpitStats cockpitStats) { | private CockpitStatsVO.ExcellentData convertExcellentData(CockpitStats cockpitStats) { | ||||
CockpitStatsVO.ExcellentData data = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.ExcellentData.class); | |||||
CockpitStatsVO.ExcellentData data = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.ExcellentData.class); | |||||
data.setExcellentProjects(Lists.newArrayList()); | data.setExcellentProjects(Lists.newArrayList()); | ||||
return data; | return data; | ||||
} | } | ||||
private CockpitStatsVO.StatusProjectsData convertStatusProjectsData(CockpitStats cockpitStats) { | private CockpitStatsVO.StatusProjectsData convertStatusProjectsData(CockpitStats cockpitStats) { | ||||
return BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.StatusProjectsData.class); | |||||
return BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.StatusProjectsData.class); | |||||
} | } | ||||
private List<CockpitStatsVO.MapProjectsData> convertMapProjectsData(CockpitStats cockpitStats,Integer year) { | |||||
private List<CockpitStatsVO.MapProjectsData> convertMapProjectsData(CockpitStats cockpitStats, Integer year) { | |||||
List<CockpitStatsVO.MapProjectsData> mapProjectsDatas = Lists.newArrayList(); | List<CockpitStatsVO.MapProjectsData> mapProjectsDatas = Lists.newArrayList(); | ||||
List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY); | List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY); | ||||
regions = regions.stream().filter(r -> r.getRegionLevel() != 2).sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | regions = regions.stream().filter(r -> r.getRegionLevel() != 2).sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | ||||
List<CockpitStats> cockpitStatsAll = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | List<CockpitStats> cockpitStatsAll = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | ||||
.eq(Objects.nonNull(year), CockpitStats::getYear, year) | .eq(Objects.nonNull(year), CockpitStats::getYear, year) | ||||
.eq(Objects.isNull(year), CockpitStats::getYear, DashboardConstant.CockpitStats.NONE_YEAR)); | |||||
Map<String, Integer> totalMap = cockpitStatsAll.stream().filter(c -> Objects.nonNull(c.getRegionCode()) && Objects.nonNull(c.getProjectsTotal())) | |||||
.collect(Collectors.toMap(c -> c.getRegionCode(), c -> c.getProjectsTotal())); | |||||
.eq(Objects.isNull(year), CockpitStats::getYear, NONE_YEAR)); | |||||
Map<String, Integer> totalMap = cockpitStatsAll.stream() | |||||
.filter(c -> Objects.nonNull(c.getRegionCode()) && Objects.nonNull(c.getProjectsTotal())) | |||||
.collect(Collectors.toMap(CockpitStats::getRegionCode, CockpitStats::getProjectsTotal)); | |||||
for(RegionDTO region : regions){ | |||||
for (RegionDTO region : regions) { | |||||
CockpitStatsVO.MapProjectsData mapProjectsData = new CockpitStatsVO.MapProjectsData(); | CockpitStatsVO.MapProjectsData mapProjectsData = new CockpitStatsVO.MapProjectsData(); | ||||
mapProjectsData.setRegionCode(region.getRegionCode()); | mapProjectsData.setRegionCode(region.getRegionCode()); | ||||
mapProjectsData.setRegionName(region.getRegionName()); | mapProjectsData.setRegionName(region.getRegionName()); | ||||
if(totalMap.containsKey(mapProjectsData.getRegionCode())){ | |||||
mapProjectsData.setProjectsNum(totalMap.get(mapProjectsData.getRegionCode())); | |||||
}else{ | |||||
mapProjectsData.setProjectsNum(0); | |||||
} | |||||
mapProjectsData.setProjectsNum(totalMap.getOrDefault(mapProjectsData.getRegionCode(), 0)); | |||||
mapProjectsDatas.add(mapProjectsData); | mapProjectsDatas.add(mapProjectsData); | ||||
} | } | ||||
return mapProjectsDatas; | return mapProjectsDatas; | ||||
} | } | ||||
private CockpitStatsVO.TopData convertTopData(CockpitStats cockpitStats) { | private CockpitStatsVO.TopData convertTopData(CockpitStats cockpitStats) { | ||||
return BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.TopData.class); | |||||
return BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.TopData.class); | |||||
} | } | ||||
private CockpitStatsVO.Expert convertExpertData(CockpitStats cockpitStats) { | private CockpitStatsVO.Expert convertExpertData(CockpitStats cockpitStats) { | ||||
CockpitStatsVO.Expert expert = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.Expert.class); | |||||
expert.setExpertRegionData(buidExpertRegionData(cockpitStats)); | |||||
CockpitStatsVO.Expert expert = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.Expert.class); | |||||
expert.setExpertRegionData(buildExpertRegionData(cockpitStats)); | |||||
return expert; | return expert; | ||||
} | } | ||||
private List<CockpitStatsVO.ExpertRegion> buidExpertRegionData(CockpitStats cockpitStats) { | |||||
private List<CockpitStatsVO.ExpertRegion> buildExpertRegionData(CockpitStats cockpitStats) { | |||||
List<CockpitStatsVO.ExpertRegion> regionData = Lists.newArrayList(); | List<CockpitStatsVO.ExpertRegion> regionData = Lists.newArrayList(); | ||||
List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY); | List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY); | ||||
regions = regions.stream().filter(r -> r.getRegionLevel() != 2).sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | regions = regions.stream().filter(r -> r.getRegionLevel() != 2).sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | ||||
List<CockpitStats> cs = cockpitStatsService.list(); | List<CockpitStats> cs = cockpitStatsService.list(); | ||||
Map<String, Integer> csMap = cs.stream().collect(Collectors.toMap(c -> c.getRegionCode() + c.getYear(), CockpitStats::getExpertTotalNum)); | Map<String, Integer> csMap = cs.stream().collect(Collectors.toMap(c -> c.getRegionCode() + c.getYear(), CockpitStats::getExpertTotalNum)); | ||||
for(RegionDTO region : regions){ | |||||
for (RegionDTO region : regions) { | |||||
CockpitStatsVO.ExpertRegion expertRegion = new CockpitStatsVO.ExpertRegion(); | CockpitStatsVO.ExpertRegion expertRegion = new CockpitStatsVO.ExpertRegion(); | ||||
expertRegion.setRegionCode(region.getRegionCode()); | expertRegion.setRegionCode(region.getRegionCode()); | ||||
expertRegion.setRegionName(region.getRegionName()); | expertRegion.setRegionName(region.getRegionName()); | ||||
if(csMap.containsKey(region.getRegionCode() + 0)){ | |||||
expertRegion.setExpertNum(csMap.get(region.getRegionCode() + 0)); | |||||
}else{ | |||||
expertRegion.setExpertNum(0); | |||||
} | |||||
expertRegion.setExpertNum(csMap.getOrDefault(region.getRegionCode() + 0, 0)); | |||||
regionData.add(expertRegion); | regionData.add(expertRegion); | ||||
} | } | ||||
return regionData; | return regionData; | ||||
} | } | ||||
private CockpitStatsVO.Monitor convertMonitor(CockpitStats cockpitStats,String regionCode) { | |||||
CockpitStatsVO.Monitor monitor = BeanUtil.copyProperties(cockpitStats,CockpitStatsVO.Monitor.class); | |||||
monitor.setPasswordGradeCharts(buidPasswordGradeCharts(cockpitStats)); | |||||
monitor.setSecrecyGradeCharts(buidSecrecyGradeCharts(cockpitStats)); | |||||
private CockpitStatsVO.Monitor convertMonitor(CockpitStats cockpitStats, String regionCode) { | |||||
CockpitStatsVO.Monitor monitor = BeanUtil.copyProperties(cockpitStats, CockpitStatsVO.Monitor.class); | |||||
monitor.setPasswordGradeCharts(buildPasswordGradeCharts(cockpitStats)); | |||||
monitor.setSecrecyGradeCharts(buildSecrecyGradeCharts(cockpitStats)); | |||||
monitor.setMonitorSafetyInputRate(computeSafetyRate(regionCode)); | monitor.setMonitorSafetyInputRate(computeSafetyRate(regionCode)); | ||||
return monitor; | return monitor; | ||||
} | } | ||||
/** | /** | ||||
* 安全投入 比 图 | * 安全投入 比 图 | ||||
* | |||||
* @param regionCode | * @param regionCode | ||||
* @return | * @return | ||||
*/ | */ | ||||
private List<CockpitStatsVO.SafetyInput> computeSafetyRate(String regionCode) { | private List<CockpitStatsVO.SafetyInput> computeSafetyRate(String regionCode) { | ||||
List<CockpitStats> cocks = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | List<CockpitStats> cocks = cockpitStatsService.list(Wrappers.lambdaQuery(CockpitStats.class) | ||||
.eq(StringUtils.isNotBlank(regionCode), CockpitStats::getRegionCode, regionCode) | .eq(StringUtils.isNotBlank(regionCode), CockpitStats::getRegionCode, regionCode) | ||||
.eq(StringUtils.isBlank(regionCode), CockpitStats::getRegionCode, DashboardConstant.CockpitStats.TOTAL) | |||||
.eq(StringUtils.isBlank(regionCode), CockpitStats::getRegionCode, TOTAL) | |||||
.in(CockpitStats::getYear, years) | .in(CockpitStats::getYear, years) | ||||
.orderByAsc(CockpitStats::getYear)); | .orderByAsc(CockpitStats::getYear)); | ||||
return cocks.stream().map(c -> { | return cocks.stream().map(c -> { | ||||
CockpitStatsVO.SafetyInput safetyInput = new CockpitStatsVO.SafetyInput(); | CockpitStatsVO.SafetyInput safetyInput = new CockpitStatsVO.SafetyInput(); | ||||
safetyInput.setYear(c.getYear()); | safetyInput.setYear(c.getYear()); | ||||
safetyInput.setRate(Objects.nonNull(c.getMonitorDeclaredAmount()) && c.getMonitorDeclaredAmount().compareTo(BigDecimal.ZERO) > 0 ? | safetyInput.setRate(Objects.nonNull(c.getMonitorDeclaredAmount()) && c.getMonitorDeclaredAmount().compareTo(BigDecimal.ZERO) > 0 ? | ||||
c.getMonitorSafetyInputAmount().multiply(BigDecimal.valueOf(100)).divide(c.getMonitorDeclaredAmount(),2, RoundingMode.CEILING): BigDecimal.ZERO); | |||||
c.getMonitorSafetyInputAmount().multiply(BigDecimal.valueOf(100)).divide(c.getMonitorDeclaredAmount(), 2, RoundingMode.CEILING) : BigDecimal.ZERO); | |||||
return safetyInput; | return safetyInput; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
private List<CockpitStatsVO.SecrecyGradeChart> buidSecrecyGradeCharts(CockpitStats cockpitStats) { | |||||
List<CockpitStatsVO.SecrecyGradeChart> chars = Lists.newArrayList(); | |||||
chars.add(new CockpitStatsVO.SecrecyGradeChart(1,cockpitStats.getMonitorSecrecyGrade1Num())); | |||||
chars.add(new CockpitStatsVO.SecrecyGradeChart(2,cockpitStats.getMonitorSecrecyGrade2Num())); | |||||
chars.add(new CockpitStatsVO.SecrecyGradeChart(3,cockpitStats.getMonitorSecrecyGrade3Num())); | |||||
chars.add(new CockpitStatsVO.SecrecyGradeChart(4,cockpitStats.getMonitorSecrecyGrade4Num())); | |||||
chars.add(new CockpitStatsVO.SecrecyGradeChart(5,cockpitStats.getMonitorSecrecyGrade5Num())); | |||||
private List<SecrecyGradeChart> buildSecrecyGradeCharts(CockpitStats cockpitStats) { | |||||
List<SecrecyGradeChart> chars = Lists.newArrayList(); | |||||
chars.add(new SecrecyGradeChart(1, cockpitStats.getMonitorSecrecyGrade1Num())); | |||||
chars.add(new SecrecyGradeChart(2, cockpitStats.getMonitorSecrecyGrade2Num())); | |||||
chars.add(new SecrecyGradeChart(3, cockpitStats.getMonitorSecrecyGrade3Num())); | |||||
chars.add(new SecrecyGradeChart(4, cockpitStats.getMonitorSecrecyGrade4Num())); | |||||
chars.add(new SecrecyGradeChart(5, cockpitStats.getMonitorSecrecyGrade5Num())); | |||||
return chars; | return chars; | ||||
} | } | ||||
private List<CockpitStatsVO.PasswordGradeChart> buidPasswordGradeCharts(CockpitStats cockpitStats) { | |||||
List<CockpitStatsVO.PasswordGradeChart> chars = Lists.newArrayList(); | |||||
chars.add(new CockpitStatsVO.PasswordGradeChart(1,cockpitStats.getMonitorPasswordGrade1Num())); | |||||
chars.add(new CockpitStatsVO.PasswordGradeChart(2,cockpitStats.getMonitorPasswordGrade2Num())); | |||||
chars.add(new CockpitStatsVO.PasswordGradeChart(3,cockpitStats.getMonitorPasswordGrade3Num())); | |||||
chars.add(new CockpitStatsVO.PasswordGradeChart(4,cockpitStats.getMonitorPasswordGrade4Num())); | |||||
chars.add(new CockpitStatsVO.PasswordGradeChart(5,cockpitStats.getMonitorPasswordGrade5Num())); | |||||
private List<PasswordGradeChart> buildPasswordGradeCharts(CockpitStats cockpitStats) { | |||||
List<PasswordGradeChart> chars = Lists.newArrayList(); | |||||
chars.add(new PasswordGradeChart(1, cockpitStats.getMonitorPasswordGrade1Num())); | |||||
chars.add(new PasswordGradeChart(2, cockpitStats.getMonitorPasswordGrade2Num())); | |||||
chars.add(new PasswordGradeChart(3, cockpitStats.getMonitorPasswordGrade3Num())); | |||||
chars.add(new PasswordGradeChart(4, cockpitStats.getMonitorPasswordGrade4Num())); | |||||
chars.add(new PasswordGradeChart(5, cockpitStats.getMonitorPasswordGrade5Num())); | |||||
return chars; | return chars; | ||||
} | } | ||||
} | } |
@@ -11,6 +11,8 @@ import com.hz.pm.api.performance.service.IPerformanceAppraisalProjectService; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | 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.ProjectInst; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | import com.hz.pm.api.projectlib.model.entity.ProjectStatusChange; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService; | import com.hz.pm.api.projectlib.service.INdProjectStatusChangeService; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
@@ -51,7 +53,7 @@ public class ProjectStatusHandler { | |||||
* @param project \ | * @param project \ | ||||
* @return \ | * @return \ | ||||
*/ | */ | ||||
public ProtraitProjectStatusSituationVO generateApproveStatus(Project project, String statusName, Integer instType) { | |||||
public ProtraitProjectStatusSituationVO genApproveStatus(Project project, String statusName, InstTypeEnum instType) { | |||||
ProtraitProjectStatusSituationVO vo = new ProtraitProjectStatusSituationVO(); | ProtraitProjectStatusSituationVO vo = new ProtraitProjectStatusSituationVO(); | ||||
if (Objects.isNull(project)) { | if (Objects.isNull(project)) { | ||||
return vo; | return vo; | ||||
@@ -65,7 +67,7 @@ public class ProjectStatusHandler { | |||||
//查询 项目与实例关联表 | //查询 项目与实例关联表 | ||||
ProjectInst unitInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) | ProjectInst unitInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) | ||||
.in(ProjectInst::getProjectId, ids) | .in(ProjectInst::getProjectId, ids) | ||||
.eq(ProjectInst::getInstType, instType) | |||||
.eq(ProjectInst::getInstType, instType.getCode()) | |||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if (Objects.isNull(unitInst)) { | if (Objects.isNull(unitInst)) { | ||||
return vo; | return vo; | ||||
@@ -89,8 +91,8 @@ public class ProjectStatusHandler { | |||||
* @param project \ | * @param project \ | ||||
* @return \ | * @return \ | ||||
*/ | */ | ||||
public ProtraitProjectStatusSituationVO generateStatus(Project project, String statusName, | |||||
Integer currStatus, Integer nextStatus) { | |||||
public ProtraitProjectStatusSituationVO genStatus(Project project, String statusName, | |||||
ProjectStatusEnum currStatus, ProjectStatusEnum nextStatus) { | |||||
ProtraitProjectStatusSituationVO vo = new ProtraitProjectStatusSituationVO(); | ProtraitProjectStatusSituationVO vo = new ProtraitProjectStatusSituationVO(); | ||||
if (Objects.isNull(project)) { | if (Objects.isNull(project)) { | ||||
return vo; | return vo; | ||||
@@ -101,9 +103,9 @@ public class ProjectStatusHandler { | |||||
//查询 状态机流转的时间点 | //查询 状态机流转的时间点 | ||||
LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers | LambdaQueryWrapper<ProjectStatusChange> pscQuery = Wrappers | ||||
.lambdaQuery(ProjectStatusChange.class) | .lambdaQuery(ProjectStatusChange.class) | ||||
.eq(ProjectStatusChange::getBeforeStatus, currStatus) | |||||
.eq(ProjectStatusChange::getBeforeStatus, currStatus.getCode()) | |||||
.eq(ProjectStatusChange::getProjectCode, projectCode) | .eq(ProjectStatusChange::getProjectCode, projectCode) | ||||
.eq(ProjectStatusChange::getAfterStatus, nextStatus) | |||||
.eq(ProjectStatusChange::getAfterStatus, nextStatus.getCode()) | |||||
.last(BizConst.LIMIT_1); | .last(BizConst.LIMIT_1); | ||||
ProjectStatusChange statusChange = statusChangeService.getOne(pscQuery); | ProjectStatusChange statusChange = statusChangeService.getOne(pscQuery); | ||||
if (Objects.isNull(statusChange)) { | if (Objects.isNull(statusChange)) { | ||||
@@ -1,10 +1,7 @@ | |||||
package com.hz.pm.api.dashboard.helper; | package com.hz.pm.api.dashboard.helper; | ||||
import cn.hutool.core.bean.BeanUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.hz.pm.api.dashboard.constant.AnalysisBasicConstant; | import com.hz.pm.api.dashboard.constant.AnalysisBasicConstant; | ||||
import com.hz.pm.api.dashboard.model.entity.CockpitStats; | |||||
import com.hz.pm.api.dashboard.model.vo.CockpitStatsVO; | |||||
import com.hz.pm.api.sys.model.entity.Region; | import com.hz.pm.api.sys.model.entity.Region; | ||||
import com.hz.pm.api.sys.service.IRegionService; | import com.hz.pm.api.sys.service.IRegionService; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -13,7 +10,6 @@ import org.springframework.stereotype.Component; | |||||
import java.util.HashMap; | import java.util.HashMap; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.Objects; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
/** | /** | ||||
@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.dashboard.constant.ChartTypeEnum; | import com.hz.pm.api.dashboard.constant.ChartTypeEnum; | ||||
import com.hz.pm.api.dashboard.constant.DashboardConstant; | |||||
import com.hz.pm.api.dashboard.constant.DashboardConstant.Protrait; | |||||
import com.hz.pm.api.dashboard.handle.ApplicationHandler; | import com.hz.pm.api.dashboard.handle.ApplicationHandler; | ||||
import com.hz.pm.api.dashboard.handle.ProjectStatusHandler; | import com.hz.pm.api.dashboard.handle.ProjectStatusHandler; | ||||
import com.hz.pm.api.dashboard.helper.DashboardChartAssembler; | import com.hz.pm.api.dashboard.helper.DashboardChartAssembler; | ||||
@@ -28,10 +28,10 @@ import com.hz.pm.api.gov.service.IGovOperationProjectBaseinfoService; | |||||
import com.hz.pm.api.portrait.service.IProjectTagService; | import com.hz.pm.api.portrait.service.IProjectTagService; | ||||
import com.hz.pm.api.projectdeclared.model.entity.Purchase; | import com.hz.pm.api.projectdeclared.model.entity.Purchase; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseService; | import com.hz.pm.api.projectdeclared.service.IPurchaseService; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectDelayApply; | import com.hz.pm.api.projectlib.model.entity.ProjectDelayApply; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.service.INdProjectDelayApplyService; | import com.hz.pm.api.projectlib.service.INdProjectDelayApplyService; | ||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -194,15 +194,12 @@ public class DashboardProjectManage { | |||||
return dashboardProjectSummaryVO; | return dashboardProjectSummaryVO; | ||||
} | } | ||||
public DashboardProjectCntSummaryVO getProjectCntSummary(QueryYearPO queryYearPO) { | |||||
public DashboardProjectCntSummaryVO getProjectCntSummary(QueryYearPO req) { | |||||
// 预算年度 | // 预算年度 | ||||
Integer year = queryYearPO.getYear(); | |||||
String regionCode = queryYearPO.getRegionCode(); | |||||
Integer year = req.getYear(); | |||||
List<Project> allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) | List<Project> allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) | ||||
.eq(Project::getNewest, true) | .eq(Project::getNewest, true) | ||||
.eq(Objects.nonNull(year), Project::getProjectYear, year) | |||||
.eq(StringUtils.isNotBlank(regionCode), Project::getAreaCode, regionCode) | |||||
); | |||||
.eq(Objects.nonNull(year), Project::getProjectYear, year)); | |||||
// 单位项目数量TOP5 | // 单位项目数量TOP5 | ||||
List<CompanyProjectCntBO> companyProjectCntTop5List = new ArrayList<>(); | List<CompanyProjectCntBO> companyProjectCntTop5List = new ArrayList<>(); | ||||
@@ -215,9 +212,7 @@ public class DashboardProjectManage { | |||||
companyProjectCntBO.setProjectCnt(projectList.size()); | companyProjectCntBO.setProjectCnt(projectList.size()); | ||||
companyProjectCntTop5List.add(companyProjectCntBO); | companyProjectCntTop5List.add(companyProjectCntBO); | ||||
} | } | ||||
companyProjectCntTop5List = companyProjectCntTop5List.stream() | |||||
.sorted(Comparator.comparing(CompanyProjectCntBO::getProjectCnt).reversed()) | |||||
.collect(Collectors.toList()); | |||||
companyProjectCntTop5List.sort(Comparator.comparing(CompanyProjectCntBO::getProjectCnt).reversed()); | |||||
if (companyProjectCntTop5List.size() > 5) { | if (companyProjectCntTop5List.size() > 5) { | ||||
companyProjectCntTop5List = companyProjectCntTop5List.subList(0, 5); | companyProjectCntTop5List = companyProjectCntTop5List.subList(0, 5); | ||||
} | } | ||||
@@ -269,10 +264,10 @@ public class DashboardProjectManage { | |||||
} | } | ||||
public DashboardInvestmentSummaryVO getInvestmentSummary(QueryYearPO queryYearPO) { | |||||
public DashboardInvestmentSummaryVO getInvestmentSummary(QueryYearPO req) { | |||||
// 预算年度 | // 预算年度 | ||||
Integer year = queryYearPO.getYear(); | |||||
String regionCode = queryYearPO.getRegionCode(); | |||||
Integer year = req.getYear(); | |||||
String regionCode = req.getRegionCode(); | |||||
List<Project> allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) | List<Project> allProjectList = iProjectService.list(Wrappers.lambdaQuery(Project.class) | ||||
.eq(Project::getNewest, true) | .eq(Project::getNewest, true) | ||||
.eq(Objects.nonNull(year), Project::getProjectYear, year) | .eq(Objects.nonNull(year), Project::getProjectYear, year) | ||||
@@ -289,9 +284,7 @@ public class DashboardProjectManage { | |||||
projectATIISBO.setApprovedTotalInvestmentIncrease(r.getApprovedTotalInvestmentIncrease()); | projectATIISBO.setApprovedTotalInvestmentIncrease(r.getApprovedTotalInvestmentIncrease()); | ||||
return projectATIISBO; | return projectATIISBO; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
projectATIISTop5List = projectATIISTop5List.stream() | |||||
.sorted(Comparator.comparing(ProjectATIISBO::getApprovedTotalInvestmentIncrease) | |||||
.reversed()).collect(Collectors.toList()); | |||||
projectATIISTop5List.sort(Comparator.comparing(ProjectATIISBO::getApprovedTotalInvestmentIncrease)); | |||||
if (projectATIISTop5List.size() > 5) { | if (projectATIISTop5List.size() > 5) { | ||||
projectATIISTop5List = projectATIISTop5List.subList(0, 5); | projectATIISTop5List = projectATIISTop5List.subList(0, 5); | ||||
} | } | ||||
@@ -314,9 +307,7 @@ public class DashboardProjectManage { | |||||
companyProjectCntBO.setApprovedTotalInvestmentIncreaseSum(approvedTotalInvestmentIncreaseSum); | companyProjectCntBO.setApprovedTotalInvestmentIncreaseSum(approvedTotalInvestmentIncreaseSum); | ||||
companyProjectATIISTop5List.add(companyProjectCntBO); | companyProjectATIISTop5List.add(companyProjectCntBO); | ||||
} | } | ||||
companyProjectATIISTop5List = companyProjectATIISTop5List.stream() | |||||
.sorted(Comparator.comparing(CompanyProjectCntBO::getApprovedTotalInvestmentIncreaseSum).reversed()) | |||||
.collect(Collectors.toList()); | |||||
companyProjectATIISTop5List.sort(Comparator.comparing(CompanyProjectCntBO::getApprovedTotalInvestmentIncreaseSum).reversed()); | |||||
if (companyProjectATIISTop5List.size() > 5) { | if (companyProjectATIISTop5List.size() > 5) { | ||||
companyProjectATIISTop5List = companyProjectATIISTop5List.subList(0, 5); | companyProjectATIISTop5List = companyProjectATIISTop5List.subList(0, 5); | ||||
} | } | ||||
@@ -379,7 +370,7 @@ public class DashboardProjectManage { | |||||
projectInfo.setSafetyInputRate(convertSafetyInputRate(project)); | projectInfo.setSafetyInputRate(convertSafetyInputRate(project)); | ||||
projectInfo.setStatus(Objects.nonNull(project.getStatus()) ? project.getStatus().toString() : null); | projectInfo.setStatus(Objects.nonNull(project.getStatus()) ? project.getStatus().toString() : null); | ||||
//3.项目状态情况 | //3.项目状态情况 | ||||
projectInfo.setStatusSituation(generateProjectStatus(project)); | |||||
projectInfo.setStatusSituation(genProjectStatus(project)); | |||||
res.setProjectInfo(projectInfo); | res.setProjectInfo(projectInfo); | ||||
} else if (Objects.nonNull(baseInfo)) { | } else if (Objects.nonNull(baseInfo)) { | ||||
ProtraitProjectInfoVO projectInfo = BeanUtil.copyProperties(baseInfo, ProtraitProjectInfoVO.class); | ProtraitProjectInfoVO projectInfo = BeanUtil.copyProperties(baseInfo, ProtraitProjectInfoVO.class); | ||||
@@ -388,7 +379,7 @@ public class DashboardProjectManage { | |||||
if (Objects.nonNull(apply)) { | if (Objects.nonNull(apply)) { | ||||
try { | try { | ||||
projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); | projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); | ||||
} catch (Exception e) { | |||||
} catch (Exception ignored) { | |||||
} | } | ||||
projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); | projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); | ||||
projectInfo.setBuildCycle(apply.getBaseProjDuration()); | projectInfo.setBuildCycle(apply.getBaseProjDuration()); | ||||
@@ -399,7 +390,7 @@ public class DashboardProjectManage { | |||||
projectInfo.setBuildOrgName(baseInfo.getBaseBuildDeprt()); | projectInfo.setBuildOrgName(baseInfo.getBaseBuildDeprt()); | ||||
projectInfo.setBuildOrgCode(baseInfo.getBaseBuildDeprtDing()); | projectInfo.setBuildOrgCode(baseInfo.getBaseBuildDeprtDing()); | ||||
//3.项目状态情况 | //3.项目状态情况 | ||||
projectInfo.setStatusSituation(generateProjectStatus(baseInfo)); | |||||
projectInfo.setStatusSituation(genProjectStatus(baseInfo)); | |||||
projectInfo.setStatus(baseInfo.getBaseProjSetProg()); | projectInfo.setStatus(baseInfo.getBaseProjSetProg()); | ||||
res.setProjectInfo(projectInfo); | res.setProjectInfo(projectInfo); | ||||
} else if (Objects.nonNull(operationBase)) { | } else if (Objects.nonNull(operationBase)) { | ||||
@@ -409,7 +400,7 @@ public class DashboardProjectManage { | |||||
if (Objects.nonNull(apply)) { | if (Objects.nonNull(apply)) { | ||||
try { | try { | ||||
projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); | projectInfo.setProjectYear(Integer.valueOf(apply.getBaseProjSetYear())); | ||||
} catch (Exception e) { | |||||
} catch (Exception ignored) { | |||||
} | } | ||||
projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); | projectInfo.setProjectIntroduction(apply.getBaseProjIntro()); | ||||
projectInfo.setBuildCycle(apply.getBaseProjDuration()); | projectInfo.setBuildCycle(apply.getBaseProjDuration()); | ||||
@@ -420,7 +411,7 @@ public class DashboardProjectManage { | |||||
projectInfo.setBuildOrgName(operationBase.getBaseBuildDeprt()); | projectInfo.setBuildOrgName(operationBase.getBaseBuildDeprt()); | ||||
projectInfo.setBuildOrgCode(operationBase.getBaseBuildDeprtDing()); | projectInfo.setBuildOrgCode(operationBase.getBaseBuildDeprtDing()); | ||||
//3.项目状态情况 | //3.项目状态情况 | ||||
projectInfo.setStatusSituation(generateProjectStatus(operationBase)); | |||||
projectInfo.setStatusSituation(genProjectStatus(operationBase)); | |||||
projectInfo.setStatus(operationBase.getBaseProjSetProg()); | projectInfo.setStatus(operationBase.getBaseProjSetProg()); | ||||
res.setProjectInfo(projectInfo); | res.setProjectInfo(projectInfo); | ||||
} | } | ||||
@@ -449,7 +440,7 @@ public class DashboardProjectManage { | |||||
final Double[] total = {0.0}; | final Double[] total = {0.0}; | ||||
array.forEach(j -> { | array.forEach(j -> { | ||||
JSONObject json = JSON.parseObject(JSON.toJSONString(j)); | JSONObject json = JSON.parseObject(JSON.toJSONString(j)); | ||||
Double safetyInputAmount = json.getDouble(DashboardConstant.Protrait.FEILD_SAFETYMONEY); | |||||
Double safetyInputAmount = json.getDouble(Protrait.FEILD_SAFETYMONEY); | |||||
if (Objects.nonNull(safetyInputAmount)) { | if (Objects.nonNull(safetyInputAmount)) { | ||||
total[0] += safetyInputAmount; | total[0] += safetyInputAmount; | ||||
} | } | ||||
@@ -458,16 +449,16 @@ public class DashboardProjectManage { | |||||
//申报金额 | //申报金额 | ||||
BigDecimal declareAmount = project.getDeclareAmount(); | BigDecimal declareAmount = project.getDeclareAmount(); | ||||
if (Objects.isNull(declareAmount) || declareAmount.compareTo(BigDecimal.ZERO) == 0) { | if (Objects.isNull(declareAmount) || declareAmount.compareTo(BigDecimal.ZERO) == 0) { | ||||
return DashboardConstant.Protrait.ZREO_PERCEN; | |||||
return Protrait.ZREO_PERCEN; | |||||
} | } | ||||
BigDecimal rate = BigDecimal.valueOf(totalAmount).multiply(BigDecimal.valueOf(100)) | BigDecimal rate = BigDecimal.valueOf(totalAmount).multiply(BigDecimal.valueOf(100)) | ||||
.divide(declareAmount, BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP) | .divide(declareAmount, BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP) | ||||
.stripTrailingZeros(); | .stripTrailingZeros(); | ||||
return rate.toPlainString(); | return rate.toPlainString(); | ||||
} catch (Exception e) { | |||||
} catch (Exception ignored) { | |||||
} | } | ||||
} | } | ||||
return DashboardConstant.Protrait.ZREO_PERCEN; | |||||
return Protrait.ZREO_PERCEN; | |||||
} | } | ||||
/** | /** | ||||
@@ -476,7 +467,7 @@ public class DashboardProjectManage { | |||||
* @param project | * @param project | ||||
* @return | * @return | ||||
*/ | */ | ||||
private List<ProtraitProjectStatusSituationVO> generateProjectStatus(Project project) { | |||||
private List<ProtraitProjectStatusSituationVO> genProjectStatus(Project project) { | |||||
final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | ||||
//1.计划(单位内部审核) | //1.计划(单位内部审核) | ||||
res.add(new ProtraitProjectStatusSituationVO()); | res.add(new ProtraitProjectStatusSituationVO()); | ||||
@@ -489,77 +480,70 @@ public class DashboardProjectManage { | |||||
//5.验收(终验) | //5.验收(终验) | ||||
res.add(new ProtraitProjectStatusSituationVO()); | res.add(new ProtraitProjectStatusSituationVO()); | ||||
//6.运维(todo: 运维时间还没有) | //6.运维(todo: 运维时间还没有) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.OPERATION).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); | |||||
//7.绩效 | //7.绩效 | ||||
res.add(new ProtraitProjectStatusSituationVO()); | res.add(new ProtraitProjectStatusSituationVO()); | ||||
//8.注销(todo: 还没有注销功能) | //8.注销(todo: 还没有注销功能) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.LOG_OFF).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); | |||||
CompletableFuture.allOf( | CompletableFuture.allOf( | ||||
CompletableFuture.runAsync(() -> { | |||||
res.set(0, statusHandler.generateApproveStatus(project, DashboardConstant.Protrait.PLAN, InstTypeEnum.UNIT_INNER_AUDIT.getCode())); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> { | |||||
res.set(1, statusHandler.generateApproveStatus(project, DashboardConstant.Protrait.DECLARED, InstTypeEnum.PRELIMINARY_PREVIEW.getCode())); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> { | |||||
res.set(2, statusHandler.generateApproveStatus(project, DashboardConstant.Protrait.APPROVE, InstTypeEnum.CONSTRUCTION_PLAN_REVIEW.getCode())); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> { | |||||
res.set(3, statusHandler.generateStatus(project, DashboardConstant.Protrait.CONSTRUCTION, | |||||
ProjectStatusEnum.UNDER_CONSTRUCTION.getCode(), ProjectStatusEnum.TO_BE_FINALLY_INSPECTED.getCode())); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> { | |||||
res.set(4, statusHandler.generateApproveStatus(project, DashboardConstant.Protrait.ACCEPT, InstTypeEnum.PROJECT_FINAL_INSPECTION.getCode())); | |||||
}, ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> { | |||||
res.set(6, statusHandler.generatePerformanceStatus(project)); | |||||
}, ForkJoinPool.commonPool()) | |||||
CompletableFuture.runAsync(() -> res.set(0, statusHandler.genApproveStatus(project, Protrait.PLAN, | |||||
InstTypeEnum.UNIT_INNER_AUDIT)), ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> res.set(1, statusHandler.genApproveStatus(project, Protrait.DECLARED, | |||||
InstTypeEnum.PRELIMINARY_PREVIEW)), ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> res.set(2, statusHandler.genApproveStatus(project, Protrait.APPROVE, | |||||
InstTypeEnum.CONSTRUCTION_PLAN_REVIEW)), ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> res.set(3, statusHandler.genStatus(project, Protrait.CONSTRUCTION, | |||||
ProjectStatusEnum.UNDER_CONSTRUCTION, ProjectStatusEnum.TO_BE_FINALLY_INSPECTED)), ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> res.set(4, statusHandler.genApproveStatus(project, Protrait.ACCEPT, | |||||
InstTypeEnum.PROJECT_FINAL_INSPECTION)), ForkJoinPool.commonPool()), | |||||
CompletableFuture.runAsync(() -> res.set(6, statusHandler.generatePerformanceStatus(project)), | |||||
ForkJoinPool.commonPool()) | |||||
).join(); | ).join(); | ||||
return res; | return res; | ||||
} | } | ||||
private List<ProtraitProjectStatusSituationVO> generateProjectStatus(GovBizProjectBaseinfo baseinfo) { | |||||
private List<ProtraitProjectStatusSituationVO> genProjectStatus(GovBizProjectBaseinfo baseinfo) { | |||||
final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | ||||
//1.计划(单位内部审核) | //1.计划(单位内部审核) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.PLAN, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.PLAN, null)); | |||||
//2.申报(项目预审) | //2.申报(项目预审) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.DECLARED, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.DECLARED, null)); | |||||
//3.审批(建设方案审批) | //3.审批(建设方案审批) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.APPROVE, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.APPROVE, null)); | |||||
//4.建设(立项后的建设中) | //4.建设(立项后的建设中) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.CONSTRUCTION, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.CONSTRUCTION, null)); | |||||
//5.验收(终验) | //5.验收(终验) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.ACCEPT, | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, | |||||
Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); | Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); | ||||
//6.运维(todo: 运维时间还没有) | //6.运维(todo: 运维时间还没有) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.OPERATION).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); | |||||
//7.绩效 | //7.绩效 | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.ACCEPT, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, null)); | |||||
//8.注销(todo: 还没有注销功能) | //8.注销(todo: 还没有注销功能) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.LOG_OFF).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); | |||||
return res; | return res; | ||||
} | } | ||||
private List<ProtraitProjectStatusSituationVO> generateProjectStatus(GovOperationProjectBaseinfo baseinfo) { | |||||
private List<ProtraitProjectStatusSituationVO> genProjectStatus(GovOperationProjectBaseinfo baseinfo) { | |||||
final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | final List<ProtraitProjectStatusSituationVO> res = Lists.newArrayList(); | ||||
//1.计划(单位内部审核) | //1.计划(单位内部审核) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.PLAN, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.PLAN, null)); | |||||
//2.申报(项目预审) | //2.申报(项目预审) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.DECLARED, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.DECLARED, null)); | |||||
//3.审批(建设方案审批) | //3.审批(建设方案审批) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.APPROVE, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.APPROVE, null)); | |||||
//4.建设(立项后的建设中) | //4.建设(立项后的建设中) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.CONSTRUCTION, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.CONSTRUCTION, null)); | |||||
//5.验收(终验) | //5.验收(终验) | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.ACCEPT, | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, | |||||
Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); | Objects.nonNull(baseinfo.getBaseProjSetProg()) && "07".equals(baseinfo.getBaseProjSetProg()) ? baseinfo.getTongTime() : null)); | ||||
//6.运维(todo: 运维时间还没有) | //6.运维(todo: 运维时间还没有) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.OPERATION).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.OPERATION).build()); | |||||
//7.绩效 | //7.绩效 | ||||
res.add(new ProtraitProjectStatusSituationVO(DashboardConstant.Protrait.ACCEPT, null)); | |||||
res.add(new ProtraitProjectStatusSituationVO(Protrait.ACCEPT, null)); | |||||
//8.注销(todo: 还没有注销功能) | //8.注销(todo: 还没有注销功能) | ||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(DashboardConstant.Protrait.LOG_OFF).build()); | |||||
res.add(ProtraitProjectStatusSituationVO.builder().statusName(Protrait.LOG_OFF).build()); | |||||
return res; | return res; | ||||
} | } | ||||
} | } |
@@ -71,7 +71,7 @@ public class EarlyWarningStatisticsManage { | |||||
EarlyWarningStatisticsVO res = new EarlyWarningStatisticsVO(); | EarlyWarningStatisticsVO res = new EarlyWarningStatisticsVO(); | ||||
LambdaQueryWrapper<WflowEarlyWarningRecords> wrapper = Wrappers.lambdaQuery(WflowEarlyWarningRecords.class); | LambdaQueryWrapper<WflowEarlyWarningRecords> wrapper = Wrappers.lambdaQuery(WflowEarlyWarningRecords.class); | ||||
EarlyWarningUtil.buildPermissonWrapper(wrapper,user); | |||||
EarlyWarningUtil.buildPermissionWrapper(wrapper,user); | |||||
List<WflowEarlyWarningRecords> records = earlyWarningRecordsService.list(wrapper); | List<WflowEarlyWarningRecords> records = earlyWarningRecordsService.list(wrapper); | ||||
//累积总告警数 | //累积总告警数 | ||||
res.setAccumulatedAlarmsTotal(records.size()); | res.setAccumulatedAlarmsTotal(records.size()); | ||||
@@ -57,8 +57,8 @@ public class MeetingStatisticsManage { | |||||
List<Meeting> meetings = meetingService.list(Wrappers.lambdaQuery(Meeting.class)); | List<Meeting> meetings = meetingService.list(Wrappers.lambdaQuery(Meeting.class)); | ||||
//查出 年份的 会议数据 | //查出 年份的 会议数据 | ||||
meetings = meetings.stream().filter(m -> { | meetings = meetings.stream().filter(m -> { | ||||
if(Objects.nonNull(m.getStartTime()) && | |||||
(Objects.isNull(year) || year.equals(m.getStartTime().getYear()))){ | |||||
if (Objects.nonNull(m.getStartTime()) && | |||||
(Objects.isNull(year) || year.equals(m.getStartTime().getYear()))) { | |||||
return Boolean.TRUE; | return Boolean.TRUE; | ||||
} | } | ||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
@@ -72,10 +72,10 @@ public class MeetingStatisticsManage { | |||||
//评审数 | //评审数 | ||||
List<ExpertReview> expertReviews = Lists.newArrayList(); | List<ExpertReview> expertReviews = Lists.newArrayList(); | ||||
Integer reviewsTotal = 0; | Integer reviewsTotal = 0; | ||||
if(CollUtil.isNotEmpty(meetingIds)){ | |||||
if (CollUtil.isNotEmpty(meetingIds)) { | |||||
expertReviews = expertReviewService.list(Wrappers.lambdaQuery(ExpertReview.class) | expertReviews = expertReviewService.list(Wrappers.lambdaQuery(ExpertReview.class) | ||||
.eq(ExpertReview::getIsFinal, Boolean.TRUE) | .eq(ExpertReview::getIsFinal, Boolean.TRUE) | ||||
.in(ExpertReview::getMeetingId,meetingIds)); | |||||
.in(ExpertReview::getMeetingId, meetingIds)); | |||||
reviewsTotal = expertReviews.size(); | reviewsTotal = expertReviews.size(); | ||||
} | } | ||||
//通过的评审 | //通过的评审 | ||||
@@ -91,18 +91,15 @@ public class MeetingStatisticsManage { | |||||
res.setPassReview(passExpertReviews.size()); | res.setPassReview(passExpertReviews.size()); | ||||
res.setNotPassRate(reviewsTotal.compareTo(0) == 0 ? BigDecimal.ZERO : | res.setNotPassRate(reviewsTotal.compareTo(0) == 0 ? BigDecimal.ZERO : | ||||
BigDecimal.valueOf(notpassExpertReviews.size()).multiply(BigDecimal.valueOf(100) | BigDecimal.valueOf(notpassExpertReviews.size()).multiply(BigDecimal.valueOf(100) | ||||
.divide(BigDecimal.valueOf(reviewsTotal), RoundingMode.HALF_UP))); | |||||
.divide(BigDecimal.valueOf(reviewsTotal), RoundingMode.HALF_UP))); | |||||
//各区域 | //各区域 | ||||
List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY) | List<RegionDTO> regions = regionCacheHelper.listChildren(RegionConst.RC_HZ, RegionConst.RL_CITY) | ||||
.stream().filter(r -> r.getRegionLevel().equals(RegionConst.RL_COUNTY)) | .stream().filter(r -> r.getRegionLevel().equals(RegionConst.RL_COUNTY)) | ||||
.sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | .sorted(Comparator.comparing(RegionDTO::getRegionCode)).collect(Collectors.toList()); | ||||
List<DataDTO> regionMeetngs = Lists.newArrayList(); | List<DataDTO> regionMeetngs = Lists.newArrayList(); | ||||
for(RegionDTO region : regions){ | |||||
regionMeetngs.add(DataDTO.of(region.getRegionName(),region.getRegionCode(),meetings.stream().filter(m -> { | |||||
return Boolean.FALSE; | |||||
}).collect(Collectors.toList()).size())); | |||||
for (RegionDTO region : regions) { | |||||
regionMeetngs.add(DataDTO.of(region.getRegionName(), region.getRegionCode(), meetings.size())); | |||||
} | } | ||||
res.setRegionMeetings(regionMeetngs); | res.setRegionMeetings(regionMeetngs); | ||||
@@ -110,14 +107,14 @@ public class MeetingStatisticsManage { | |||||
List<DataDTO> meetingTypes = Lists.newArrayList(); | List<DataDTO> meetingTypes = Lists.newArrayList(); | ||||
meetingTypes.add(DataDTO.of("预审会议", ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode().toString(), | meetingTypes.add(DataDTO.of("预审会议", ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode().toString(), | ||||
meetings.stream().filter(m -> { | meetings.stream().filter(m -> { | ||||
if(StringUtils.isNotBlank(m.getType()) && | |||||
if (StringUtils.isNotBlank(m.getType()) && | |||||
m.getType().equals(ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode() | m.getType().equals(ReviewTemplateTypeEnum.PRELIMINARY_SCHEME_REVIEW.getCode() | ||||
.toString())){ | |||||
.toString())) { | |||||
return Boolean.TRUE; | return Boolean.TRUE; | ||||
} | } | ||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
}).collect(Collectors.toList()).size())); | }).collect(Collectors.toList()).size())); | ||||
Long yanshouCount = meetings.stream().filter(m -> { | |||||
long yanshouCount = meetings.stream().filter(m -> { | |||||
if (StringUtils.isNotBlank(m.getType()) && | if (StringUtils.isNotBlank(m.getType()) && | ||||
m.getType().equals(ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode() | m.getType().equals(ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode() | ||||
.toString())) { | .toString())) { | ||||
@@ -125,13 +122,13 @@ public class MeetingStatisticsManage { | |||||
} | } | ||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
}).count(); | }).count(); | ||||
meetingTypes.add(DataDTO.of("验收会议",ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode().toString(), | |||||
yanshouCount.intValue())); | |||||
meetingTypes.add(DataDTO.of("验收会议", ReviewTemplateTypeEnum.ACCEPTANCE_SCHEME_REVIEW.getCode().toString(), | |||||
(int) yanshouCount)); | |||||
res.setMeetingTypes(meetingTypes); | res.setMeetingTypes(meetingTypes); | ||||
//各区县评审 不通过率 | //各区县评审 不通过率 | ||||
List<DataDTO> regionNotpassReview = Lists.newArrayList(); | List<DataDTO> regionNotpassReview = Lists.newArrayList(); | ||||
for(RegionDTO region : regions){ | |||||
for (RegionDTO region : regions) { | |||||
DataDTO data = new DataDTO(); | DataDTO data = new DataDTO(); | ||||
data.setCode(region.getRegionCode()); | data.setCode(region.getRegionCode()); | ||||
data.setName(region.getRegionName()); | data.setName(region.getRegionName()); | ||||
@@ -151,7 +148,7 @@ public class MeetingStatisticsManage { | |||||
data.setRate(CollUtil.isEmpty(regionReviews) ? BigDecimal.ZERO : | data.setRate(CollUtil.isEmpty(regionReviews) ? BigDecimal.ZERO : | ||||
BigDecimal.valueOf(regionNotpass).multiply(BigDecimal.valueOf(100)) | BigDecimal.valueOf(regionNotpass).multiply(BigDecimal.valueOf(100)) | ||||
.divide(BigDecimal.valueOf(regionReviews.size()),BigDecimal.ROUND_CEILING,RoundingMode.HALF_UP)); | |||||
.divide(BigDecimal.valueOf(regionReviews.size()), BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP)); | |||||
regionNotpassReview.add(data); | regionNotpassReview.add(data); | ||||
} | } | ||||
@@ -176,7 +173,7 @@ public class MeetingStatisticsManage { | |||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
List<String> projectCodes = orgProjects.stream().map(Project::getProjectCode) | List<String> projectCodes = orgProjects.stream().map(Project::getProjectCode) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
if(CollUtil.isEmpty(projectCodes)){ | |||||
if (CollUtil.isEmpty(projectCodes)) { | |||||
return data; | return data; | ||||
} | } | ||||
List<ExpertReview> reviews = finalExpertReviews.stream().filter(r -> Objects.nonNull(r.getProjectCode()) && | List<ExpertReview> reviews = finalExpertReviews.stream().filter(r -> Objects.nonNull(r.getProjectCode()) && | ||||
@@ -186,7 +183,7 @@ public class MeetingStatisticsManage { | |||||
.count(); | .count(); | ||||
data.setRate(CollUtil.isEmpty(reviews) ? BigDecimal.ZERO : | data.setRate(CollUtil.isEmpty(reviews) ? BigDecimal.ZERO : | ||||
BigDecimal.valueOf(orgNotpass).multiply(BigDecimal.valueOf(100)) | BigDecimal.valueOf(orgNotpass).multiply(BigDecimal.valueOf(100)) | ||||
.divide(BigDecimal.valueOf(reviews.size()),BigDecimal.ROUND_CEILING,RoundingMode.HALF_UP)); | |||||
.divide(BigDecimal.valueOf(reviews.size()), BigDecimal.ROUND_CEILING, RoundingMode.HALF_UP)); | |||||
return data; | return data; | ||||
}) | }) | ||||
.filter(d -> Objects.nonNull(d.getRate())) | .filter(d -> Objects.nonNull(d.getRate())) | ||||
@@ -1,6 +1,5 @@ | |||||
package com.hz.pm.api.dashboard.manage; | package com.hz.pm.api.dashboard.manage; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.model.entity.DataDTO; | import com.hz.pm.api.common.model.entity.DataDTO; | ||||
@@ -10,15 +9,15 @@ import com.hz.pm.api.meeting.entity.domain.Meeting; | |||||
import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | import com.hz.pm.api.meeting.entity.domain.MeetingExpert; | ||||
import com.hz.pm.api.meeting.service.IMeetingExpertService; | import com.hz.pm.api.meeting.service.IMeetingExpertService; | ||||
import com.hz.pm.api.meeting.service.IMeetingService; | import com.hz.pm.api.meeting.service.IMeetingService; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.math.RoundingMode; | import java.math.RoundingMode; | ||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
import java.time.LocalDate; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
/** | /** | ||||
@@ -36,22 +35,31 @@ public class ProjectCostStatisticsManage { | |||||
private final IMeetingService meetingService; | private final IMeetingService meetingService; | ||||
List<Integer> thisTwoYears = Lists.newArrayList(LocalDateTime.now().getYear() - 1 | |||||
,LocalDateTime.now().getYear()); | |||||
//评审费 每人500 (0.05万) | |||||
private static final BigDecimal REVIEW_AMOUNT_EXPERT = DashboardConstant.Expert.REVIEW_AOUMT_EXPERT; | |||||
private List<Integer> getRecentTwoYears() { | |||||
int currYear = LocalDate.now().getYear(); | |||||
return Arrays.asList(currYear - 1, currYear); | |||||
} | |||||
public CostStatisticsVO statistics() { | public CostStatisticsVO statistics() { | ||||
CostStatisticsVO res = new CostStatisticsVO(); | CostStatisticsVO res = new CostStatisticsVO(); | ||||
List<Meeting> meetings = meetingService.list(Wrappers.lambdaQuery(Meeting.class)); | |||||
List<Long> meetingIds = meetings.stream().map(Meeting::getId) | |||||
.collect(Collectors.toList()); | |||||
List<Meeting> meetings = meetingService.list(Wrappers.lambdaQuery(Meeting.class) | |||||
.select(Meeting::getStartTime, Meeting::getId)); | |||||
//算出所有的 同意的专家 | //算出所有的 同意的专家 | ||||
List<MeetingExpert> meetingExperts = meetingExpertService.listAgreedExperts(meetingIds); | |||||
List<MeetingExpert> meetingExperts; | |||||
//评审费 每人500 (0.05万) | |||||
BigDecimal reviewAoumtExpert = DashboardConstant.Expert.REVIEW_AOUMT_EXPERT; | |||||
if (meetings.isEmpty()) { | |||||
meetingExperts = Collections.emptyList(); | |||||
} else { | |||||
List<Long> meetingIds = CollUtils.fieldList(meetings, Meeting::getId); | |||||
meetingExperts = meetingExpertService.listAgreedExperts(meetingIds); | |||||
} | |||||
//计算累积 | //计算累积 | ||||
res.setReviewAmount(reviewAoumtExpert.multiply(BigDecimal.valueOf(meetingExperts.size()))); | |||||
res.setReviewAmount(REVIEW_AMOUNT_EXPERT.multiply(BigDecimal.valueOf(meetingExperts.size()))); | |||||
res.setPricingAmount(BigDecimal.ZERO); | res.setPricingAmount(BigDecimal.ZERO); | ||||
//近两年 | //近两年 | ||||
@@ -64,30 +72,27 @@ public class ProjectCostStatisticsManage { | |||||
DataDTO pricingAvg = new DataDTO(); | DataDTO pricingAvg = new DataDTO(); | ||||
pricingAvg.setName("核价费"); | pricingAvg.setName("核价费"); | ||||
BigDecimal reviewTwoYearTotal = BigDecimal.ZERO; | BigDecimal reviewTwoYearTotal = BigDecimal.ZERO; | ||||
for(Integer thisYear : thisTwoYears){ | |||||
Map<Integer, List<Meeting>> meetingMapYear = CollUtils.group(meetings, w -> w.getStartTime().getYear()); | |||||
Map<Long, List<MeetingExpert>> expertMapMeetingId = CollUtils.group(meetingExperts, MeetingExpert::getMeetingId); | |||||
for (Integer thisYear : getRecentTwoYears()) { | |||||
//查出 年份的 会议数据 | //查出 年份的 会议数据 | ||||
List<Meeting> yearMeetings = meetings.stream().filter(m -> { | |||||
if(Objects.nonNull(m.getStartTime()) && | |||||
( thisYear.equals(m.getStartTime().getYear()))){ | |||||
return Boolean.TRUE; | |||||
} | |||||
return Boolean.FALSE; | |||||
}).collect(Collectors.toList()); | |||||
List<Long> yearMeetingIds = yearMeetings.stream().map(Meeting::getId) | |||||
List<Meeting> yearMeetings = meetingMapYear.getOrDefault(thisYear, Collections.emptyList()); | |||||
List<MeetingExpert> yearMeetingExperts = yearMeetings.stream() | |||||
.map(w -> expertMapMeetingId.get(w.getId())) | |||||
.filter(Objects::nonNull) | |||||
.flatMap(Collection::stream) | |||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
//算出所有的 同意的专家 | //算出所有的 同意的专家 | ||||
List<MeetingExpert> yearMeetingExperts = Lists.newArrayList(); | |||||
if(CollUtil.isNotEmpty(yearMeetingIds)){ | |||||
yearMeetingExperts = meetingExpertService.listAgreedExperts(yearMeetingIds); | |||||
} | |||||
twoYearsReviews.add(DataDTO.of(thisYear.toString(),reviewAoumtExpert.multiply(BigDecimal | |||||
.valueOf(yearMeetingExperts.size())))); | |||||
twoYearsPricing.add(DataDTO.of(thisYear.toString(),BigDecimal.ZERO)); | |||||
reviewTwoYearTotal = reviewTwoYearTotal.add(reviewAoumtExpert.multiply(BigDecimal | |||||
.valueOf(yearMeetingExperts.size()))); | |||||
BigDecimal yearExpertCnt = BigDecimal.valueOf(yearMeetingExperts.size()); | |||||
BigDecimal yearExpertAmount = REVIEW_AMOUNT_EXPERT.multiply(yearExpertCnt); | |||||
twoYearsReviews.add(DataDTO.of(thisYear.toString(), yearExpertAmount)); | |||||
twoYearsPricing.add(DataDTO.of(thisYear.toString(), BigDecimal.ZERO)); | |||||
reviewTwoYearTotal = reviewTwoYearTotal.add(yearExpertAmount); | |||||
} | } | ||||
reviewAvg.setAmount(reviewTwoYearTotal.divide(BigDecimal.valueOf(2),BigDecimal.ROUND_CEILING, | |||||
reviewAvg.setAmount(reviewTwoYearTotal.divide(BigDecimal.valueOf(2), BigDecimal.ROUND_CEILING, | |||||
RoundingMode.HALF_UP)); | RoundingMode.HALF_UP)); | ||||
twoYearsAvg.add(reviewAvg); | twoYearsAvg.add(reviewAvg); | ||||
twoYearsAvg.add(pricingAvg); | twoYearsAvg.add(pricingAvg); | ||||
@@ -5,13 +5,11 @@ import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
import lombok.Data; | import lombok.Data; | ||||
import java.io.Serializable; | |||||
import java.util.List; | import java.util.List; | ||||
@Data | @Data | ||||
@ApiModel(value = "项目统计") | @ApiModel(value = "项目统计") | ||||
public class ProjectStatisticsVO implements Serializable { | |||||
private static final long serialVersionUID = 1L; | |||||
public class ProjectStatisticsVO { | |||||
@ApiModelProperty("项目计划数") | @ApiModelProperty("项目计划数") | ||||
private Integer planTotal = 0; | private Integer planTotal = 0; | ||||
@@ -7,7 +7,7 @@ import java.util.List; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
* DataScopeDto | |||||
* DataScopeDTO | |||||
* </p> | * </p> | ||||
* | * | ||||
* @author WendyYang | * @author WendyYang | ||||
@@ -18,14 +18,8 @@ public class DataScopeDTO { | |||||
private RoleEnum role; | private RoleEnum role; | ||||
private List<Long> regionIds; | |||||
private List<String> regionCodes; | |||||
private String orgCode; | private String orgCode; | ||||
private String employeeCode; | |||||
private Long userId; | private Long userId; | ||||
} | } |
@@ -1,7 +1,7 @@ | |||||
package com.hz.pm.api.datascope.provider; | package com.hz.pm.api.datascope.provider; | ||||
import com.ningdatech.basic.util.SpringUtils; | |||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.ningdatech.basic.util.SpringUtils; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import java.io.Serializable; | import java.io.Serializable; | ||||
@@ -19,7 +19,7 @@ import java.util.Optional; | |||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class DataScopeContext implements Serializable { | public class DataScopeContext implements Serializable { | ||||
private static final String WARN_MSG = "请先创建数据权限[%s]的实现类,使其实现 DataScopeProvider"; | |||||
private static final String WARN_MSG = "请先创建数据权限[%s]的实现类"; | |||||
private static final Map<String, DataScopeProvider> DSP_MAP; | private static final Map<String, DataScopeProvider> DSP_MAP; | ||||
@@ -35,7 +35,7 @@ public class DataScopeContext implements Serializable { | |||||
return dataScopeProvider.findDataFieldProperty(); | return dataScopeProvider.findDataFieldProperty(); | ||||
} | } | ||||
public static Optional<DataScopeDTO> getDataScopeHasUserId(String roleCode,Long userId) { | |||||
public static Optional<DataScopeDTO> getDataScopeHasUserId(String roleCode, Long userId) { | |||||
DataScopeProvider dataScopeProvider = DSP_MAP.get(roleCode); | DataScopeProvider dataScopeProvider = DSP_MAP.get(roleCode); | ||||
if (dataScopeProvider == null) { | if (dataScopeProvider == null) { | ||||
throw new IllegalArgumentException(String.format(WARN_MSG, roleCode)); | throw new IllegalArgumentException(String.format(WARN_MSG, roleCode)); | ||||
@@ -1,6 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.provider.DataScopeProvider; | import com.hz.pm.api.datascope.provider.DataScopeProvider; | ||||
@@ -30,23 +29,19 @@ public class DashboardUserDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRegionCodes(Lists.newArrayList(userFullInfo.getRegionCode())); | |||||
ds.setUserId(userFullInfo.getUserId()); | |||||
ds.setUserId(user.getUserId()); | |||||
ds.setRole(RoleEnum.DASHBOARD); | ds.setRole(RoleEnum.DASHBOARD); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(userId); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRegionCodes(Lists.newArrayList(userFullInfo.getRegionCode())); | |||||
ds.setUserId(userFullInfo.getUserId()); | |||||
ds.setUserId(user.getUserId()); | |||||
ds.setRole(RoleEnum.DASHBOARD); | ds.setRole(RoleEnum.DASHBOARD); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
} | } |
@@ -1,11 +1,8 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.provider.DataScopeProvider; | import com.hz.pm.api.datascope.provider.DataScopeProvider; | ||||
import com.hz.pm.api.sys.model.dto.RegionDTO; | |||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
@@ -13,9 +10,6 @@ import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.Collections; | |||||
import java.util.List; | |||||
import java.util.Objects; | |||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -30,25 +24,15 @@ import java.util.Optional; | |||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class ExpertAdminDataScopeProviderImpl implements DataScopeProvider { | public class ExpertAdminDataScopeProviderImpl implements DataScopeProvider { | ||||
private final RegionCacheHelper regionCacheHelper; | |||||
private final UserInfoHelper userInfoHelper; | private final UserInfoHelper userInfoHelper; | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
if (Objects.isNull(user.getRegionLevel())) { | |||||
ds.setRegionIds(Collections.emptyList()); | |||||
ds.setRegionCodes(Collections.emptyList()); | |||||
} else { | |||||
List<RegionDTO> regions = regionCacheHelper.listChildren(user.getRegionCode(), user.getRegionLevel()); | |||||
ds.setRegionCodes(CollUtils.fieldList(regions, RegionDTO::getRegionCode)); | |||||
ds.setRegionIds(CollUtils.fieldList(regions, RegionDTO::getId)); | |||||
} | |||||
ds.setRole(RoleEnum.EXPERT_ADMIN); | ds.setRole(RoleEnum.EXPERT_ADMIN); | ||||
ds.setUserId(user.getUserId()); | ds.setUserId(user.getUserId()); | ||||
ds.setEmployeeCode(user.getEmployeeCode()); | |||||
ds.setOrgCode(user.getOrganizationCode()); | |||||
ds.setOrgCode(user.getMhUnitIdStr()); | |||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -56,18 +40,9 @@ public class ExpertAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO user = userInfoHelper.getUserFullInfo(userId); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
if (Objects.isNull(user.getRegionLevel())) { | |||||
ds.setRegionIds(Collections.emptyList()); | |||||
ds.setRegionCodes(Collections.emptyList()); | |||||
} else { | |||||
List<RegionDTO> regions = regionCacheHelper.listChildren(user.getRegionCode(), user.getRegionLevel()); | |||||
ds.setRegionCodes(CollUtils.fieldList(regions, RegionDTO::getRegionCode)); | |||||
ds.setRegionIds(CollUtils.fieldList(regions, RegionDTO::getId)); | |||||
} | |||||
ds.setRole(RoleEnum.EXPERT_ADMIN); | ds.setRole(RoleEnum.EXPERT_ADMIN); | ||||
ds.setUserId(user.getUserId()); | ds.setUserId(user.getUserId()); | ||||
ds.setEmployeeCode(user.getEmployeeCode()); | |||||
ds.setOrgCode(user.getOrganizationCode()); | |||||
ds.setOrgCode(user.getMhUnitIdStr()); | |||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -1,6 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | import com.hz.pm.api.common.helper.RegionCacheHelper; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
@@ -12,9 +11,7 @@ import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.Collection; | |||||
import java.util.Optional; | import java.util.Optional; | ||||
import java.util.stream.Collectors; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -36,30 +33,18 @@ public class ExpertDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
//所有 丽水市的code | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(RegionConst.RC_HZ, | |||||
RegionConst.RL_CITY); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(regionCodes.stream().collect(Collectors.toList())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.EXPERT); | ds.setRole(RoleEnum.EXPERT); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
//所有 丽水市的code | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(RegionConst.RC_HZ, | |||||
RegionConst.RL_CITY); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(regionCodes.stream().collect(Collectors.toList())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.EXPERT); | ds.setRole(RoleEnum.EXPERT); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
} | } |
@@ -1,9 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.provider.DataScopeProvider; | import com.hz.pm.api.datascope.provider.DataScopeProvider; | ||||
@@ -14,8 +10,6 @@ import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.ArrayList; | |||||
import java.util.Collection; | |||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -31,26 +25,14 @@ import java.util.Optional; | |||||
@Component("HIGH_MEMBER") | @Component("HIGH_MEMBER") | ||||
public class HigherUserDataScopeProviderImpl implements DataScopeProvider { | public class HigherUserDataScopeProviderImpl implements DataScopeProvider { | ||||
private final RegionCacheHelper regionCacheHelper; | |||||
private final UserInfoHelper userInfoHelper; | private final UserInfoHelper userInfoHelper; | ||||
//和区域管理员一样 | //和区域管理员一样 | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
//借由 丽水市的code 来映射市本级的regionCode | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(userFullInfo.getRegionCode(), | |||||
RegionConst.RL_CITY); | |||||
//如果不是市本级的话 就直接放入本区域的县就好了 | |||||
if(CollUtil.isEmpty(regionCodes)){ | |||||
regionCodes = Lists.newArrayList(); | |||||
regionCodes.add(userFullInfo.getRegionCode()); | |||||
} | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.REGION_MANAGER); | ds.setRole(RoleEnum.REGION_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -59,18 +41,9 @@ public class HigherUserDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
//借由 丽水市的code 来映射市本级的regionCode | //借由 丽水市的code 来映射市本级的regionCode | ||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(userFullInfo.getRegionCode(), | |||||
RegionConst.RL_CITY); | |||||
//如果不是市本级的话 就直接放入本区域的县就好了 | |||||
if(CollUtil.isEmpty(regionCodes)){ | |||||
regionCodes = Lists.newArrayList(); | |||||
regionCodes.add(userFullInfo.getRegionCode()); | |||||
} | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.REGION_MANAGER); | ds.setRole(RoleEnum.REGION_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -1,6 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.provider.DataScopeProvider; | import com.hz.pm.api.datascope.provider.DataScopeProvider; | ||||
@@ -10,6 +9,7 @@ import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -31,21 +31,18 @@ public class OrdinaryUserDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRegionCodes(Lists.newArrayList(userFullInfo.getRegionCode())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setRole(RoleEnum.NORMAL_MEMBER); | ds.setRole(RoleEnum.NORMAL_MEMBER); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRegionCodes(Lists.newArrayList(userFullInfo.getRegionCode())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setRole(RoleEnum.NORMAL_MEMBER); | ds.setRole(RoleEnum.NORMAL_MEMBER); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
} | } |
@@ -9,6 +9,7 @@ import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -30,9 +31,8 @@ public class OrgAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setOrgCode(userFullInfo.getEmpPosUnitCode()); | |||||
ds.setOrgCode(String.valueOf(userFullInfo.getMhUnitId())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.COMPANY_MANAGER); | ds.setRole(RoleEnum.COMPANY_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -41,9 +41,8 @@ public class OrgAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setOrgCode(userFullInfo.getEmpPosUnitCode()); | |||||
ds.setOrgCode(String.valueOf(userFullInfo.getMhUnitId())); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.COMPANY_MANAGER); | ds.setRole(RoleEnum.COMPANY_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -1,8 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | import com.hz.pm.api.common.helper.RegionCacheHelper; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
@@ -14,8 +11,6 @@ import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.ArrayList; | |||||
import java.util.Collection; | |||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -37,19 +32,8 @@ public class RegionAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
//借由 丽水市的code 来映射市本级的regionCode | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(userFullInfo.getRegionCode(), | |||||
RegionConst.RL_CITY); | |||||
//如果不是市本级的话 就直接放入本区域的县就好了 | |||||
if(CollUtil.isEmpty(regionCodes)){ | |||||
regionCodes = Lists.newArrayList(); | |||||
regionCodes.add(userFullInfo.getRegionCode()); | |||||
} | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.REGION_MANAGER); | ds.setRole(RoleEnum.REGION_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -57,19 +41,8 @@ public class RegionAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
//借由 丽水市的code 来映射市本级的regionCode | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(userFullInfo.getRegionCode(), | |||||
RegionConst.RL_CITY); | |||||
//如果不是市本级的话 就直接放入本区域的县就好了 | |||||
if(CollUtil.isEmpty(regionCodes)){ | |||||
regionCodes = Lists.newArrayList(); | |||||
regionCodes.add(userFullInfo.getRegionCode()); | |||||
} | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.REGION_MANAGER); | ds.setRole(RoleEnum.REGION_MANAGER); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -1,6 +1,5 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.hz.pm.api.common.model.constant.RegionConst; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | import com.hz.pm.api.common.helper.RegionCacheHelper; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
@@ -12,8 +11,6 @@ import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.ArrayList; | |||||
import java.util.Collection; | |||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -37,13 +34,8 @@ public class SuperAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
//所有 丽水市的code | //所有 丽水市的code | ||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(RegionConst.RC_HZ, | |||||
RegionConst.RL_CITY); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.SUPER_ADMIN); | ds.setRole(RoleEnum.SUPER_ADMIN); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -51,14 +43,8 @@ public class SuperAdminDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | ||||
//所有 丽水市的code | |||||
Collection<String> regionCodes = regionCacheHelper.listChildRegionCodeList(RegionConst.RC_HZ, | |||||
RegionConst.RL_CITY); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setRegionCodes(new ArrayList<>(regionCodes)); | |||||
ds.setUserId(userFullInfo.getUserId()); | ds.setUserId(userFullInfo.getUserId()); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.SUPER_ADMIN); | ds.setRole(RoleEnum.SUPER_ADMIN); | ||||
return Optional.of(ds); | return Optional.of(ds); | ||||
} | } | ||||
@@ -1,14 +1,12 @@ | |||||
package com.hz.pm.api.datascope.provider.impl; | package com.hz.pm.api.datascope.provider.impl; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | |||||
import com.hz.pm.api.datascope.model.DataScopeDTO; | import com.hz.pm.api.datascope.model.DataScopeDTO; | ||||
import com.hz.pm.api.datascope.provider.DataScopeProvider; | import com.hz.pm.api.datascope.provider.DataScopeProvider; | ||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.Optional; | import java.util.Optional; | ||||
/** | /** | ||||
@@ -22,24 +20,19 @@ import java.util.Optional; | |||||
@Slf4j | @Slf4j | ||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
@Component("VISITOR") | @Component("VISITOR") | ||||
public class VisitoyDataScopeProviderImpl implements DataScopeProvider { | |||||
private final UserInfoHelper userInfoHelper; | |||||
public class VisitorDataScopeProviderImpl implements DataScopeProvider { | |||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty() { | public Optional<DataScopeDTO> findDataFieldProperty() { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.SUPER_ADMIN); | ds.setRole(RoleEnum.SUPER_ADMIN); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
@Override | @Override | ||||
public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | public Optional<DataScopeDTO> findDataFieldProperty(Long userId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(userId); | |||||
DataScopeDTO ds = new DataScopeDTO(); | DataScopeDTO ds = new DataScopeDTO(); | ||||
ds.setEmployeeCode(userFullInfo.getEmployeeCode()); | |||||
ds.setRole(RoleEnum.SUPER_ADMIN); | ds.setRole(RoleEnum.SUPER_ADMIN); | ||||
return Optional.ofNullable(ds); | |||||
return Optional.of(ds); | |||||
} | } | ||||
} | } |
@@ -5,17 +5,16 @@ import com.alibaba.fastjson.JSON; | |||||
import com.baomidou.mybatisplus.core.toolkit.StringUtils; | import com.baomidou.mybatisplus.core.toolkit.StringUtils; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.GenericResult; | |||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.ding.constants.DingOrganizationContant; | import com.hz.pm.api.ding.constants.DingOrganizationContant; | ||||
import com.hz.pm.api.organization.model.entity.DingEmployeeInfo; | import com.hz.pm.api.organization.model.entity.DingEmployeeInfo; | ||||
import com.hz.pm.api.organization.model.entity.DingOrganization; | import com.hz.pm.api.organization.model.entity.DingOrganization; | ||||
import com.hz.pm.api.organization.service.IDingEmployeeInfoService; | import com.hz.pm.api.organization.service.IDingEmployeeInfoService; | ||||
import com.hz.pm.api.organization.service.IDingOrganizationService; | import com.hz.pm.api.organization.service.IDingOrganizationService; | ||||
import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | |||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.GenericResult; | |||||
import com.ningdatech.zwdd.ZwddIntegrationProperties; | import com.ningdatech.zwdd.ZwddIntegrationProperties; | ||||
import com.ningdatech.zwdd.client.ZwddAuthClient; | import com.ningdatech.zwdd.client.ZwddAuthClient; | ||||
import com.ningdatech.zwdd.client.ZwddClient; | import com.ningdatech.zwdd.client.ZwddClient; | ||||
@@ -25,9 +24,9 @@ import com.ningdatech.zwdd.model.dto.EmployeeInfoDTO; | |||||
import com.ningdatech.zwdd.model.query.PageOrganizationEmployeePositionsQuery; | import com.ningdatech.zwdd.model.query.PageOrganizationEmployeePositionsQuery; | ||||
import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition; | import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition; | ||||
import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition.GovEmployeePosition; | import com.ningdatech.zwdd.model.response.OrganizationEmployeePosition.GovEmployeePosition; | ||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.beans.BeanUtils; | import org.springframework.beans.BeanUtils; | ||||
import org.springframework.beans.factory.annotation.Autowired; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||
@@ -40,49 +39,42 @@ import java.util.stream.Collectors; | |||||
* @date 2023/2/10 上午9:52 | * @date 2023/2/10 上午9:52 | ||||
*/ | */ | ||||
@Component | |||||
@Slf4j | @Slf4j | ||||
@Component | |||||
@RequiredArgsConstructor | |||||
public class EmployeeBatchGetTask { | public class EmployeeBatchGetTask { | ||||
private final static Integer PAGE_SIZE = 20; | |||||
private static final int PAGE_SIZE = 20; | |||||
private static final int GROUP_SIZE = 100; | |||||
private static final long MAX_SIZE = 10000; | |||||
private final static Integer GROUP_SIZE = 100; | |||||
//================================================================================================================== | |||||
private final static Integer MAX_SIZE = 10000; | |||||
private final ZwddClient zwddClient; | |||||
private final ZwddAuthClient zwddAuthClient; | |||||
private final IDingOrganizationService dingOrganizationService; | |||||
private final IDingEmployeeInfoService dingEmployeeInfoService; | |||||
private final ZwddIntegrationProperties zwddIntegrationProperties; | |||||
private final IUserInfoService userInfoService; | |||||
@Autowired | |||||
private ZwddClient zwddClient; | |||||
@Autowired | |||||
private ZwddAuthClient zwddAuthClient; | |||||
@Autowired | |||||
private IDingOrganizationService iDingOrganizationService; | |||||
@Autowired | |||||
private IDingEmployeeInfoService iDingEmployeeInfoService; | |||||
@Autowired | |||||
private ZwddIntegrationProperties zwddIntegrationProperties; | |||||
@Autowired | |||||
private IUserInfoService iUserInfoService; | |||||
//================================================================================================================== | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
// @Scheduled(cron = "0 0 1 * * ?") | // @Scheduled(cron = "0 0 1 * * ?") | ||||
public void batchGetEmployeeTask() { | public void batchGetEmployeeTask() { | ||||
// 获取所有的组织列表用户获取组织下的 用户信息(暂时 只查 单位的类型) | |||||
List<DingOrganization> dingOrganizationList = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE)); | |||||
// 获取所有的组织列表用户获取组织下的 用户信息(暂时只查单位的类型) | |||||
List<DingOrganization> dingOrganizationList = dingOrganizationService.list( | |||||
Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE)); | |||||
log.info("所有待更新员工的单位数:{}", dingOrganizationList.size()); | log.info("所有待更新员工的单位数:{}", dingOrganizationList.size()); | ||||
if (CollUtil.isNotEmpty(dingOrganizationList)) { | if (CollUtil.isNotEmpty(dingOrganizationList)) { | ||||
//记录任务 单位数 | //记录任务 单位数 | ||||
Integer index = 0; | Integer index = 0; | ||||
for (DingOrganization dingOrganization : dingOrganizationList) { | |||||
log.info("当前单位:{},下标数,{}", dingOrganization.getOrganizationName(), index); | |||||
for (DingOrganization dingOrg : dingOrganizationList) { | |||||
log.info("当前单位:{},下标数,{}", dingOrg.getOrganizationName(), index); | |||||
index++; | index++; | ||||
List<OrganizationEmployeePosition> allOrganizationEmployeePositionList = new ArrayList<>(); | List<OrganizationEmployeePosition> allOrganizationEmployeePositionList = new ArrayList<>(); | ||||
String organizationCode = dingOrganization.getOrganizationCode(); | |||||
String organizationCode = dingOrg.getOrganizationCode(); | |||||
PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); | PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); | ||||
query.setEmployeeStatus("A"); | query.setEmployeeStatus("A"); | ||||
query.setOrganizationCode(organizationCode); | query.setOrganizationCode(organizationCode); | ||||
@@ -104,13 +96,13 @@ public class EmployeeBatchGetTask { | |||||
} | } | ||||
Long totalSize = data.getTotalSize(); | Long totalSize = data.getTotalSize(); | ||||
log.info("dingOrganization :{}", JSON.toJSONString(dingOrganization)); | |||||
log.info("dingOrg :{}", JSON.toJSONString(dingOrg)); | |||||
log.info("totalSize :{},{}", totalSize, dingOrganization.getOrganizationName()); | |||||
log.info("totalSize :{},{}", totalSize, dingOrg.getOrganizationName()); | |||||
if (totalSize > PAGE_SIZE) { | if (totalSize > PAGE_SIZE) { | ||||
if (totalSize > MAX_SIZE) { | if (totalSize > MAX_SIZE) { | ||||
//超过1万 按1万的处理 | //超过1万 按1万的处理 | ||||
totalSize = MAX_SIZE.longValue(); | |||||
totalSize = MAX_SIZE; | |||||
} | } | ||||
int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | ||||
@@ -118,7 +110,6 @@ public class EmployeeBatchGetTask { | |||||
for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | ||||
query.setPageNo(pageNo); | query.setPageNo(pageNo); | ||||
GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | ||||
// log.info("pageGenericResult :{}", JSON.toJSONString(pageGenericResult)); | |||||
if (pageGenericResult.isSuccess()) { | if (pageGenericResult.isSuccess()) { | ||||
allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | ||||
} else { | } else { | ||||
@@ -216,57 +207,21 @@ public class EmployeeBatchGetTask { | |||||
} | } | ||||
} | } | ||||
List<DingOrganization> organizations = iDingOrganizationService.list(); | |||||
List<DingOrganization> organizations = dingOrganizationService.list(); | |||||
Map<String, DingOrganization> organizationMap = organizations.stream().collect(Collectors.toMap(DingOrganization::getOrganizationCode, o -> o)); | Map<String, DingOrganization> organizationMap = organizations.stream().collect(Collectors.toMap(DingOrganization::getOrganizationCode, o -> o)); | ||||
for (DingEmployeeInfo dingEmployeeInfo : saveList) { | for (DingEmployeeInfo dingEmployeeInfo : saveList) { | ||||
String employeeCode = dingEmployeeInfo.getEmployeeCode(); | String employeeCode = dingEmployeeInfo.getEmployeeCode(); | ||||
DingEmployeeInfo employeeInfo = iDingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
DingEmployeeInfo employeeInfo = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
.eq(DingEmployeeInfo::getEmployeeCode, employeeCode) | .eq(DingEmployeeInfo::getEmployeeCode, employeeCode) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if (Objects.isNull(employeeInfo)) { | if (Objects.isNull(employeeInfo)) { | ||||
iDingEmployeeInfoService.save(dingEmployeeInfo); | |||||
dingEmployeeInfoService.save(dingEmployeeInfo); | |||||
} else { | } else { | ||||
dingEmployeeInfo.setId(employeeInfo.getId()); | dingEmployeeInfo.setId(employeeInfo.getId()); | ||||
iDingEmployeeInfoService.saveOrUpdate(dingEmployeeInfo); | |||||
dingEmployeeInfoService.saveOrUpdate(dingEmployeeInfo); | |||||
} | } | ||||
generateOrUpdateUserInfo(dingEmployeeInfo, organizationMap); | |||||
} | |||||
} | |||||
public void generateOrUpdateUserInfo(DingEmployeeInfo dingEmployeeInfo, Map<String, DingOrganization> organizationMap) { | |||||
String employeeCode = dingEmployeeInfo.getEmployeeCode(); | |||||
UserInfo userInfo = iUserInfoService.getOne(Wrappers.lambdaQuery(UserInfo.class) | |||||
.eq(UserInfo::getEmployeeCode, employeeCode)); | |||||
if (Objects.isNull(userInfo)) { | |||||
userInfo = new UserInfo(); | |||||
userInfo.setAccountId(dingEmployeeInfo.getAccountId()); | |||||
userInfo.setUsername(dingEmployeeInfo.getEmployeeName()); | |||||
userInfo.setRealName(dingEmployeeInfo.getEmployeeName()); | |||||
userInfo.setEmployeeCode(dingEmployeeInfo.getEmployeeCode()); | |||||
userInfo.setAvailable(UserAvailableEnum.DISABLE.name()); | |||||
userInfo.setCreateBy(-1L); | |||||
userInfo.setUpdateBy(-1L); | |||||
userInfo.setCreateOn(LocalDateTime.now()); | |||||
userInfo.setUpdateOn(LocalDateTime.now()); | |||||
userInfo.setEmpPosUnitCode(dingEmployeeInfo.getEmpPosUnitCode()); | |||||
userInfo.setAvatar(dingEmployeeInfo.getAvatar()); | |||||
if (StringUtils.isNotBlank(userInfo.getEmpPosUnitCode()) && organizationMap.containsKey(userInfo.getEmpPosUnitCode())) { | |||||
DingOrganization dingOrganization = organizationMap.get(userInfo.getEmpPosUnitCode()); | |||||
userInfo.setEmpPosUnitName(dingOrganization.getOrganizationName()); | |||||
userInfo.setRegionCode(dingOrganization.getDivisionCode()); | |||||
} | |||||
iUserInfoService.save(userInfo); | |||||
} else { | |||||
userInfo.setAvatar(dingEmployeeInfo.getAvatar()); | |||||
userInfo.setEmpPosUnitCode(dingEmployeeInfo.getEmpPosUnitCode()); | |||||
if (StringUtils.isNotBlank(userInfo.getEmpPosUnitCode()) && organizationMap.containsKey(userInfo.getEmpPosUnitCode())) { | |||||
DingOrganization dingOrganization = organizationMap.get(userInfo.getEmpPosUnitCode()); | |||||
userInfo.setEmpPosUnitName(dingOrganization.getOrganizationName()); | |||||
userInfo.setRegionCode(dingOrganization.getDivisionCode()); | |||||
} | |||||
iUserInfoService.updateById(userInfo); | |||||
} | } | ||||
} | } | ||||
@@ -276,7 +231,7 @@ public class EmployeeBatchGetTask { | |||||
* @param regionCode | * @param regionCode | ||||
*/ | */ | ||||
public void batchGetEmployeeTaskByRegionCode(String regionCode) { | public void batchGetEmployeeTaskByRegionCode(String regionCode) { | ||||
List<DingOrganization> units = iDingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) | |||||
List<DingOrganization> units = dingOrganizationService.list(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE) | .eq(DingOrganization::getTypeCode, DingOrganizationContant.UNIT_TYPE) | ||||
.eq(DingOrganization::getDivisionCode, regionCode)); | .eq(DingOrganization::getDivisionCode, regionCode)); | ||||
@@ -317,7 +272,7 @@ public class EmployeeBatchGetTask { | |||||
if (totalSize > PAGE_SIZE) { | if (totalSize > PAGE_SIZE) { | ||||
if (totalSize > MAX_SIZE) { | if (totalSize > MAX_SIZE) { | ||||
//超过1万 按1万的处理 | //超过1万 按1万的处理 | ||||
totalSize = MAX_SIZE.longValue(); | |||||
totalSize = MAX_SIZE; | |||||
} | } | ||||
int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | ||||
@@ -325,7 +280,6 @@ public class EmployeeBatchGetTask { | |||||
for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | for (pageNo = 2; pageNo <= maxPageNo; pageNo++) { | ||||
query.setPageNo(pageNo); | query.setPageNo(pageNo); | ||||
GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | GenericResult<Page<OrganizationEmployeePosition>> pageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | ||||
// log.info("pageGenericResult :{}", JSON.toJSONString(pageGenericResult)); | |||||
if (pageGenericResult.isSuccess()) { | if (pageGenericResult.isSuccess()) { | ||||
allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | allOrganizationEmployeePositionList.addAll(pageGenericResult.getData().getData()); | ||||
} else { | } else { | ||||
@@ -354,17 +308,16 @@ public class EmployeeBatchGetTask { | |||||
} | } | ||||
public void batchGetEmployeeTaskByOrdCode(String orgCode) { | public void batchGetEmployeeTaskByOrdCode(String orgCode) { | ||||
DingOrganization org = iDingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) | |||||
DingOrganization org = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getOrganizationCode, orgCode) | .eq(DingOrganization::getOrganizationCode, orgCode) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
VUtils.isTrue(Objects.isNull(org)).throwMessage("单位不存在"); | VUtils.isTrue(Objects.isNull(org)).throwMessage("单位不存在"); | ||||
log.info("所属单位 {} 要更新员工信息了", org.getOrganizationName()); | log.info("所属单位 {} 要更新员工信息了", org.getOrganizationName()); | ||||
List<OrganizationEmployeePosition> allOrganizationEmployeePositionList = new ArrayList<>(); | List<OrganizationEmployeePosition> allOrganizationEmployeePositionList = new ArrayList<>(); | ||||
String organizationCode = orgCode; | |||||
PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); | PageOrganizationEmployeePositionsQuery query = new PageOrganizationEmployeePositionsQuery(); | ||||
query.setEmployeeStatus("A"); | query.setEmployeeStatus("A"); | ||||
query.setOrganizationCode(organizationCode); | |||||
query.setOrganizationCode(orgCode); | |||||
query.setReturnTotalSize(true); | query.setReturnTotalSize(true); | ||||
query.setTenantId(zwddIntegrationProperties.getTenantId()); | query.setTenantId(zwddIntegrationProperties.getTenantId()); | ||||
int pageNo = 1; | int pageNo = 1; | ||||
@@ -375,7 +328,7 @@ public class EmployeeBatchGetTask { | |||||
GenericResult<Page<OrganizationEmployeePosition>> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | GenericResult<Page<OrganizationEmployeePosition>> firstPageGenericResult = zwddClient.pageOrganizationEmployeePositions(query); | ||||
Page<OrganizationEmployeePosition> data = firstPageGenericResult.getData(); | Page<OrganizationEmployeePosition> data = firstPageGenericResult.getData(); | ||||
if (Objects.isNull(data)) { | if (Objects.isNull(data)) { | ||||
log.info("响应为空:{}", organizationCode); | |||||
log.info("响应为空:{}", orgCode); | |||||
return; | return; | ||||
} | } | ||||
if (CollUtil.isNotEmpty(data.getData())) { | if (CollUtil.isNotEmpty(data.getData())) { | ||||
@@ -389,7 +342,7 @@ public class EmployeeBatchGetTask { | |||||
if (totalSize > PAGE_SIZE) { | if (totalSize > PAGE_SIZE) { | ||||
if (totalSize > MAX_SIZE) { | if (totalSize > MAX_SIZE) { | ||||
//超过1万 按1万的处理 | //超过1万 按1万的处理 | ||||
totalSize = MAX_SIZE.longValue(); | |||||
totalSize = MAX_SIZE; | |||||
} | } | ||||
int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | int restPageNo = totalSize % PAGE_SIZE > 0 ? 1 : 0; | ||||
@@ -444,22 +397,22 @@ public class EmployeeBatchGetTask { | |||||
return; | return; | ||||
} | } | ||||
DingEmployeeInfo emp = iDingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
DingEmployeeInfo emp = dingEmployeeInfoService.getOne(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
.eq(DingEmployeeInfo::getEmployeeCode, empCode) | .eq(DingEmployeeInfo::getEmployeeCode, empCode) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if (Objects.nonNull(emp)) { | if (Objects.nonNull(emp)) { | ||||
emp.setAvatar(data.getGovEmpAvatar()); | emp.setAvatar(data.getGovEmpAvatar()); | ||||
iDingEmployeeInfoService.updateById(emp); | |||||
dingEmployeeInfoService.updateById(emp); | |||||
} | } | ||||
UserInfo user = iUserInfoService.getOne(Wrappers.lambdaQuery(UserInfo.class) | |||||
UserInfo user = userInfoService.getOne(Wrappers.lambdaQuery(UserInfo.class) | |||||
.eq(UserInfo::getEmployeeCode, empCode) | .eq(UserInfo::getEmployeeCode, empCode) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
if (Objects.nonNull(user)) { | if (Objects.nonNull(user)) { | ||||
user.setAvatar(data.getGovEmpAvatar()); | user.setAvatar(data.getGovEmpAvatar()); | ||||
iUserInfoService.updateById(user); | |||||
userInfoService.updateById(user); | |||||
} | } | ||||
} | } | ||||
@@ -470,7 +423,7 @@ public class EmployeeBatchGetTask { | |||||
*/ | */ | ||||
public void getBatchEmployeeByCode(String orgCode) { | public void getBatchEmployeeByCode(String orgCode) { | ||||
List<DingEmployeeInfo> employees = iDingEmployeeInfoService.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
List<DingEmployeeInfo> employees = dingEmployeeInfoService.list(Wrappers.lambdaQuery(DingEmployeeInfo.class) | |||||
.eq(DingEmployeeInfo::getEmpPosUnitCode, orgCode)); | .eq(DingEmployeeInfo::getEmpPosUnitCode, orgCode)); | ||||
for (DingEmployeeInfo employee : employees) { | for (DingEmployeeInfo employee : employees) { | ||||
@@ -44,7 +44,7 @@ import com.hz.pm.api.sys.model.entity.Role; | |||||
import com.hz.pm.api.sys.model.entity.UserRole; | import com.hz.pm.api.sys.model.entity.UserRole; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
import com.hz.pm.api.sys.service.IUserRoleService; | import com.hz.pm.api.sys.service.IUserRoleService; | ||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | ||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
@@ -78,7 +78,7 @@ public class SensitiveModifySegment { | |||||
return false; | return false; | ||||
} | } | ||||
for (SensitiveModifySegment segment : segmentList) { | for (SensitiveModifySegment segment : segmentList) { | ||||
if (!segment.isValueEquals()) { | |||||
if (Boolean.FALSE.equals(segment.isValueEquals())) { | |||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
@@ -24,7 +24,7 @@ import com.hz.pm.api.expert.model.cmd.*; | |||||
import com.hz.pm.api.expert.model.dto.*; | import com.hz.pm.api.expert.model.dto.*; | ||||
import com.hz.pm.api.expert.service.*; | import com.hz.pm.api.expert.service.*; | ||||
import com.hz.pm.api.expert.utils.SensitiveModifySegmentUtils; | import com.hz.pm.api.expert.utils.SensitiveModifySegmentUtils; | ||||
import com.hz.pm.api.meeting.helper.YxtCallOrSmsHelper; | |||||
import com.hz.pm.api.meeting.helper.YxtClientHelper; | |||||
import com.hz.pm.api.meta.constant.ExpertDictTypeEnum; | import com.hz.pm.api.meta.constant.ExpertDictTypeEnum; | ||||
import com.hz.pm.api.meta.model.ExpertRegionInfo; | import com.hz.pm.api.meta.model.ExpertRegionInfo; | ||||
import com.hz.pm.api.meta.model.entity.ExpertDictionary; | import com.hz.pm.api.meta.model.entity.ExpertDictionary; | ||||
@@ -36,7 +36,7 @@ import com.hz.pm.api.sys.model.entity.UserRole; | |||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
import com.hz.pm.api.sys.service.IUserRoleService; | import com.hz.pm.api.sys.service.IUserRoleService; | ||||
import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | import com.hz.pm.api.user.model.enumeration.UserAvailableEnum; | ||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
@@ -78,7 +78,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
private final IUserRoleService userRoleService; | private final IUserRoleService userRoleService; | ||||
private final IExpertSensitiveInfoModifyDetailRecordService iExpertSensitiveInfoModifyDetailRecordService; | private final IExpertSensitiveInfoModifyDetailRecordService iExpertSensitiveInfoModifyDetailRecordService; | ||||
private final IUserInfoService userInfoService; | private final IUserInfoService userInfoService; | ||||
private final YxtCallOrSmsHelper yxtCallOrSmsHelper; | |||||
private final YxtClientHelper yxtClientHelper; | |||||
private final IExpertGovBusinessStripService expertGovBusinessStripService; | private final IExpertGovBusinessStripService expertGovBusinessStripService; | ||||
@Value("${login.url:}") | @Value("${login.url:}") | ||||
@@ -101,7 +101,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | ExpertUserFullInfo expertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | ||||
ExpertUserFullInfo saveExpertUserFullInfo = buildSaveExpertUserFullInfo(expertUserInfoDTO); | |||||
ExpertUserFullInfo saveExpertUserFullInfo = buildExpertUserFullInfo(expertUserInfoDTO); | |||||
if (Objects.nonNull(expertUserFullInfo)) { | if (Objects.nonNull(expertUserFullInfo)) { | ||||
// 专家信息审核通过之前,所有信息无需备份 | // 专家信息审核通过之前,所有信息无需备份 | ||||
iExpertUserFullInfoService.removeById(expertUserFullInfo.getId()); | iExpertUserFullInfoService.removeById(expertUserFullInfo.getId()); | ||||
@@ -129,7 +129,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
iExpertTagService.saveBatch(saveExpertTagList); | iExpertTagService.saveBatch(saveExpertTagList); | ||||
} | } | ||||
// 保存所有专家字典字段 | // 保存所有专家字典字段 | ||||
List<ExpertDictionary> saveExpertDictionaryList = buildSaveExpertDictionaryList(userId, expertDictionaryList); | |||||
List<ExpertDictionary> saveExpertDictionaryList = buildExpertDicts(userId, expertDictionaryList); | |||||
if (CollectionUtils.isNotEmpty(saveExpertDictionaryList)) { | if (CollectionUtils.isNotEmpty(saveExpertDictionaryList)) { | ||||
iExpertDictionaryService.saveBatch(saveExpertDictionaryList); | iExpertDictionaryService.saveBatch(saveExpertDictionaryList); | ||||
} | } | ||||
@@ -141,14 +141,14 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
iExpertMetaApplyService.saveBatch(saveExpertIntentionWorkRegionApplyList); | iExpertMetaApplyService.saveBatch(saveExpertIntentionWorkRegionApplyList); | ||||
} | } | ||||
// 保存所有专家回避单位 | // 保存所有专家回避单位 | ||||
List<ExpertAvoidCompany> saveExpertAvoidCompanyList = buildSaveExpertAvoidCompanyList(userId, expertAvoidCompanyList); | |||||
List<ExpertAvoidCompany> saveExpertAvoidCompanyList = buildExpertAvoidCompany(userId, expertAvoidCompanyList); | |||||
if (CollectionUtils.isNotEmpty(saveExpertAvoidCompanyList)) { | if (CollectionUtils.isNotEmpty(saveExpertAvoidCompanyList)) { | ||||
iExpertAvoidCompanyService.saveBatch(saveExpertAvoidCompanyList); | iExpertAvoidCompanyService.saveBatch(saveExpertAvoidCompanyList); | ||||
} | } | ||||
} | } | ||||
private ExpertUserFullInfo buildSaveExpertUserFullInfo(ExpertUserFullInfoDTO expertUserInfoDTO) { | |||||
private ExpertUserFullInfo buildExpertUserFullInfo(ExpertUserFullInfoDTO expertUserInfoDTO) { | |||||
ExpertUserFullInfo expertUserFullInfo = new ExpertUserFullInfo(); | ExpertUserFullInfo expertUserFullInfo = new ExpertUserFullInfo(); | ||||
if (Objects.nonNull(expertUserInfoDTO.getIsDingUser())) { | if (Objects.nonNull(expertUserInfoDTO.getIsDingUser())) { | ||||
expertUserFullInfo.setIsDingUser(expertUserInfoDTO.getIsDingUser()); | expertUserFullInfo.setIsDingUser(expertUserInfoDTO.getIsDingUser()); | ||||
@@ -197,33 +197,35 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
private List<ExpertDictionary> buildSaveExpertDictionaryList(Long userId, List<ExpertDictionaryDTO> expertDictionaryList) { | |||||
if (CollectionUtils.isEmpty(expertDictionaryList)) { | |||||
return new ArrayList<>(); | |||||
} | |||||
return expertDictionaryList.stream().map(r -> { | |||||
ExpertDictionary expertDictionary = new ExpertDictionary(); | |||||
expertDictionary.setUserId(userId); | |||||
expertDictionary.setExpertInfoField(r.getExpertInfoField()); | |||||
expertDictionary.setDictionaryCode(r.getDictionaryCode()); | |||||
expertDictionary.setUpdateOn(LocalDateTime.now()); | |||||
expertDictionary.setCreateOn(LocalDateTime.now()); | |||||
return expertDictionary; | |||||
private List<ExpertDictionary> buildExpertDicts(Long userId, List<ExpertDictionaryDTO> exertDicts) { | |||||
if (CollectionUtils.isEmpty(exertDicts)) { | |||||
return Collections.emptyList(); | |||||
} | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
return exertDicts.stream().map(r -> { | |||||
ExpertDictionary expertDict = new ExpertDictionary(); | |||||
expertDict.setUserId(userId); | |||||
expertDict.setExpertInfoField(r.getExpertInfoField()); | |||||
expertDict.setDictionaryCode(r.getDictionaryCode()); | |||||
expertDict.setUpdateOn(now); | |||||
expertDict.setCreateOn(now); | |||||
return expertDict; | |||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
private List<ExpertAvoidCompany> buildSaveExpertAvoidCompanyList(Long userId, List<ExpertAvoidCompanyDTO> expertAvoidCompanyList) { | |||||
if (CollectionUtils.isEmpty(expertAvoidCompanyList)) { | |||||
return new ArrayList<>(); | |||||
private List<ExpertAvoidCompany> buildExpertAvoidCompany(Long userId, List<ExpertAvoidCompanyDTO> avoidCompanies) { | |||||
if (CollectionUtils.isEmpty(avoidCompanies)) { | |||||
return Collections.emptyList(); | |||||
} | } | ||||
return expertAvoidCompanyList.stream().map(r -> { | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
return avoidCompanies.stream().map(r -> { | |||||
ExpertAvoidCompany expertAvoidCompany = new ExpertAvoidCompany(); | ExpertAvoidCompany expertAvoidCompany = new ExpertAvoidCompany(); | ||||
expertAvoidCompany.setCompanyName(r.getCompanyName()); | expertAvoidCompany.setCompanyName(r.getCompanyName()); | ||||
expertAvoidCompany.setUserId(userId); | expertAvoidCompany.setUserId(userId); | ||||
expertAvoidCompany.setCompanyUniqCode(r.getCompanyUniqCode()); | expertAvoidCompany.setCompanyUniqCode(r.getCompanyUniqCode()); | ||||
expertAvoidCompany.setCreateOn(LocalDateTime.now()); | |||||
expertAvoidCompany.setUpdateOn(LocalDateTime.now()); | |||||
expertAvoidCompany.setCreateOn(now); | |||||
expertAvoidCompany.setUpdateOn(now); | |||||
return expertAvoidCompany; | return expertAvoidCompany; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
} | } | ||||
@@ -239,15 +241,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
List<ExpertDictionaryDTO> recommendedWayList = cmd.getRecommendedWay(); | List<ExpertDictionaryDTO> recommendedWayList = cmd.getRecommendedWay(); | ||||
if (CollectionUtils.isNotEmpty(recommendedWayList)) { | if (CollectionUtils.isNotEmpty(recommendedWayList)) { | ||||
List<ExpertDictionary> saveExpertDictionaryList = recommendedWayList.stream().map(r -> { | |||||
ExpertDictionary expertDictionary = new ExpertDictionary(); | |||||
expertDictionary.setUserId(userId); | |||||
expertDictionary.setExpertInfoField(r.getExpertInfoField()); | |||||
expertDictionary.setDictionaryCode(r.getDictionaryCode()); | |||||
expertDictionary.setUpdateOn(LocalDateTime.now()); | |||||
expertDictionary.setCreateOn(LocalDateTime.now()); | |||||
return expertDictionary; | |||||
}).collect(Collectors.toList()); | |||||
List<ExpertDictionary> saveExpertDictionaryList = buildExpertDicts(userId, recommendedWayList); | |||||
iExpertDictionaryService.saveBatch(saveExpertDictionaryList); | iExpertDictionaryService.saveBatch(saveExpertDictionaryList); | ||||
} | } | ||||
@@ -325,7 +319,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
Integer expertRegionLevel = cmd.getExpertRegionLevel(); | Integer expertRegionLevel = cmd.getExpertRegionLevel(); | ||||
Long expertUserId = cmd.getExpertUserId(); | Long expertUserId = cmd.getExpertUserId(); | ||||
if (applyResult) { | |||||
if (Boolean.TRUE.equals(applyResult)) { | |||||
switch (applyTypeEnum) { | switch (applyTypeEnum) { | ||||
case EXPERT_INTENTION_JOIN: { | case EXPERT_INTENTION_JOIN: { | ||||
// 新增履职意向地 | // 新增履职意向地 | ||||
@@ -372,7 +366,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
ExpertUserFullInfo expertInfo = iExpertUserFullInfoService.getByUserId(expertUserId); | ExpertUserFullInfo expertInfo = iExpertUserFullInfoService.getByUserId(expertUserId); | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String content; | String content; | ||||
if (cmd.getApplyResult()) { | |||||
if (Boolean.TRUE.equals(cmd.getApplyResult())) { | |||||
// 修改专家状态为可用 | // 修改专家状态为可用 | ||||
// 账号启用 | // 账号启用 | ||||
LambdaUpdateWrapper<UserInfo> userInfoUpdate = Wrappers.lambdaUpdate(UserInfo.class) | LambdaUpdateWrapper<UserInfo> userInfoUpdate = Wrappers.lambdaUpdate(UserInfo.class) | ||||
@@ -387,7 +381,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
List<ExpertDictionaryDTO> expertType = cmd.getExpertType(); | List<ExpertDictionaryDTO> expertType = cmd.getExpertType(); | ||||
if (CollUtil.isNotEmpty(expertType)) { | if (CollUtil.isNotEmpty(expertType)) { | ||||
expertType.forEach(r -> r.setExpertInfoField(ExpertDictTypeEnum.EXPERT_TYPE.getKey())); | expertType.forEach(r -> r.setExpertInfoField(ExpertDictTypeEnum.EXPERT_TYPE.getKey())); | ||||
List<ExpertDictionary> saveExpertDictList = buildSaveExpertDictionaryList(expertUserId, expertType); | |||||
List<ExpertDictionary> saveExpertDictList = buildExpertDicts(expertUserId, expertType); | |||||
iExpertDictionaryService.saveBatch(saveExpertDictList); | iExpertDictionaryService.saveBatch(saveExpertDictList); | ||||
} | } | ||||
// 补充专家 专家角色 | // 补充专家 专家角色 | ||||
@@ -410,7 +404,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
SendSmsContext smsCtx = new SendSmsContext(); | SendSmsContext smsCtx = new SendSmsContext(); | ||||
smsCtx.setContent(content); | smsCtx.setContent(content); | ||||
smsCtx.setReceiveNumber(expertInfo.getPhoneNo()); | smsCtx.setReceiveNumber(expertInfo.getPhoneNo()); | ||||
yxtCallOrSmsHelper.sendSms(smsCtx); | |||||
yxtClientHelper.sendSms(smsCtx); | |||||
} | } | ||||
} | } | ||||
@@ -464,7 +458,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
List<Long> applyIdList = new ArrayList<>(); | List<Long> applyIdList = new ArrayList<>(); | ||||
ExpertUserFullInfo originalExpertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | ExpertUserFullInfo originalExpertUserFullInfo = iExpertUserFullInfoService.getByUserId(userId); | ||||
ExpertUserFullInfo saveExpertUserFullInfo = buildSaveExpertUserFullInfo(expertUserInfoDTO); | |||||
ExpertUserFullInfo saveExpertUserFullInfo = buildExpertUserFullInfo(expertUserInfoDTO); | |||||
if (Objects.nonNull(originalExpertUserFullInfo)) { | if (Objects.nonNull(originalExpertUserFullInfo)) { | ||||
saveExpertUserFullInfo.setId(originalExpertUserFullInfo.getId()); | saveExpertUserFullInfo.setId(originalExpertUserFullInfo.getId()); | ||||
// 删除所有专家字典字段(需审核敏感字段不删除) | // 删除所有专家字典字段(需审核敏感字段不删除) | ||||
@@ -497,7 +491,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
iExpertUserFullInfoService.saveOrUpdate(saveExpertUserFullInfo); | iExpertUserFullInfoService.saveOrUpdate(saveExpertUserFullInfo); | ||||
// 保存所有专家字典字段 | // 保存所有专家字典字段 | ||||
List<ExpertDictionary> saveExpertDictionaryList = buildSaveExpertDictionaryList(userId, expertDictionaryList); | |||||
List<ExpertDictionary> saveExpertDictionaryList = buildExpertDicts(userId, expertDictionaryList); | |||||
saveExpertDictionaryList = saveExpertDictionaryList | saveExpertDictionaryList = saveExpertDictionaryList | ||||
.stream().filter(r -> !ExpertUserInfoSensitiveFieldEnum.getSensitiveDictionaryList().contains(r.getExpertInfoField())) | .stream().filter(r -> !ExpertUserInfoSensitiveFieldEnum.getSensitiveDictionaryList().contains(r.getExpertInfoField())) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
@@ -506,7 +500,7 @@ public class ExpertInfoServiceImpl implements ExpertInfoService { | |||||
} | } | ||||
// 保存所有专家回避单位 | // 保存所有专家回避单位 | ||||
List<ExpertAvoidCompany> saveExpertAvoidCompanyList = buildSaveExpertAvoidCompanyList(userId, expertAvoidCompanyList); | |||||
List<ExpertAvoidCompany> saveExpertAvoidCompanyList = buildExpertAvoidCompany(userId, expertAvoidCompanyList); | |||||
if (CollectionUtils.isNotEmpty(saveExpertAvoidCompanyList)) { | if (CollectionUtils.isNotEmpty(saveExpertAvoidCompanyList)) { | ||||
// 删除回避单位 | // 删除回避单位 | ||||
LambdaQueryWrapper<ExpertAvoidCompany> expertAvoidCompanyRemove = Wrappers.lambdaQuery(ExpertAvoidCompany.class) | LambdaQueryWrapper<ExpertAvoidCompany> expertAvoidCompanyRemove = Wrappers.lambdaQuery(ExpertAvoidCompany.class) | ||||
@@ -31,6 +31,7 @@ public class MhApiClient { | |||||
private static final String USER_URL = "/sync/user"; | private static final String USER_URL = "/sync/user"; | ||||
private static final String EXPERT_URL = "/sync/expert"; | private static final String EXPERT_URL = "/sync/expert"; | ||||
private static final String COMPANY_URL = "/sync/company"; | private static final String COMPANY_URL = "/sync/company"; | ||||
private static final String PROJECT_URL = "/project_info/getProjectInfoList"; | |||||
public MhRetDTO<List<MhUnitDTO>> queryUnits() { | public MhRetDTO<List<MhUnitDTO>> queryUnits() { | ||||
@@ -69,4 +70,11 @@ public class MhApiClient { | |||||
}, false); | }, false); | ||||
} | } | ||||
public MhRetDTO<List<MhProjectDTO>> listProjects() { | |||||
String requestUrl = mhApiHost + PROJECT_URL; | |||||
String retBody = HttpUtil.get(requestUrl); | |||||
return JSONUtil.toBean(retBody, new TypeReference<MhRetDTO<List<MhProjectDTO>>>() { | |||||
}, false); | |||||
} | |||||
} | } |
@@ -0,0 +1,46 @@ | |||||
package com.hz.pm.api.external.model.dto; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
/** | |||||
* <p> | |||||
* ResponseData | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:24 2024/1/23 | |||||
*/ | |||||
@Data | |||||
public class MhProjectDTO { | |||||
@ApiModelProperty("项目合规性检查附件") | |||||
private String fileId; | |||||
@ApiModelProperty("项目复核附件") | |||||
private String fileIdThree; | |||||
@ApiModelProperty("项目评审附件") | |||||
private String fileIdTwo; | |||||
@ApiModelProperty("项目评审预算金额") | |||||
private BigDecimal money; | |||||
@ApiModelProperty("项目名称") | |||||
private String projectName; | |||||
@ApiModelProperty("关键指标对象") | |||||
private MhProjectSchemeTargetDTO schemeTargetData; | |||||
@ApiModelProperty("项目总金额") | |||||
private BigDecimal totalMoney; | |||||
@ApiModelProperty("单位ID") | |||||
private Long unitId; | |||||
@ApiModelProperty("单位名称") | |||||
private String unitName; | |||||
} |
@@ -0,0 +1,91 @@ | |||||
package com.hz.pm.api.external.model.dto; | |||||
import io.swagger.annotations.ApiModel; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Data; | |||||
import java.math.BigDecimal; | |||||
import java.util.Date; | |||||
/** | |||||
* <p> | |||||
* MhProjectSchemeTargetDTO | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:26 2024/1/23 | |||||
*/ | |||||
@Data | |||||
@ApiModel("关键指标对象") | |||||
public class MhProjectSchemeTargetDTO { | |||||
@ApiModelProperty(value = "迁移上云信息系统数量") | |||||
private int cloudSystemNum; | |||||
@ApiModelProperty(value = "创建时间") | |||||
private Date createTime; | |||||
@ApiModelProperty(value = "创建单位") | |||||
private Long createUnit; | |||||
@ApiModelProperty(value = "创建人") | |||||
private String createUser; | |||||
@ApiModelProperty(value = "附件") | |||||
private String fileId; | |||||
@ApiModelProperty(value = "本地部署非涉密信息系统数量") | |||||
private Integer fsmLocalSystemNum; | |||||
@ApiModelProperty(value = "更新购置非涉密服务器数量") | |||||
private Integer fsmServerNum; | |||||
@ApiModelProperty(value = "更新购置非涉密数据库数量") | |||||
private Integer fsmUpdateDbNum; | |||||
@ApiModelProperty(value = "更新购置非涉密中间件数量") | |||||
private Integer fsmUpdateMiddleNum; | |||||
@ApiModelProperty(value = "vCPU(核数)") | |||||
private Integer hostCpuNum; | |||||
@ApiModelProperty(value = "内存(GB)") | |||||
private Integer hostMemoryNum; | |||||
@ApiModelProperty(value = "信创云虚拟主机数量") | |||||
private Integer hostNum; | |||||
@ApiModelProperty(value = "存储(GB)") | |||||
private Integer hostStoreNum; | |||||
@ApiModelProperty(value = "ID") | |||||
private String id; | |||||
@ApiModelProperty(value = "总投资预算金额(万元)") | |||||
private BigDecimal money; | |||||
@ApiModelProperty(value = "本地部署涉密信息系统数量") | |||||
private Integer smLocalSystemNum; | |||||
@ApiModelProperty(value = "更新购置涉密服务器数量") | |||||
private Integer smServerNum; | |||||
@ApiModelProperty(value = "更新购置涉密数据库数量") | |||||
private Integer smUpdateDbNum; | |||||
@ApiModelProperty(value = "更新购置涉密中间件数量") | |||||
private Integer smUpdateMiddleNum; | |||||
@ApiModelProperty(value = "更新时间") | |||||
private Date updateTime; | |||||
@ApiModelProperty(value = "更新人") | |||||
private String updateUser; | |||||
@ApiModelProperty(value = "信创云数据库数量") | |||||
private Integer xcDbNum; | |||||
@ApiModelProperty(value = "信创云中间件数量") | |||||
private Integer xcMiddleNum; | |||||
} |
@@ -56,7 +56,7 @@ public class SmsServiceClient { | |||||
* @return | * @return | ||||
*/ | */ | ||||
public SmsDto<SmsSendResponse> smsSend(String content, List<String> phones) { | public SmsDto<SmsSendResponse> smsSend(String content, List<String> phones) { | ||||
String phonesSplit = String.join(",", phones);; | |||||
String phonesSplit = String.join(",", phones); | |||||
String refreshUrl = smsUrl + SMS_SEND; | String refreshUrl = smsUrl + SMS_SEND; | ||||
Map<String,Object> map = new HashMap<>(); | Map<String,Object> map = new HashMap<>(); | ||||
map.put("content",content); | map.put("content",content); | ||||
@@ -54,11 +54,8 @@ public class TodoServiceClient { | |||||
map.put("wkType",addSingleWkHandleDTO.getWkType()); | map.put("wkType",addSingleWkHandleDTO.getWkType()); | ||||
map.put("wkUser",addSingleWkHandleDTO.getWkUser()); | map.put("wkUser",addSingleWkHandleDTO.getWkUser()); | ||||
String responseResult = HttpUtil.post(url, JSON.toJSONString(map)); | String responseResult = HttpUtil.post(url, JSON.toJSONString(map)); | ||||
TodoDto todoDto = JSON.parseObject(responseResult, new TypeReference<TodoDto>() { | |||||
return JSON.parseObject(responseResult, new TypeReference<TodoDto>() { | |||||
}); | }); | ||||
// return JSON.parseObject(responseResult, new TypeReference<HashMap<String, String>>() { | |||||
// }).get("data"); | |||||
return todoDto; | |||||
} | } | ||||
/** | /** | ||||
@@ -74,9 +71,8 @@ public class TodoServiceClient { | |||||
.form("wkhandleId",wkhandleId); | .form("wkhandleId",wkhandleId); | ||||
HttpResponse response = request.execute(); | HttpResponse response = request.execute(); | ||||
String responseBody = response.body(); | String responseBody = response.body(); | ||||
TodoDto todoDto = JSON.parseObject(responseBody, new TypeReference<TodoDto>() { | |||||
return JSON.parseObject(responseBody, new TypeReference<TodoDto>() { | |||||
}); | }); | ||||
return todoDto; | |||||
} | } | ||||
@@ -4,8 +4,6 @@ import lombok.AllArgsConstructor; | |||||
import lombok.Data; | import lombok.Data; | ||||
import lombok.NoArgsConstructor; | import lombok.NoArgsConstructor; | ||||
import java.io.Serializable; | |||||
/** | /** | ||||
* @author 王仁康 | * @author 王仁康 | ||||
* @date 2024-01-02 16:55:51 | * @date 2024-01-02 16:55:51 | ||||
@@ -13,9 +11,7 @@ import java.io.Serializable; | |||||
@Data | @Data | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
@NoArgsConstructor | @NoArgsConstructor | ||||
public class AddSingleWkHandleDTO implements Serializable { | |||||
private static final long serialVersionUID = -2067546352159912820L; | |||||
public class AddSingleWkHandleDTO { | |||||
// 待办参数,ObjectJson字符串 | // 待办参数,ObjectJson字符串 | ||||
private Object params; | private Object params; | ||||
@@ -2,6 +2,7 @@ package com.hz.pm.api.filemanage.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.hz.pm.api.filemanage.model.dto.DocumentationGroupSaveDTO; | import com.hz.pm.api.filemanage.model.dto.DocumentationGroupSaveDTO; | ||||
@@ -106,7 +107,7 @@ public class DocumentationManage { | |||||
* @param id | * @param id | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Transactional | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public String deleteGroup(Long id) { | public String deleteGroup(Long id) { | ||||
DocumentationGroup group = documentationGroupService.getById(id); | DocumentationGroup group = documentationGroupService.getById(id); | ||||
VUtils.isTrue(Objects.isNull(group)).throwMessage("该分组不存在!"); | VUtils.isTrue(Objects.isNull(group)).throwMessage("该分组不存在!"); | ||||
@@ -125,22 +126,21 @@ public class DocumentationManage { | |||||
* @param dto | * @param dto | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Transactional(rollbackFor = Exception.class) | |||||
public String addDoc(DocumentationSaveDTO dto) { | public String addDoc(DocumentationSaveDTO dto) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
Long fileId = dto.getFileId(); | Long fileId = dto.getFileId(); | ||||
File file = fileService.getById(fileId); | File file = fileService.getById(fileId); | ||||
VUtils.isTrue(Objects.isNull(file)).throwMessage("该文件不存在!"); | |||||
Assert.notNull(file, "该文件不存在!"); | |||||
DocumentationGroup group = documentationGroupService.getById(dto.getGroupId()); | DocumentationGroup group = documentationGroupService.getById(dto.getGroupId()); | ||||
VUtils.isTrue(Objects.isNull(group)).throwMessage("分组不存在!"); | |||||
Assert.notNull(group, "分组不存在!"); | |||||
Documentation documentation = new Documentation(); | Documentation documentation = new Documentation(); | ||||
documentation.setCreateBy(user.getRealName()); | documentation.setCreateBy(user.getRealName()); | ||||
documentation.setCreateOn(LocalDateTime.now()); | documentation.setCreateOn(LocalDateTime.now()); | ||||
documentation.setSize(Objects.nonNull(file.getSize()) ? file.getSize() / 1000L : 0L); | |||||
documentation.setSize(file.getSize() / 1000L); | |||||
documentation.setFileId(fileId); | documentation.setFileId(fileId); | ||||
documentation.setGroupId(dto.getGroupId()); | documentation.setGroupId(dto.getGroupId()); | ||||
documentation.setFileName(file.getOriginalFileName()); | documentation.setFileName(file.getOriginalFileName()); | ||||
@@ -2,24 +2,21 @@ package com.hz.pm.api.filemanage.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.util.NumberUtil; | |||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.alibaba.fastjson.JSONArray; | import com.alibaba.fastjson.JSONArray; | ||||
import com.alibaba.fastjson.JSONObject; | import com.alibaba.fastjson.JSONObject; | ||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.file.entity.File; | |||||
import com.ningdatech.file.service.FileService; | |||||
import com.ningdatech.file.utils.StrPool; | |||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.model.constant.CommonConst; | |||||
import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | import com.hz.pm.api.common.enumeration.ProjectProcessStageEnum; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.model.constant.CommonConst; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.expert.manage.ExpertReviewManage; | import com.hz.pm.api.expert.manage.ExpertReviewManage; | ||||
import com.hz.pm.api.expert.model.vo.ExpertReviewDetailVO; | import com.hz.pm.api.expert.model.vo.ExpertReviewDetailVO; | ||||
import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO; | import com.hz.pm.api.expert.model.vo.ProjectReviewDetailVO; | ||||
@@ -29,8 +26,6 @@ import com.hz.pm.api.filemanage.model.vo.ProjectApplyBorrowVO; | |||||
import com.hz.pm.api.filemanage.model.vo.ProjectFileListVO; | import com.hz.pm.api.filemanage.model.vo.ProjectFileListVO; | ||||
import com.hz.pm.api.filemanage.model.vo.ProjectFileVO; | import com.hz.pm.api.filemanage.model.vo.ProjectFileVO; | ||||
import com.hz.pm.api.filemanage.service.INdProjectApplyBorrowService; | import com.hz.pm.api.filemanage.service.INdProjectApplyBorrowService; | ||||
import com.hz.pm.api.organization.model.entity.DingOrganization; | |||||
import com.hz.pm.api.organization.service.IDingOrganizationService; | |||||
import com.hz.pm.api.projectdeclared.manage.ConstructionManage; | import com.hz.pm.api.projectdeclared.manage.ConstructionManage; | ||||
import com.hz.pm.api.projectdeclared.manage.DefaultDeclaredProjectManage; | import com.hz.pm.api.projectdeclared.manage.DefaultDeclaredProjectManage; | ||||
import com.hz.pm.api.projectdeclared.manage.FinalAcceptanceManage; | import com.hz.pm.api.projectdeclared.manage.FinalAcceptanceManage; | ||||
@@ -43,12 +38,12 @@ import com.hz.pm.api.projectdeclared.model.vo.PreInsVO; | |||||
import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | import com.hz.pm.api.projectdeclared.model.vo.PurchaseVO; | ||||
import com.hz.pm.api.projectdeclared.service.IContractService; | import com.hz.pm.api.projectdeclared.service.IContractService; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseService; | import com.hz.pm.api.projectdeclared.service.IPurchaseService; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.manage.ProjectLibManage; | import com.hz.pm.api.projectlib.manage.ProjectLibManage; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectInst; | import com.hz.pm.api.projectlib.model.entity.ProjectInst; | ||||
import com.hz.pm.api.projectlib.model.enumeration.InstTypeEnum; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | |||||
import com.hz.pm.api.projectlib.model.vo.ProjectDetailVO; | import com.hz.pm.api.projectlib.model.vo.ProjectDetailVO; | ||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | import com.hz.pm.api.projectlib.service.IProjectApplicationService; | ||||
import com.hz.pm.api.projectlib.service.IProjectInstService; | import com.hz.pm.api.projectlib.service.IProjectInstService; | ||||
@@ -56,8 +51,18 @@ import com.hz.pm.api.projectlib.service.IProjectService; | |||||
import com.hz.pm.api.staging.enums.MsgTypeEnum; | import com.hz.pm.api.staging.enums.MsgTypeEnum; | ||||
import com.hz.pm.api.sys.manage.NoticeManage; | import com.hz.pm.api.sys.manage.NoticeManage; | ||||
import com.hz.pm.api.todocenter.constant.WorkNoticeConstant; | import com.hz.pm.api.todocenter.constant.WorkNoticeConstant; | ||||
import com.hz.pm.api.user.helper.MhUnitCache; | |||||
import com.hz.pm.api.user.model.dto.UnitDTO; | |||||
import com.hz.pm.api.user.security.model.UserFullInfoDTO; | import com.hz.pm.api.user.security.model.UserFullInfoDTO; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.ningdatech.file.entity.File; | |||||
import com.ningdatech.file.service.FileService; | |||||
import com.ningdatech.file.utils.StrPool; | |||||
import com.wflow.bean.entity.WflowModels; | import com.wflow.bean.entity.WflowModels; | ||||
import com.wflow.contants.HisProInsEndActId; | import com.wflow.contants.HisProInsEndActId; | ||||
import com.wflow.exception.BusinessException; | import com.wflow.exception.BusinessException; | ||||
@@ -106,7 +111,6 @@ public class ProjectFileManage { | |||||
private final IProjectInstService projectInstService; | private final IProjectInstService projectInstService; | ||||
private final HistoryService historyService; | private final HistoryService historyService; | ||||
private final INdProjectApplyBorrowService projectApplyBorrowService; | private final INdProjectApplyBorrowService projectApplyBorrowService; | ||||
private final IDingOrganizationService dingOrganizationService; | |||||
private final IProjectApplicationService projectApplicationService; | private final IProjectApplicationService projectApplicationService; | ||||
private final TaskService taskService; | private final TaskService taskService; | ||||
private final IPurchaseService purchaseService; | private final IPurchaseService purchaseService; | ||||
@@ -116,69 +120,70 @@ public class ProjectFileManage { | |||||
private final PurchaseManage purchaseManage; | private final PurchaseManage purchaseManage; | ||||
private final ConstructionManage constructionManage; | private final ConstructionManage constructionManage; | ||||
private final FinalAcceptanceManage finalAcceptanceManage; | private final FinalAcceptanceManage finalAcceptanceManage; | ||||
private final MhUnitCache mhUnitCache; | |||||
public PageVo<ProjectFileListVO> list(ProjectFileListParam param) { | |||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
String employeeCode = userFullInfo.getEmployeeCode(); | |||||
String empPosUnitCode = userFullInfo.getEmpPosUnitCode(); | |||||
Page<Project> page = param.page(); | |||||
projectService.page(page, Wrappers.lambdaQuery(Project.class) | |||||
.like(StringUtils.isNotBlank(param.getProjectName()), Project::getProjectName, param.getProjectName()) | |||||
.like(StringUtils.isNotBlank(param.getBuildOrgName()), Project::getBuildOrgName, param.getBuildOrgName()) | |||||
public PageVo<ProjectFileListVO> list(ProjectFileListParam req) { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
LambdaQueryWrapper<Project> query = Wrappers.lambdaQuery(Project.class) | |||||
.like(StrUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) | |||||
.like(StrUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()) | .eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()) | ||||
.orderByDesc(Project::getUpdateOn)); | |||||
.orderByDesc(Project::getUpdateOn); | |||||
Page<Project> page = projectService.page(req.page(), query); | |||||
if (CollUtil.isEmpty(page.getRecords())) { | if (CollUtil.isEmpty(page.getRecords())) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
// 获取本单位及下属单位的单位code | // 获取本单位及下属单位的单位code | ||||
Set<String> subOrgSet = getSubOrgList(empPosUnitCode); | |||||
List<Long> subOrgSet = getSubOrgList(user.getMhUnitId()); | |||||
List<ProjectFileListVO> vos = page.getRecords().stream().map(p -> { | List<ProjectFileListVO> vos = page.getRecords().stream().map(p -> { | ||||
ProjectFileListVO vo = new ProjectFileListVO(); | ProjectFileListVO vo = new ProjectFileListVO(); | ||||
vo.setId(p.getId()); | vo.setId(p.getId()); | ||||
// 用户只可查阅自己及下属单位的项目档案和已经申请借阅通过的项目档案 | // 用户只可查阅自己及下属单位的项目档案和已经申请借阅通过的项目档案 | ||||
if (subOrgSet.contains(p.getBuildOrgCode()) || checkCanRead(subOrgSet, p)) { | |||||
if (!NumberUtil.isNumber(p.getBuildOrgCode()) | |||||
|| subOrgSet.contains(Long.parseLong(p.getBuildOrgCode())) | |||||
|| checkCanRead(subOrgSet, p)) { | |||||
vo.setCanRead(Boolean.TRUE); | vo.setCanRead(Boolean.TRUE); | ||||
} | } | ||||
vo.setBuildOrgName(p.getBuildOrgName()); | vo.setBuildOrgName(p.getBuildOrgName()); | ||||
vo.setPojectCode(p.getProjectCode()); | vo.setPojectCode(p.getProjectCode()); | ||||
vo.setProjectName(p.getProjectName()); | vo.setProjectName(p.getProjectName()); | ||||
// 判断当前项目,当前登录用户是否已经开启了申请借阅并且没有审批完成 | // 判断当前项目,当前登录用户是否已经开启了申请借阅并且没有审批完成 | ||||
ProjectApplyBorrow projectApplyBorrow = projectApplyBorrowService.getOne(Wrappers.lambdaQuery(ProjectApplyBorrow.class) | |||||
.eq(ProjectApplyBorrow::getApplyBorrowEmployeeCode, employeeCode) | |||||
Wrapper<ProjectApplyBorrow> pabQuery = Wrappers.lambdaQuery(ProjectApplyBorrow.class) | |||||
.select(ProjectApplyBorrow::getInstanceId) | |||||
.eq(ProjectApplyBorrow::getApplyBorrowUserId, user.getUserIdStr()) | |||||
.eq(ProjectApplyBorrow::getProjectId, p.getId()) | .eq(ProjectApplyBorrow::getProjectId, p.getId()) | ||||
.orderByDesc(ProjectApplyBorrow::getCreateOn) | .orderByDesc(ProjectApplyBorrow::getCreateOn) | ||||
.last("limit 1")); | |||||
.last(BizConst.LIMIT_1); | |||||
ProjectApplyBorrow projectApplyBorrow = projectApplyBorrowService.getOne(pabQuery); | |||||
if (Objects.nonNull(projectApplyBorrow)) { | if (Objects.nonNull(projectApplyBorrow)) { | ||||
String instCode = projectApplyBorrow.getInstanceId(); | String instCode = projectApplyBorrow.getInstanceId(); | ||||
// 获取流程实例 | // 获取流程实例 | ||||
HistoricProcessInstance newInstance = | |||||
historyService.createHistoricProcessInstanceQuery().processInstanceId(instCode).singleResult(); | |||||
HistoricProcessInstance newInstance = historyService.createHistoricProcessInstanceQuery() | |||||
.processInstanceId(instCode) | |||||
.singleResult(); | |||||
if (newInstance == null) { | if (newInstance == null) { | ||||
vo.setCanApplyBorrow(Boolean.FALSE); | vo.setCanApplyBorrow(Boolean.FALSE); | ||||
return vo; | return vo; | ||||
} | } | ||||
ProjectInst projectInst = projectInstService | |||||
.getOne(Wrappers.lambdaQuery(ProjectInst.class).eq(ProjectInst::getInstCode, instCode)); | |||||
ProjectInst projectInst = projectInstService.getOne(Wrappers.lambdaQuery(ProjectInst.class) | |||||
.eq(ProjectInst::getInstCode, instCode)); | |||||
// 推送省局联审的项目流程实例为EMPTY | // 推送省局联审的项目流程实例为EMPTY | ||||
if (Objects.nonNull(projectInst)) { | if (Objects.nonNull(projectInst)) { | ||||
Integer instType = projectInst.getInstType(); | Integer instType = projectInst.getInstType(); | ||||
// 从申请借阅信息表中查询当前项目是否有当前登录用户发起的申请借阅审批流程 | // 从申请借阅信息表中查询当前项目是否有当前登录用户发起的申请借阅审批流程 | ||||
ProjectApplyBorrow applyBorrow = projectApplyBorrowService.getOne(Wrappers | ProjectApplyBorrow applyBorrow = projectApplyBorrowService.getOne(Wrappers | ||||
.lambdaQuery(ProjectApplyBorrow.class).eq(ProjectApplyBorrow::getApplyBorrowEmployeeCode, employeeCode) | |||||
.eq(ProjectApplyBorrow::getProjectId, p.getId()).eq(ProjectApplyBorrow::getInstanceId, instCode)); | |||||
.lambdaQuery(ProjectApplyBorrow.class) | |||||
.eq(ProjectApplyBorrow::getApplyBorrowUserId, user.getUserIdStr()) | |||||
.eq(ProjectApplyBorrow::getProjectId, p.getId()) | |||||
.eq(ProjectApplyBorrow::getInstanceId, instCode)); | |||||
// 延期申请流程还未审核结束 | // 延期申请流程还未审核结束 | ||||
if (Objects.nonNull(applyBorrow) && InstTypeEnum.APPLY_BORROW.getCode().equals(instType) | |||||
if (Objects.nonNull(applyBorrow) && InstTypeEnum.APPLY_BORROW.eq(instType) | |||||
&& Objects.isNull(newInstance.getEndActivityId())) { | && Objects.isNull(newInstance.getEndActivityId())) { | ||||
vo.setCanApplyBorrow(Boolean.FALSE); | vo.setCanApplyBorrow(Boolean.FALSE); | ||||
} | |||||
// 如果是延期申请审核被驳回,设置项目可以申请延期申报 | |||||
else if (InstTypeEnum.APPLY_BORROW.getCode().equals(instType) && | |||||
} else if (InstTypeEnum.APPLY_BORROW.eq(instType) && | |||||
HisProInsEndActId.REJECT.equals(newInstance.getEndActivityId())) { | HisProInsEndActId.REJECT.equals(newInstance.getEndActivityId())) { | ||||
// 如果是延期申请审核被驳回,设置项目可以申请延期申报 | |||||
vo.setCanApplyBorrow(Boolean.TRUE); | vo.setCanApplyBorrow(Boolean.TRUE); | ||||
} | } | ||||
} | } | ||||
@@ -189,39 +194,32 @@ public class ProjectFileManage { | |||||
return PageVo.of(vos, page.getTotal()); | return PageVo.of(vos, page.getTotal()); | ||||
} | } | ||||
private boolean checkCanRead(Set<String> subOrgSet, Project project) { | |||||
private boolean checkCanRead(List<Long> subOrgSet, Project project) { | |||||
// 从申请借阅信息表中查出本单位及下属单位审批通过的项目 | // 从申请借阅信息表中查出本单位及下属单位审批通过的项目 | ||||
List<String> subOrgSetStr = CollUtils.convert(subOrgSet, String::valueOf); | |||||
HashSet<Long> borrowProjectIdSet = new HashSet<>(); | HashSet<Long> borrowProjectIdSet = new HashSet<>(); | ||||
List<Long> applyBorrowProjectIdList = projectApplyBorrowService | List<Long> applyBorrowProjectIdList = projectApplyBorrowService | ||||
.list(Wrappers.lambdaQuery(ProjectApplyBorrow.class) | .list(Wrappers.lambdaQuery(ProjectApplyBorrow.class) | ||||
.in(ProjectApplyBorrow::getApplyBorrowEmpPosUnitCode, subOrgSet) | |||||
.select(ProjectApplyBorrow::getProjectId) | |||||
.in(ProjectApplyBorrow::getApplyBorrowOrgCode, subOrgSetStr) | |||||
.eq(ProjectApplyBorrow::getIsSuccess, Boolean.TRUE)) | .eq(ProjectApplyBorrow::getIsSuccess, Boolean.TRUE)) | ||||
.stream().map(ProjectApplyBorrow::getProjectId).filter(borrowProjectIdSet::add).collect(Collectors.toList()); | |||||
.stream().map(ProjectApplyBorrow::getProjectId) | |||||
.filter(borrowProjectIdSet::add) | |||||
.collect(Collectors.toList()); | |||||
return applyBorrowProjectIdList.contains(project.getId()); | return applyBorrowProjectIdList.contains(project.getId()); | ||||
} | } | ||||
private Set<String> getSubOrgList(String empPosUnitCode) { | |||||
HashSet<String> orgSet = new HashSet<>(); | |||||
// 先将自己加入子集 | |||||
orgSet.add(empPosUnitCode); | |||||
Set<String> subOrgList = dingOrganizationService | |||||
.list(Wrappers.lambdaQuery(DingOrganization.class).eq(DingOrganization::getParentCode, empPosUnitCode)) | |||||
.stream().map(DingOrganization::getOrganizationCode).collect(Collectors.toSet()); | |||||
// 遍历子集 | |||||
for (String orgCode : subOrgList) { | |||||
orgSet.addAll(getSubOrgList(orgCode)); | |||||
} | |||||
return orgSet; | |||||
private List<Long> getSubOrgList(Long mhUnitId) { | |||||
List<Long> childIds = mhUnitCache.getChildrenIdsRecursion(mhUnitId); | |||||
childIds.add(mhUnitId); | |||||
return childIds; | |||||
} | } | ||||
public ProjectFileVO file(Long projectId) { | public ProjectFileVO file(Long projectId) { | ||||
UserFullInfoDTO userFullInfo = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
String empPosUnitCode = userFullInfo.getEmpPosUnitCode(); | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | |||||
// 判断该项目是否为本单位或下属单位的项目或者已经申请借阅成功的项目 | // 判断该项目是否为本单位或下属单位的项目或者已经申请借阅成功的项目 | ||||
Project project = projectService.getById(projectId); | Project project = projectService.getById(projectId); | ||||
Set<String> subOrgList = getSubOrgList(empPosUnitCode); | |||||
List<Long> subOrgList = getSubOrgList(user.getMhUnitId()); | |||||
if (!checkCanRead(subOrgList, project)) { | if (!checkCanRead(subOrgList, project)) { | ||||
throw new BizException("您没有权限查看此项目档案!"); | throw new BizException("您没有权限查看此项目档案!"); | ||||
@@ -247,34 +245,24 @@ public class ProjectFileManage { | |||||
return projectFileVo; | return projectFileVo; | ||||
} | } | ||||
public String wantRead(Long projectId) { | |||||
return "申请成功"; | |||||
} | |||||
public String startApplyBorrowProcess(Long projectId) { | public String startApplyBorrowProcess(Long projectId) { | ||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | UserFullInfoDTO user = userInfoHelper.getUserFullInfo(LoginUserUtil.getUserId()); | ||||
String employeeCode = user.getEmployeeCode(); | |||||
VUtils.isTrue(StringUtils.isBlank(employeeCode)).throwMessage("获取登录用户 员工号 失败!"); | |||||
Project project = projectService.getNewProject(projectId); | Project project = projectService.getNewProject(projectId); | ||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("提交失败 此项目不存在!"); | VUtils.isTrue(Objects.isNull(project)).throwMessage("提交失败 此项目不存在!"); | ||||
// 首先要判断 项目当前状态 是不是 已归档 | // 首先要判断 项目当前状态 是不是 已归档 | ||||
VUtils.isTrue(!ProjectStatusEnum.ACCEPTED.getCode().equals(project.getStatus())).throwMessage("提交失败 该项目不是 已归档"); | VUtils.isTrue(!ProjectStatusEnum.ACCEPTED.getCode().equals(project.getStatus())).throwMessage("提交失败 该项目不是 已归档"); | ||||
String regionCode = user.getRegionCode(); | |||||
WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) | WflowModels model = processModelService.getOne(Wrappers.lambdaQuery(WflowModels.class) | ||||
.eq(WflowModels::getRegionCode, regionCode) | |||||
.eq(WflowModels::getProcessType, ProjectProcessStageEnum.APPLY_BORROW.getCode()).last(BizConst.LIMIT_1)); | |||||
.eq(WflowModels::getProcessType, ProjectProcessStageEnum.APPLY_BORROW.getCode()) | |||||
.last(BizConst.LIMIT_1)); | |||||
if (Objects.isNull(model)) { | if (Objects.isNull(model)) { | ||||
log.error("此 【{}】区域找不到申请借阅流程配置", regionCode); | |||||
throw new BusinessException(String.format("此 【%s】区域找不到申请借阅流程配置", regionCode)); | |||||
throw new BusinessException("找不到申请借阅流程配置"); | |||||
} | } | ||||
ProcessStartParamsVo params = new ProcessStartParamsVo(); | ProcessStartParamsVo params = new ProcessStartParamsVo(); | ||||
params.setUser(defaultDeclaredProjectManage.buildUser(employeeCode)); | |||||
params.setUser(defaultDeclaredProjectManage.buildUser(user.getUserId())); | |||||
params.setProcessUsers(Collections.emptyMap()); | params.setProcessUsers(Collections.emptyMap()); | ||||
// 放入条件判断的项目字段 | // 放入条件判断的项目字段 | ||||
// 把条件值给放入工作流 | // 把条件值给放入工作流 | ||||
@@ -289,7 +277,7 @@ public class ProjectFileManage { | |||||
projectLibManage.saveProjectByApplyBorrow(project, user, instanceId); | projectLibManage.saveProjectByApplyBorrow(project, user, instanceId); | ||||
// 发送给第一个审批人消息 | // 发送给第一个审批人消息 | ||||
noticeManage.sendFirtUser(project, model.getFormName(), instanceId, WorkNoticeConstant.PASS_MSG_TEMPLATE, | |||||
noticeManage.sendFirstUser(project, model.getFormName(), instanceId, WorkNoticeConstant.PASS_MSG_TEMPLATE, | |||||
MsgTypeEnum.PROJECT_REVIEW); | MsgTypeEnum.PROJECT_REVIEW); | ||||
return instanceId; | return instanceId; | ||||
@@ -544,19 +532,15 @@ public class ProjectFileManage { | |||||
} | } | ||||
ProjectApplyBorrowVO vo = BeanUtil.copyProperties(apply, ProjectApplyBorrowVO.class); | ProjectApplyBorrowVO vo = BeanUtil.copyProperties(apply, ProjectApplyBorrowVO.class); | ||||
if (StringUtils.isNotBlank(vo.getApplyBorrowEmployeeCode())) { | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfoByEmployeeCode(vo.getApplyBorrowEmployeeCode()); | |||||
if (StrUtils.isNotBlank(vo.getApplyBorrowUserId())) { | |||||
UserFullInfoDTO user = userInfoHelper.getUserFullInfo(Long.valueOf(vo.getApplyBorrowUserId())); | |||||
if (Objects.nonNull(user)) { | if (Objects.nonNull(user)) { | ||||
vo.setApplyBorrowEmployeeName(user.getUsername()); | |||||
vo.setApplyBorrowUserName(user.getUsername()); | |||||
} | } | ||||
} | } | ||||
if (StringUtils.isNotBlank(vo.getApplyBorrowEmpPosUnitCode())) { | |||||
DingOrganization organization = dingOrganizationService.getOne(Wrappers.lambdaQuery(DingOrganization.class) | |||||
.eq(DingOrganization::getOrganizationCode, vo.getApplyBorrowEmpPosUnitCode()) | |||||
.last(BizConst.LIMIT_1)); | |||||
if (Objects.nonNull(organization)) { | |||||
vo.setApplyBorrowEmpPosUnitName(organization.getOrganizationName()); | |||||
} | |||||
if (StrUtils.isNotBlank(vo.getApplyBorrowOrgCode())) { | |||||
UnitDTO mhUnit = mhUnitCache.getById(Long.parseLong(vo.getApplyBorrowOrgCode())); | |||||
vo.setApplyBorrowOrgName(mhUnit.getName()); | |||||
} | } | ||||
if (Objects.nonNull(vo.getProjectId())) { | if (Objects.nonNull(vo.getProjectId())) { | ||||
Project project = projectService.getById(vo.getProjectId()); | Project project = projectService.getById(vo.getProjectId()); | ||||
@@ -32,10 +32,10 @@ public class ProjectApplyBorrow implements Serializable { | |||||
private Long projectId; | private Long projectId; | ||||
@ApiModelProperty("申请借阅员工code") | @ApiModelProperty("申请借阅员工code") | ||||
private String applyBorrowEmployeeCode; | |||||
private String applyBorrowUserId; | |||||
@ApiModelProperty("申请借阅用户任职单位code") | @ApiModelProperty("申请借阅用户任职单位code") | ||||
private String applyBorrowEmpPosUnitCode; | |||||
private String applyBorrowOrgCode; | |||||
@ApiModelProperty("申请借阅审批流程ID") | @ApiModelProperty("申请借阅审批流程ID") | ||||
private String instanceId; | private String instanceId; | ||||
@@ -31,16 +31,16 @@ public class ProjectApplyBorrowVO implements Serializable { | |||||
private String projectName; | private String projectName; | ||||
@ApiModelProperty("申请借阅员工code") | @ApiModelProperty("申请借阅员工code") | ||||
private String applyBorrowEmployeeCode; | |||||
private String applyBorrowUserId; | |||||
@ApiModelProperty("申请借阅员工名字") | @ApiModelProperty("申请借阅员工名字") | ||||
private String applyBorrowEmployeeName; | |||||
private String applyBorrowUserName; | |||||
@ApiModelProperty("申请借阅用户任职单位code") | @ApiModelProperty("申请借阅用户任职单位code") | ||||
private String applyBorrowEmpPosUnitCode; | |||||
private String applyBorrowOrgCode; | |||||
@ApiModelProperty("申请借阅用户任职单位") | @ApiModelProperty("申请借阅用户任职单位") | ||||
private String applyBorrowEmpPosUnitName; | |||||
private String applyBorrowOrgName; | |||||
@ApiModelProperty("申请借阅审批流程ID") | @ApiModelProperty("申请借阅审批流程ID") | ||||
private String instanceId; | private String instanceId; | ||||
@@ -3,9 +3,9 @@ package com.hz.pm.api.fiscal.controller; | |||||
import com.ningdatech.log.annotation.WebLog; | import com.ningdatech.log.annotation.WebLog; | ||||
import com.hz.pm.api.fiscal.manage.CompanyFiscalCodeManage; | import com.hz.pm.api.fiscal.manage.CompanyFiscalCodeManage; | ||||
import com.hz.pm.api.fiscal.model.po.ReqCompanyFiscalCodeAndSealSnPO; | |||||
import com.hz.pm.api.fiscal.model.po.CompanyFiscalCodeAndSealSnReq; | |||||
import com.hz.pm.api.fiscal.model.po.ReqGetCompanyFiscalCodeAndSealSnPO; | import com.hz.pm.api.fiscal.model.po.ReqGetCompanyFiscalCodeAndSealSnPO; | ||||
import com.hz.pm.api.fiscal.model.vo.ResCompanyFiscalCodeAndSealSnVO; | |||||
import com.hz.pm.api.fiscal.model.vo.CompanyFiscalCodeAndSealSnVO; | |||||
import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
@@ -35,13 +35,13 @@ public class CompanyFiscalCodeController { | |||||
@ApiOperation(value = "财政编码-配置", notes = "财政编码配置") | @ApiOperation(value = "财政编码-配置", notes = "财政编码配置") | ||||
@PostMapping("/fiscal-and-seal/configure") | @PostMapping("/fiscal-and-seal/configure") | ||||
@WebLog("财政编码-配置") | @WebLog("财政编码-配置") | ||||
public void fiscalAndSealCodeConfigure(@Valid @RequestBody ReqCompanyFiscalCodeAndSealSnPO reqCompanyFiscalCodeAndSealSnPO) { | |||||
companyFiscalCodeManage.fiscalCodeConfigure(reqCompanyFiscalCodeAndSealSnPO); | |||||
public void fiscalAndSealCodeConfigure(@Valid @RequestBody CompanyFiscalCodeAndSealSnReq req) { | |||||
companyFiscalCodeManage.fiscalCodeConfigure(req); | |||||
} | } | ||||
@ApiOperation(value = "获取财政编码-配置", notes = "获取财政编码配置") | @ApiOperation(value = "获取财政编码-配置", notes = "获取财政编码配置") | ||||
@PostMapping("/fiscal-and-seal/get-configure") | @PostMapping("/fiscal-and-seal/get-configure") | ||||
public ResCompanyFiscalCodeAndSealSnVO getFiscalAndSealCodeConfigure(@Valid @RequestBody ReqGetCompanyFiscalCodeAndSealSnPO request) { | |||||
public CompanyFiscalCodeAndSealSnVO getFiscalAndSealCodeConfigure(@Valid @RequestBody ReqGetCompanyFiscalCodeAndSealSnPO request) { | |||||
return companyFiscalCodeManage.getFiscalCodeConfigure(request); | return companyFiscalCodeManage.getFiscalCodeConfigure(request); | ||||
} | } | ||||
@@ -1,16 +1,16 @@ | |||||
package com.hz.pm.api.fiscal.manage; | package com.hz.pm.api.fiscal.manage; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | |||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.fiscal.entity.CompanyFiscalCode; | import com.hz.pm.api.fiscal.entity.CompanyFiscalCode; | ||||
import com.hz.pm.api.fiscal.model.po.ReqCompanyFiscalCodeAndSealSnPO; | |||||
import com.hz.pm.api.fiscal.model.po.CompanyFiscalCodeAndSealSnReq; | |||||
import com.hz.pm.api.fiscal.model.po.ReqGetCompanyFiscalCodeAndSealSnPO; | import com.hz.pm.api.fiscal.model.po.ReqGetCompanyFiscalCodeAndSealSnPO; | ||||
import com.hz.pm.api.fiscal.model.vo.ResCompanyFiscalCodeAndSealSnVO; | |||||
import com.hz.pm.api.fiscal.model.vo.CompanyFiscalCodeAndSealSnVO; | |||||
import com.hz.pm.api.fiscal.service.ICompanyFiscalCodeService; | import com.hz.pm.api.fiscal.service.ICompanyFiscalCodeService; | ||||
import com.hz.pm.api.signature.entity.CompanySignature; | import com.hz.pm.api.signature.entity.CompanySignature; | ||||
import com.hz.pm.api.signature.service.ICompanySignatureService; | import com.hz.pm.api.signature.service.ICompanySignatureService; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
@@ -24,68 +24,66 @@ import java.util.Objects; | |||||
@RequiredArgsConstructor | @RequiredArgsConstructor | ||||
public class CompanyFiscalCodeManage { | public class CompanyFiscalCodeManage { | ||||
private final UserInfoHelper userInfoHelper; | |||||
private final ICompanyFiscalCodeService fiscalCodeService; | |||||
private final ICompanySignatureService signatureService; | |||||
private final ICompanyFiscalCodeService iCompanyFiscalCodeService; | |||||
private final ICompanySignatureService iCompanySignatureService; | |||||
public void fiscalCodeConfigure(ReqCompanyFiscalCodeAndSealSnPO reqCompanyFiscalCodeAndSealSnPO) { | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
String organizationCode = reqCompanyFiscalCodeAndSealSnPO.getOrganizationCode(); | |||||
if (StringUtils.isBlank(organizationCode)) { | |||||
organizationCode = userInfoHelper.getUserEmpPosUnitCode(userId); | |||||
public void fiscalCodeConfigure(CompanyFiscalCodeAndSealSnReq req) { | |||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | |||||
String temOrgCode; | |||||
if (StrUtils.isBlank(req.getOrganizationCode())) { | |||||
temOrgCode = String.valueOf(userDetail.getMhUnitId()); | |||||
} else { | |||||
temOrgCode = req.getOrganizationCode(); | |||||
} | } | ||||
// TODO 校验用户权限 | |||||
// 保存财政编码配置 | |||||
CompanyFiscalCode companyFiscalCode = iCompanyFiscalCodeService.getByOrganizationCode(organizationCode); | |||||
// 保存财政编码配置 TODO 校验用户权限 | |||||
CompanyFiscalCode companyFiscalCode = fiscalCodeService.getByOrgCode(temOrgCode); | |||||
if (Objects.isNull(companyFiscalCode)) { | if (Objects.isNull(companyFiscalCode)) { | ||||
companyFiscalCode = new CompanyFiscalCode(); | companyFiscalCode = new CompanyFiscalCode(); | ||||
companyFiscalCode.setOrganizationCode(organizationCode); | |||||
companyFiscalCode.setOrganizationCode(temOrgCode); | |||||
companyFiscalCode.setCreateOn(LocalDateTime.now()); | companyFiscalCode.setCreateOn(LocalDateTime.now()); | ||||
companyFiscalCode.setCreateBy(userId); | |||||
companyFiscalCode.setCreateBy(userDetail.getUserId()); | |||||
} | } | ||||
String fiscalCode = reqCompanyFiscalCodeAndSealSnPO.getFiscalCode(); | |||||
String fiscalCode = req.getFiscalCode(); | |||||
companyFiscalCode.setFiscalCode(fiscalCode); | companyFiscalCode.setFiscalCode(fiscalCode); | ||||
companyFiscalCode.setUpdateOn(LocalDateTime.now()); | companyFiscalCode.setUpdateOn(LocalDateTime.now()); | ||||
companyFiscalCode.setUpdateBy(userId); | |||||
iCompanyFiscalCodeService.saveOrUpdate(companyFiscalCode); | |||||
companyFiscalCode.setUpdateBy(userDetail.getUserId()); | |||||
fiscalCodeService.saveOrUpdate(companyFiscalCode); | |||||
// 保存印章配置 | // 保存印章配置 | ||||
CompanySignature companySignature = iCompanySignatureService.getByOrganizationCode(organizationCode); | |||||
if (Objects.isNull(companySignature)) { | |||||
companySignature = new CompanySignature(); | |||||
companySignature.setOrganizationCode(organizationCode); | |||||
companySignature.setCreateOn(LocalDateTime.now()); | |||||
CompanySignature signature = signatureService.getByOrganizationCode(temOrgCode); | |||||
if (Objects.isNull(signature)) { | |||||
signature = new CompanySignature(); | |||||
signature.setOrganizationCode(temOrgCode); | |||||
signature.setCreateOn(LocalDateTime.now()); | |||||
} | } | ||||
String sealSn = reqCompanyFiscalCodeAndSealSnPO.getSealSn(); | |||||
companySignature.setSealSn(sealSn); | |||||
companySignature.setUpdateOn(LocalDateTime.now()); | |||||
companySignature.setCreateBy(userId); | |||||
companySignature.setUpdateBy(userId); | |||||
iCompanySignatureService.saveOrUpdate(companySignature); | |||||
String sealSn = req.getSealSn(); | |||||
signature.setSealSn(sealSn); | |||||
signature.setUpdateOn(LocalDateTime.now()); | |||||
signature.setCreateBy(userDetail.getUserId()); | |||||
signature.setUpdateBy(userDetail.getUserId()); | |||||
signatureService.saveOrUpdate(signature); | |||||
} | } | ||||
public ResCompanyFiscalCodeAndSealSnVO getFiscalCodeConfigure(ReqGetCompanyFiscalCodeAndSealSnPO request) { | |||||
Long userId = LoginUserUtil.getUserId(); | |||||
String organizationCode = request.getOrganizationCode(); | |||||
if (StringUtils.isBlank(organizationCode)) { | |||||
organizationCode = userInfoHelper.getUserEmpPosUnitCode(userId); | |||||
public CompanyFiscalCodeAndSealSnVO getFiscalCodeConfigure(ReqGetCompanyFiscalCodeAndSealSnPO request) { | |||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | |||||
String temOrgCode; | |||||
if (StrUtils.isBlank(request.getOrganizationCode())) { | |||||
temOrgCode = String.valueOf(userDetail.getMhUnitId()); | |||||
} else { | |||||
temOrgCode = request.getOrganizationCode(); | |||||
} | } | ||||
CompanySignature companySignature = iCompanySignatureService.getByOrganizationCode(organizationCode); | |||||
CompanyFiscalCode companyFiscalCode = iCompanyFiscalCodeService.getByOrganizationCode(organizationCode); | |||||
ResCompanyFiscalCodeAndSealSnVO returnVO = new ResCompanyFiscalCodeAndSealSnVO(); | |||||
if (Objects.isNull(companySignature)) { | |||||
CompanySignature signature = signatureService.getByOrganizationCode(temOrgCode); | |||||
if (Objects.isNull(signature)) { | |||||
return null; | return null; | ||||
} | } | ||||
returnVO.setCreateTime(companySignature.getCreateOn()); | |||||
returnVO.setUpdateTime(companySignature.getUpdateOn()); | |||||
returnVO.setFiscalCode(companyFiscalCode.getFiscalCode()); | |||||
returnVO.setSealSn(companySignature.getSealSn()); | |||||
return returnVO; | |||||
CompanyFiscalCode cfc = fiscalCodeService.getByOrgCode(temOrgCode); | |||||
CompanyFiscalCodeAndSealSnVO res = new CompanyFiscalCodeAndSealSnVO(); | |||||
res.setCreateTime(signature.getCreateOn()); | |||||
res.setUpdateTime(signature.getUpdateOn()); | |||||
res.setFiscalCode(cfc.getFiscalCode()); | |||||
res.setSealSn(signature.getSealSn()); | |||||
return res; | |||||
} | } | ||||
} | } |
@@ -12,9 +12,8 @@ import javax.validation.constraints.NotBlank; | |||||
*/ | */ | ||||
@Data | @Data | ||||
@ApiModel("财政编码配置") | @ApiModel("财政编码配置") | ||||
public class ReqCompanyFiscalCodeAndSealSnPO { | |||||
public class CompanyFiscalCodeAndSealSnReq { | |||||
// @NotBlank(message = "组织编码 不能为空") | |||||
@ApiModelProperty("组织编码(需传入用户任职单位code)") | @ApiModelProperty("组织编码(需传入用户任职单位code)") | ||||
private String organizationCode; | private String organizationCode; | ||||
@@ -13,7 +13,7 @@ import java.time.LocalDateTime; | |||||
@Data | @Data | ||||
@ApiModel("财政编码配置VO") | @ApiModel("财政编码配置VO") | ||||
public class ResCompanyFiscalCodeAndSealSnVO { | |||||
public class CompanyFiscalCodeAndSealSnVO { | |||||
@ApiModelProperty("组织编码") | @ApiModelProperty("组织编码") | ||||
private String organizationCode; | private String organizationCode; |
@@ -16,7 +16,7 @@ import java.util.Map; | |||||
*/ | */ | ||||
public interface ICompanyFiscalCodeService extends IService<CompanyFiscalCode> { | public interface ICompanyFiscalCodeService extends IService<CompanyFiscalCode> { | ||||
CompanyFiscalCode getByOrganizationCode(String orgCode); | |||||
CompanyFiscalCode getByOrgCode(String orgCode); | |||||
/** | /** | ||||
* 获取 key orgCode fiscalCode | * 获取 key orgCode fiscalCode | ||||
@@ -29,7 +29,7 @@ public class CompanyFiscalCodeServiceImpl extends ServiceImpl<NdCompanyFiscalCod | |||||
@Override | @Override | ||||
public CompanyFiscalCode getByOrganizationCode(String orgCode) { | |||||
public CompanyFiscalCode getByOrgCode(String orgCode) { | |||||
if (StringUtils.isBlank(orgCode)) { | if (StringUtils.isBlank(orgCode)) { | ||||
return null; | return null; | ||||
} | } | ||||
@@ -78,15 +78,15 @@ public class GovProjectCollectionController { | |||||
@PostMapping("/save") | @PostMapping("/save") | ||||
@ApiOperation("项目归集保存") | @ApiOperation("项目归集保存") | ||||
@WebLog("项目归集保存") | @WebLog("项目归集保存") | ||||
public String save(@Valid @RequestBody GovBizProjectSaveDTO saveDTO) { | |||||
return collectionManage.save(saveDTO,null); | |||||
public String save(@Valid @RequestBody GovBizProjectSaveDTO req) { | |||||
return collectionManage.save(req); | |||||
} | } | ||||
@PostMapping("/operation/save") | @PostMapping("/operation/save") | ||||
@ApiOperation("运维项目归集保存") | @ApiOperation("运维项目归集保存") | ||||
@WebLog("运维项目归集保存") | @WebLog("运维项目归集保存") | ||||
public String operationSave(@Valid @RequestBody GovOperationProjectSaveDTO saveDTO) { | public String operationSave(@Valid @RequestBody GovOperationProjectSaveDTO saveDTO) { | ||||
return collectionManage.operationSave(saveDTO,null); | |||||
return collectionManage.operationSave(saveDTO, null); | |||||
} | } | ||||
@PostMapping("/remove/{projId}") | @PostMapping("/remove/{projId}") | ||||
@@ -131,14 +131,14 @@ public class GovProjectCollectionController { | |||||
@ApiOperation("项目归集暂存草稿箱") | @ApiOperation("项目归集暂存草稿箱") | ||||
@WebLog("项目归集暂存草稿箱") | @WebLog("项目归集暂存草稿箱") | ||||
public String draft(@Valid @RequestBody GovBizProjectSaveDTO saveDTO) { | public String draft(@Valid @RequestBody GovBizProjectSaveDTO saveDTO) { | ||||
return collectionManage.draft(saveDTO,null); | |||||
return collectionManage.draft(saveDTO, null); | |||||
} | } | ||||
@PostMapping("/operation/draft") | @PostMapping("/operation/draft") | ||||
@ApiOperation("运维项目归集暂存草稿箱") | @ApiOperation("运维项目归集暂存草稿箱") | ||||
@WebLog("运维项目归集暂存草稿箱") | @WebLog("运维项目归集暂存草稿箱") | ||||
public String operationDraft(@Valid @RequestBody GovOperationProjectSaveDTO saveDTO) { | public String operationDraft(@Valid @RequestBody GovOperationProjectSaveDTO saveDTO) { | ||||
return collectionManage.operationDraft(saveDTO,null); | |||||
return collectionManage.operationDraft(saveDTO, null); | |||||
} | } | ||||
@PostMapping("/draft-remove/{draftId}") | @PostMapping("/draft-remove/{draftId}") | ||||
@@ -200,7 +200,7 @@ public class GovProjectCollectionController { | |||||
@PostMapping("/remove-project") | @PostMapping("/remove-project") | ||||
@ApiOperation("删除申报项目") | @ApiOperation("删除申报项目") | ||||
@WebLog("删除申报项目") | @WebLog("删除申报项目") | ||||
public String removeProject(@RequestBody List<String> projectCodes){ | |||||
public String removeProject(@RequestBody List<String> projectCodes) { | |||||
return collectionManage.removeProject(projectCodes); | return collectionManage.removeProject(projectCodes); | ||||
} | } | ||||
@@ -3,15 +3,16 @@ package com.hz.pm.api.gov.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.bean.copier.CopyOptions; | import cn.hutool.core.bean.copier.CopyOptions; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.util.StrUtil; | |||||
import com.alibaba.fastjson.JSON; | import com.alibaba.fastjson.JSON; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.google.common.collect.Maps; | import com.google.common.collect.Maps; | ||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | |||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.common.model.constant.RegionConst; | import com.hz.pm.api.common.model.constant.RegionConst; | ||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | |||||
import com.hz.pm.api.gov.contants.BizProjectContant; | import com.hz.pm.api.gov.contants.BizProjectContant; | ||||
import com.hz.pm.api.gov.convert.ProjectConvert; | import com.hz.pm.api.gov.convert.ProjectConvert; | ||||
import com.hz.pm.api.gov.model.dto.*; | import com.hz.pm.api.gov.model.dto.*; | ||||
@@ -29,9 +30,9 @@ import com.hz.pm.api.projectdeclared.service.IOperationService; | |||||
import com.hz.pm.api.projectdeclared.service.IPreInsAcceptancePersonService; | import com.hz.pm.api.projectdeclared.service.IPreInsAcceptancePersonService; | ||||
import com.hz.pm.api.projectdeclared.service.IPurchaseService; | import com.hz.pm.api.projectdeclared.service.IPurchaseService; | ||||
import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil; | import com.hz.pm.api.projectdeclared.utils.GenerateProjectCodeUtil; | ||||
import com.hz.pm.api.projectlib.model.entity.*; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeEnum; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.*; | |||||
import com.hz.pm.api.projectlib.model.req.ProjectListReq; | import com.hz.pm.api.projectlib.model.req.ProjectListReq; | ||||
import com.hz.pm.api.projectlib.service.*; | import com.hz.pm.api.projectlib.service.*; | ||||
import com.hz.pm.api.safety.model.entity.PersonSafetyInfo; | import com.hz.pm.api.safety.model.entity.PersonSafetyInfo; | ||||
@@ -77,9 +78,11 @@ import java.time.temporal.Temporal; | |||||
import java.util.*; | import java.util.*; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
import static com.hz.pm.api.gov.contants.BizProjectContant.ProjectCollection.*; | |||||
/** | /** | ||||
* @author zpf | * @author zpf | ||||
* @date 2023/8/21 下午2:27 | |||||
* @since 2023/8/21 下午2:27 | |||||
*/ | */ | ||||
@Component | @Component | ||||
@@ -173,16 +176,14 @@ public class GovProjectCollectionManage { | |||||
/** | /** | ||||
* 分页查 项目归集 | * 分页查 项目归集 | ||||
* | * | ||||
* @param req | |||||
* @return | |||||
* @param req \ | |||||
* @return \ | |||||
*/ | */ | ||||
public PageVo<GovBizProjectListVO> list(ProjectListReq req) { | public PageVo<GovBizProjectListVO> list(ProjectListReq req) { | ||||
Page<GovBizProjectBaseinfo> page = req.page(); | Page<GovBizProjectBaseinfo> page = req.page(); | ||||
LambdaQueryWrapper<GovBizProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | LambdaQueryWrapper<GovBizProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectBaseinfo::getBaseProjName, req.getProjectName()) | .like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectBaseinfo::getBaseProjName, req.getProjectName()) | ||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | .like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovBizProjectBaseinfo::getBaseAreaCode, req.getAreaCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovBizProjectBaseinfo::getBaseAreaCode, req.getRegionCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMax()) | ||||
.eq(StringUtils.isNotBlank(req.getProjectType()), GovBizProjectBaseinfo::getBaseProjType, req.getProjectType()) | .eq(StringUtils.isNotBlank(req.getProjectType()), GovBizProjectBaseinfo::getBaseProjType, req.getProjectType()) | ||||
@@ -195,7 +196,6 @@ public class GovProjectCollectionManage { | |||||
ProjectTypeNewEnum.XU_OPERA.getCode())) | ProjectTypeNewEnum.XU_OPERA.getCode())) | ||||
.eq(GovBizProjectBaseinfo::getDeleted, Boolean.FALSE) | .eq(GovBizProjectBaseinfo::getDeleted, Boolean.FALSE) | ||||
.orderByDesc(GovBizProjectBaseinfo::getBizTime); | .orderByDesc(GovBizProjectBaseinfo::getBizTime); | ||||
// permissions(wrapper); | |||||
baseinfoService.page(page, wrapper); | baseinfoService.page(page, wrapper); | ||||
if (CollUtil.isEmpty(page.getRecords())) { | if (CollUtil.isEmpty(page.getRecords())) { | ||||
@@ -208,10 +208,10 @@ public class GovProjectCollectionManage { | |||||
Map<String, GovBizProjectApply> applyMap = Maps.newHashMap(); | Map<String, GovBizProjectApply> applyMap = Maps.newHashMap(); | ||||
if (CollUtil.isNotEmpty(projIds)) { | if (CollUtil.isNotEmpty(projIds)) { | ||||
List<GovBizProjectApply> applys = projectApplyService.list(Wrappers.lambdaQuery(GovBizProjectApply.class) | |||||
List<GovBizProjectApply> applies = projectApplyService.list(Wrappers.lambdaQuery(GovBizProjectApply.class) | |||||
.in(GovBizProjectApply::getBaseProjId, projIds) | .in(GovBizProjectApply::getBaseProjId, projIds) | ||||
.eq(GovBizProjectApply::getDeleted, Boolean.FALSE)); | .eq(GovBizProjectApply::getDeleted, Boolean.FALSE)); | ||||
applyMap = applys.stream().collect(Collectors.toMap(GovBizProjectApply::getBaseProjId, a -> a)); | |||||
applyMap = applies.stream().collect(Collectors.toMap(GovBizProjectApply::getBaseProjId, a -> a)); | |||||
} | } | ||||
Map<String, GovBizProjectApply> finalApplyMap = applyMap; | Map<String, GovBizProjectApply> finalApplyMap = applyMap; | ||||
@@ -246,8 +246,6 @@ public class GovProjectCollectionManage { | |||||
LambdaQueryWrapper<GovOperationProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | LambdaQueryWrapper<GovOperationProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovOperationProjectBaseinfo::getBaseProjName, req.getProjectName()) | .like(StringUtils.isNotBlank(req.getProjectName()), GovOperationProjectBaseinfo::getBaseProjName, req.getProjectName()) | ||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovOperationProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | .like(StringUtils.isNotBlank(req.getBuildOrg()), GovOperationProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovOperationProjectBaseinfo::getBaseAreaCode, req.getAreaCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovOperationProjectBaseinfo::getBaseAreaCode, req.getRegionCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMax()) | ||||
.eq(StringUtils.isNotBlank(req.getProjectType()), GovOperationProjectBaseinfo::getBaseProjType, req.getProjectType()) | .eq(StringUtils.isNotBlank(req.getProjectType()), GovOperationProjectBaseinfo::getBaseProjType, req.getProjectType()) | ||||
@@ -305,8 +303,6 @@ public class GovProjectCollectionManage { | |||||
LambdaQueryWrapper<GovBizProjectDraft> wrapper = Wrappers.lambdaQuery(GovBizProjectDraft.class) | LambdaQueryWrapper<GovBizProjectDraft> wrapper = Wrappers.lambdaQuery(GovBizProjectDraft.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectDraft::getBaseProjName, req.getProjectName()) | .like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectDraft::getBaseProjName, req.getProjectName()) | ||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectDraft::getBaseBuildDeprt, req.getBuildOrg()) | .like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectDraft::getBaseBuildDeprt, req.getBuildOrg()) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovBizProjectDraft::getBaseAreaCode, req.getAreaCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovBizProjectDraft::getBaseAreaCode, req.getRegionCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectDraft::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectDraft::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectDraft::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectDraft::getTongTime, req.getCreateOnMax()) | ||||
.eq(StringUtils.isNotBlank(req.getProjectType()), GovBizProjectDraft::getBaseProjType, req.getProjectType()) | .eq(StringUtils.isNotBlank(req.getProjectType()), GovBizProjectDraft::getBaseProjType, req.getProjectType()) | ||||
@@ -347,13 +343,11 @@ public class GovProjectCollectionManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
Page<GovOperationProjectDraft> page = req.page(); | Page<GovOperationProjectDraft> page = req.page(); | ||||
LambdaQueryWrapper<GovOperationProjectDraft> wrapper = Wrappers.lambdaQuery(GovOperationProjectDraft.class) | LambdaQueryWrapper<GovOperationProjectDraft> wrapper = Wrappers.lambdaQuery(GovOperationProjectDraft.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovOperationProjectDraft::getBaseProjName, req.getProjectName()) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovOperationProjectDraft::getBaseBuildDeprt, req.getBuildOrg()) | |||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovOperationProjectDraft::getBaseAreaCode, req.getAreaCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovOperationProjectDraft::getBaseAreaCode, req.getRegionCode() + BizConst.NINE_AREA_CODE_LAST) | |||||
.like(StrUtil.isNotBlank(req.getProjectName()), GovOperationProjectDraft::getBaseProjName, req.getProjectName()) | |||||
.like(StrUtil.isNotBlank(req.getBuildOrg()), GovOperationProjectDraft::getBaseBuildDeprt, req.getBuildOrg()) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectDraft::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectDraft::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectDraft::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectDraft::getTongTime, req.getCreateOnMax()) | ||||
.eq(StringUtils.isNotBlank(req.getProjectType()), GovOperationProjectDraft::getBaseProjType, req.getProjectType()) | |||||
.eq(StrUtil.isNotBlank(req.getProjectType()), GovOperationProjectDraft::getBaseProjType, req.getProjectType()) | |||||
.eq(GovOperationProjectDraft::getDeleted, Boolean.FALSE) | .eq(GovOperationProjectDraft::getDeleted, Boolean.FALSE) | ||||
.eq(GovOperationProjectDraft::getCreateId, user.getUserId()) | .eq(GovOperationProjectDraft::getCreateId, user.getUserId()) | ||||
.orderByDesc(GovOperationProjectDraft::getBizTime); | .orderByDesc(GovOperationProjectDraft::getBizTime); | ||||
@@ -381,28 +375,10 @@ public class GovProjectCollectionManage { | |||||
return PageVo.of(res, page.getTotal()); | return PageVo.of(res, page.getTotal()); | ||||
} | } | ||||
/** | |||||
* 数据权限 | |||||
* | |||||
* @param wrapper | |||||
*/ | |||||
private void permissions(LambdaQueryWrapper<GovBizProjectBaseinfo> wrapper) { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
//超管和区域管理员 | |||||
if (user.getSuperAdmin() || user.getRegionAdmin()) { | |||||
log.info("超管和区管 可以看所有"); | |||||
return; | |||||
} | |||||
wrapper.eq(GovBizProjectBaseinfo::getBaseBuildDeprtDing, user.getEmpPosUnitCode()); | |||||
} | |||||
public Long count(ProjectListReq req) { | public Long count(ProjectListReq req) { | ||||
LambdaQueryWrapper<GovBizProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | LambdaQueryWrapper<GovBizProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectBaseinfo::getBaseProjName, req.getProjectName()) | .like(StringUtils.isNotBlank(req.getProjectName()), GovBizProjectBaseinfo::getBaseProjName, req.getProjectName()) | ||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | .like(StringUtils.isNotBlank(req.getBuildOrg()), GovBizProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovBizProjectBaseinfo::getAreaCode, req.getAreaCode()) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovBizProjectBaseinfo::getAreaCode, req.getRegionCode()) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovBizProjectBaseinfo::getTongTime, req.getCreateOnMax()) | ||||
.eq(GovBizProjectBaseinfo::getDeleted, Boolean.FALSE) | .eq(GovBizProjectBaseinfo::getDeleted, Boolean.FALSE) | ||||
@@ -414,8 +390,6 @@ public class GovProjectCollectionManage { | |||||
LambdaQueryWrapper<GovOperationProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | LambdaQueryWrapper<GovOperationProjectBaseinfo> wrapper = Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | ||||
.like(StringUtils.isNotBlank(req.getProjectName()), GovOperationProjectBaseinfo::getBaseProjName, req.getProjectName()) | .like(StringUtils.isNotBlank(req.getProjectName()), GovOperationProjectBaseinfo::getBaseProjName, req.getProjectName()) | ||||
.like(StringUtils.isNotBlank(req.getBuildOrg()), GovOperationProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | .like(StringUtils.isNotBlank(req.getBuildOrg()), GovOperationProjectBaseinfo::getBaseBuildDeprt, req.getBuildOrg()) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()), GovOperationProjectBaseinfo::getAreaCode, req.getAreaCode()) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), GovOperationProjectBaseinfo::getAreaCode, req.getRegionCode()) | |||||
.gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMin()) | .gt(Objects.nonNull(req.getCreateOnMin()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMin()) | ||||
.le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMax()) | .le(Objects.nonNull(req.getCreateOnMax()), GovOperationProjectBaseinfo::getTongTime, req.getCreateOnMax()) | ||||
.eq(GovOperationProjectBaseinfo::getDeleted, Boolean.FALSE) | .eq(GovOperationProjectBaseinfo::getDeleted, Boolean.FALSE) | ||||
@@ -681,26 +655,23 @@ public class GovProjectCollectionManage { | |||||
/** | /** | ||||
* 项目归集保存 | * 项目归集保存 | ||||
* | * | ||||
* @param saveDTO | |||||
* @return | |||||
* @param req \ | |||||
* @return \ | |||||
*/ | */ | ||||
@Transactional | |||||
public String save(GovBizProjectSaveDTO saveDTO, UserInfoDetails user) { | |||||
if (Objects.isNull(user)) { | |||||
user = LoginUserUtil.loginUserDetail(); | |||||
} | |||||
@Transactional(rollbackFor = Exception.class) | |||||
public String save(GovBizProjectSaveDTO req) { | |||||
LocalDateTime now = LocalDateTime.now(); | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
GovBizProjectBaseinfoDTO base = saveDTO.getBaseinfo(); | |||||
String baseProjId = saveDTO.getBaseProjId(); | |||||
String baseAreaCode = user.getRegionCode() + BizConst.NINE_AREA_CODE_LAST; | |||||
GovBizProjectBaseinfoDTO base = req.getBaseinfo(); | |||||
String baseProjId = req.getBaseProjId(); | |||||
String baseProjName = base.getBaseProjName(); | String baseProjName = base.getBaseProjName(); | ||||
//1.保存基本信息 | //1.保存基本信息 | ||||
GovBizProjectBaseinfoDTO baseinfo = saveDTO.getBaseinfo(); | |||||
GovBizProjectBaseinfoDTO baseinfo = req.getBaseinfo(); | |||||
baseinfo.setBaseProjId(baseProjId); | baseinfo.setBaseProjId(baseProjId); | ||||
baseinfo.setBaseProjName(baseProjName); | baseinfo.setBaseProjName(baseProjName); | ||||
baseinfo.setBaseAreaCode(baseAreaCode); | |||||
baseinfo.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
baseinfo.setIsEffective(IS_EFFECTIVE); | |||||
GovBizProjectBaseinfo oldBaseInfo = baseinfoService.getOne(Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | GovBizProjectBaseinfo oldBaseInfo = baseinfoService.getOne(Wrappers.lambdaQuery(GovBizProjectBaseinfo.class) | ||||
.eq(GovBizProjectBaseinfo::getBaseProjId, baseProjId) | .eq(GovBizProjectBaseinfo::getBaseProjId, baseProjId) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
@@ -709,30 +680,28 @@ public class GovProjectCollectionManage { | |||||
checkName(baseProjName, baseProjId); | checkName(baseProjName, baseProjId); | ||||
GovBizProjectBaseinfo saveBase = BeanUtil.copyProperties(baseinfo, GovBizProjectBaseinfo.class); | GovBizProjectBaseinfo saveBase = BeanUtil.copyProperties(baseinfo, GovBizProjectBaseinfo.class); | ||||
saveBase.setBaseProjName(baseProjName); | saveBase.setBaseProjName(baseProjName); | ||||
saveBase.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
saveBase.setIsEffective(IS_EFFECTIVE); | |||||
if (Objects.nonNull(oldBaseInfo)) { | if (Objects.nonNull(oldBaseInfo)) { | ||||
saveBase.setId(oldBaseInfo.getId()); | saveBase.setId(oldBaseInfo.getId()); | ||||
saveBase.setBaseAreaCode(null); | saveBase.setBaseAreaCode(null); | ||||
} else { | } else { | ||||
saveBase.setTongTime(LocalDateTime.now()); | |||||
saveBase.setBaseAreaCode(baseAreaCode); | |||||
saveBase.setBaseAreaName(regionCacheHelper.getRegionName(user.getRegionCode(), RegionConst.RL_COUNTY)); | |||||
saveBase.setTongTime(now); | |||||
} | } | ||||
saveBase.setAreaCode(RegionConst.RC_HZ); | saveBase.setAreaCode(RegionConst.RC_HZ); | ||||
saveBase.setBizTime(LocalDateTime.now()); | |||||
saveBase.setBizTime(now); | |||||
saveBase.setUpdateBy(user.getUsername()); | saveBase.setUpdateBy(user.getUsername()); | ||||
saveBase.setUpdateOn(LocalDateTime.now()); | |||||
saveBase.setUpdateOn(now); | |||||
//如果是新增的话 要生成 项目编号 | //如果是新增的话 要生成 项目编号 | ||||
if (StringUtils.isBlank(baseProjId) || BizProjectContant.ProjectCollection.DRAFT.equals(baseProjId)) { | |||||
baseProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); | |||||
if (StringUtils.isBlank(baseProjId) || DRAFT.equals(baseProjId)) { | |||||
baseProjId = generateProjectCodeUtil.generateProjectCode(req); | |||||
saveBase.setBaseProjId(baseProjId); | saveBase.setBaseProjId(baseProjId); | ||||
} | } | ||||
baseinfoService.saveOrUpdate(saveBase); | baseinfoService.saveOrUpdate(saveBase); | ||||
// 2.保存 申报信息 | // 2.保存 申报信息 | ||||
GovBizProjectApplyDTO apply = saveDTO.getApply(); | |||||
GovBizProjectApplyDTO apply = req.getApply(); | |||||
if (Objects.nonNull(apply)) { | if (Objects.nonNull(apply)) { | ||||
apply.setBaseProjId(baseProjId); | apply.setBaseProjId(baseProjId); | ||||
apply.setBaseProjName(baseProjName); | apply.setBaseProjName(baseProjName); | ||||
@@ -745,7 +714,7 @@ public class GovProjectCollectionManage { | |||||
if (Objects.nonNull(oldApply)) { | if (Objects.nonNull(oldApply)) { | ||||
saveApply.setId(oldApply.getId()); | saveApply.setId(oldApply.getId()); | ||||
} else { | } else { | ||||
saveApply.setTongTime(LocalDateTime.now()); | |||||
saveApply.setTongTime(now); | |||||
} | } | ||||
if (Objects.nonNull(saveApply.getBaseProjStartTime()) && | if (Objects.nonNull(saveApply.getBaseProjStartTime()) && | ||||
Objects.nonNull(saveApply.getBaseProjEndTime())) { | Objects.nonNull(saveApply.getBaseProjEndTime())) { | ||||
@@ -753,16 +722,16 @@ public class GovProjectCollectionManage { | |||||
saveApply.getBaseProjEndTime())); | saveApply.getBaseProjEndTime())); | ||||
} | } | ||||
saveApply.setAreaCode(RegionConst.RC_HZ); | saveApply.setAreaCode(RegionConst.RC_HZ); | ||||
saveApply.setBizTime(LocalDateTime.now()); | |||||
saveApply.setBizTime(now); | |||||
saveApply.setUpdateBy(user.getUsername()); | saveApply.setUpdateBy(user.getUsername()); | ||||
saveApply.setUpdateOn(LocalDateTime.now()); | |||||
saveApply.setUpdateOn(now); | |||||
if (projectApplyService.saveOrUpdate(saveApply)) { | if (projectApplyService.saveOrUpdate(saveApply)) { | ||||
threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssApply(apply, oldApply, saveApply)); | threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssApply(apply, oldApply, saveApply)); | ||||
} | } | ||||
} | } | ||||
// 3.保存 审批信息 | // 3.保存 审批信息 | ||||
GovBizProjectApproveDTO approve = saveDTO.getApprove(); | |||||
GovBizProjectApproveDTO approve = req.getApprove(); | |||||
if (Objects.nonNull(approve)) { | if (Objects.nonNull(approve)) { | ||||
approve.setBaseProjId(baseProjId); | approve.setBaseProjId(baseProjId); | ||||
approve.setBaseProjName(baseProjName); | approve.setBaseProjName(baseProjName); | ||||
@@ -787,7 +756,7 @@ public class GovProjectCollectionManage { | |||||
} | } | ||||
// 4.保存 建设项目 实施信息 | // 4.保存 建设项目 实施信息 | ||||
GovBizProjectCimplementDTO cimplement = saveDTO.getCimplement(); | |||||
GovBizProjectCimplementDTO cimplement = req.getCimplement(); | |||||
if (Objects.nonNull(cimplement)) { | if (Objects.nonNull(cimplement)) { | ||||
cimplement.setBaseProjId(baseProjId); | cimplement.setBaseProjId(baseProjId); | ||||
cimplement.setBaseProjName(baseProjName); | cimplement.setBaseProjName(baseProjName); | ||||
@@ -804,19 +773,19 @@ public class GovProjectCollectionManage { | |||||
if (Objects.nonNull(oldCimplement)) { | if (Objects.nonNull(oldCimplement)) { | ||||
saveCimplement.setId(oldCimplement.getId()); | saveCimplement.setId(oldCimplement.getId()); | ||||
} else { | } else { | ||||
saveCimplement.setTongTime(LocalDateTime.now()); | |||||
saveCimplement.setTongTime(now); | |||||
} | } | ||||
saveCimplement.setAreaCode(RegionConst.RC_HZ); | saveCimplement.setAreaCode(RegionConst.RC_HZ); | ||||
saveCimplement.setBizTime(LocalDateTime.now()); | |||||
saveCimplement.setBizTime(now); | |||||
saveCimplement.setUpdateBy(user.getUsername()); | saveCimplement.setUpdateBy(user.getUsername()); | ||||
saveCimplement.setUpdateOn(LocalDateTime.now()); | |||||
saveCimplement.setUpdateOn(now); | |||||
if (cimplementService.saveOrUpdate(saveCimplement)) { | if (cimplementService.saveOrUpdate(saveCimplement)) { | ||||
threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssCimplement(cimplement, oldCimplement, saveCimplement)); | threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssCimplement(cimplement, oldCimplement, saveCimplement)); | ||||
} | } | ||||
} | } | ||||
// 5.保存 运维项目 实施信息 | // 5.保存 运维项目 实施信息 | ||||
GovBizProjectMimplementDTO mimplement = saveDTO.getMimplement(); | |||||
GovBizProjectMimplementDTO mimplement = req.getMimplement(); | |||||
if (Objects.nonNull(mimplement)) { | if (Objects.nonNull(mimplement)) { | ||||
mimplement.setBaseProjId(baseProjId); | mimplement.setBaseProjId(baseProjId); | ||||
mimplement.setBaseProjName(baseProjName); | mimplement.setBaseProjName(baseProjName); | ||||
@@ -833,43 +802,40 @@ public class GovProjectCollectionManage { | |||||
if (Objects.nonNull(oldMimplement)) { | if (Objects.nonNull(oldMimplement)) { | ||||
saveMimplement.setId(oldMimplement.getId()); | saveMimplement.setId(oldMimplement.getId()); | ||||
} else { | } else { | ||||
saveMimplement.setTongTime(LocalDateTime.now()); | |||||
saveMimplement.setTongTime(now); | |||||
} | } | ||||
if (Objects.nonNull(saveBase.getAreaCode())) { | if (Objects.nonNull(saveBase.getAreaCode())) { | ||||
saveMimplement.setAreaCode(saveBase.getAreaCode()); | saveMimplement.setAreaCode(saveBase.getAreaCode()); | ||||
} | } | ||||
saveMimplement.setAreaCode(RegionConst.RC_HZ); | saveMimplement.setAreaCode(RegionConst.RC_HZ); | ||||
saveMimplement.setBizTime(LocalDateTime.now()); | |||||
saveMimplement.setBizTime(now); | |||||
saveMimplement.setUpdateBy(user.getUsername()); | saveMimplement.setUpdateBy(user.getUsername()); | ||||
saveMimplement.setUpdateOn(LocalDateTime.now()); | |||||
saveMimplement.setUpdateOn(now); | |||||
if (mimplementService.saveOrUpdate(saveMimplement)) { | if (mimplementService.saveOrUpdate(saveMimplement)) { | ||||
threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssMimplement(mimplement, oldMimplement, saveMimplement)); | threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssMimplement(mimplement, oldMimplement, saveMimplement)); | ||||
} | } | ||||
} | } | ||||
// 6.保存 采购信息 | // 6.保存 采购信息 | ||||
List<GovBizProjectProcureDTO> procures = saveDTO.getProcures(); | |||||
List<GovBizProjectProcureDTO> procures = req.getProcures(); | |||||
if (Objects.nonNull(procures)) { | if (Objects.nonNull(procures)) { | ||||
procureService.remove(Wrappers.lambdaQuery(GovBizProjectProcure.class) | procureService.remove(Wrappers.lambdaQuery(GovBizProjectProcure.class) | ||||
.eq(GovBizProjectProcure::getBaseProjId, baseProjId)); | .eq(GovBizProjectProcure::getBaseProjId, baseProjId)); | ||||
String finalBaseProjId = baseProjId; | |||||
UserInfoDetails finalUser = user; | |||||
Integer index = 1; | Integer index = 1; | ||||
for (GovBizProjectProcureDTO procure : procures) { | for (GovBizProjectProcureDTO procure : procures) { | ||||
procure.setBaseProjId(finalBaseProjId); | |||||
procure.setBaseProjId(baseProjId); | |||||
procure.setBaseProjName(baseProjName); | procure.setBaseProjName(baseProjName); | ||||
procure.setBaseBidCode(finalBaseProjId + StrPool.DASH + String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, index)); | |||||
procure.setBaseBidCode(baseProjId + StrPool.DASH + String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, index)); | |||||
GovBizProjectProcure saveProcure = BeanUtil.copyProperties(procure, GovBizProjectProcure.class); | GovBizProjectProcure saveProcure = BeanUtil.copyProperties(procure, GovBizProjectProcure.class); | ||||
saveProcure.setBaseProjId(finalBaseProjId); | |||||
saveProcure.setBaseProjId(baseProjId); | |||||
saveProcure.setId(null); | saveProcure.setId(null); | ||||
saveProcure.setAreaCode(RegionConst.RC_HZ); | saveProcure.setAreaCode(RegionConst.RC_HZ); | ||||
saveProcure.setTongTime(LocalDateTime.now()); | |||||
saveProcure.setBizTime(LocalDateTime.now()); | |||||
saveProcure.setUpdateBy(finalUser.getUsername()); | |||||
saveProcure.setUpdateOn(LocalDateTime.now()); | |||||
saveProcure.setTongTime(now); | |||||
saveProcure.setBizTime(now); | |||||
saveProcure.setUpdateBy(user.getUsername()); | |||||
saveProcure.setUpdateOn(now); | |||||
if (procureService.save(saveProcure)) { | if (procureService.save(saveProcure)) { | ||||
threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssProcure(procure, null, saveProcure)); | threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssProcure(procure, null, saveProcure)); | ||||
} | } | ||||
@@ -878,11 +844,8 @@ public class GovProjectCollectionManage { | |||||
} | } | ||||
//7. 推送数据(改为定时推送了) | |||||
// pushProject(saveDTO); | |||||
//如果是草稿箱来的 就要删除 | |||||
if (Objects.nonNull(saveDTO.getDraftId())) { | |||||
draftService.removeById(saveDTO.getDraftId()); | |||||
if (Objects.nonNull(req.getDraftId())) { | |||||
draftService.removeById(req.getDraftId()); | |||||
} | } | ||||
return BizConst.SAVE_SUCCESS; | return BizConst.SAVE_SUCCESS; | ||||
@@ -895,6 +858,7 @@ public class GovProjectCollectionManage { | |||||
* @param user | * @param user | ||||
* @return | * @return | ||||
*/ | */ | ||||
@Transactional(rollbackFor = Exception.class) | |||||
public String operationSave(GovOperationProjectSaveDTO saveDTO, UserInfoDetails user) { | public String operationSave(GovOperationProjectSaveDTO saveDTO, UserInfoDetails user) { | ||||
if (Objects.isNull(user)) { | if (Objects.isNull(user)) { | ||||
user = LoginUserUtil.loginUserDetail(); | user = LoginUserUtil.loginUserDetail(); | ||||
@@ -902,15 +866,13 @@ public class GovProjectCollectionManage { | |||||
GovOperationProjectBaseinfoDTO base = saveDTO.getBaseinfo(); | GovOperationProjectBaseinfoDTO base = saveDTO.getBaseinfo(); | ||||
String baseProjId = saveDTO.getBaseProjId(); | String baseProjId = saveDTO.getBaseProjId(); | ||||
String baseAreaCode = user.getRegionCode() + BizConst.NINE_AREA_CODE_LAST; | |||||
String baseProjName = base.getBaseProjName(); | String baseProjName = base.getBaseProjName(); | ||||
//1.保存基本信息 | //1.保存基本信息 | ||||
GovOperationProjectBaseinfoDTO baseinfo = saveDTO.getBaseinfo(); | GovOperationProjectBaseinfoDTO baseinfo = saveDTO.getBaseinfo(); | ||||
baseinfo.setBaseProjId(baseProjId); | baseinfo.setBaseProjId(baseProjId); | ||||
baseinfo.setBaseProjName(baseProjName); | baseinfo.setBaseProjName(baseProjName); | ||||
baseinfo.setBaseAreaCode(baseAreaCode); | |||||
baseinfo.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
baseinfo.setIsEffective(IS_EFFECTIVE); | |||||
GovOperationProjectBaseinfo oldBaseInfo = operationProjectBaseinfoService.getOne(Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | GovOperationProjectBaseinfo oldBaseInfo = operationProjectBaseinfoService.getOne(Wrappers.lambdaQuery(GovOperationProjectBaseinfo.class) | ||||
.eq(GovOperationProjectBaseinfo::getBaseProjId, baseProjId) | .eq(GovOperationProjectBaseinfo::getBaseProjId, baseProjId) | ||||
.last(BizConst.LIMIT_1)); | .last(BizConst.LIMIT_1)); | ||||
@@ -919,22 +881,19 @@ public class GovProjectCollectionManage { | |||||
checkNameOperation(baseProjName, baseProjId); | checkNameOperation(baseProjName, baseProjId); | ||||
GovOperationProjectBaseinfo saveBase = BeanUtil.copyProperties(baseinfo, GovOperationProjectBaseinfo.class); | GovOperationProjectBaseinfo saveBase = BeanUtil.copyProperties(baseinfo, GovOperationProjectBaseinfo.class); | ||||
saveBase.setBaseProjName(baseProjName); | saveBase.setBaseProjName(baseProjName); | ||||
saveBase.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
saveBase.setIsEffective(IS_EFFECTIVE); | |||||
if (Objects.nonNull(oldBaseInfo)) { | if (Objects.nonNull(oldBaseInfo)) { | ||||
saveBase.setId(oldBaseInfo.getId()); | saveBase.setId(oldBaseInfo.getId()); | ||||
saveBase.setBaseAreaCode(null); | saveBase.setBaseAreaCode(null); | ||||
} else { | } else { | ||||
saveBase.setBaseAreaCode(baseAreaCode); | |||||
saveBase.setTongTime(LocalDateTime.now()); | saveBase.setTongTime(LocalDateTime.now()); | ||||
saveBase.setBaseAreaName(regionCacheHelper.getRegionName(user.getRegionCode(), RegionConst.RL_COUNTY)); | |||||
} | } | ||||
saveBase.setAreaCode(RegionConst.RC_HZ); | |||||
saveBase.setBizTime(LocalDateTime.now()); | saveBase.setBizTime(LocalDateTime.now()); | ||||
saveBase.setUpdateBy(user.getUsername()); | saveBase.setUpdateBy(user.getUsername()); | ||||
saveBase.setUpdateOn(LocalDateTime.now()); | saveBase.setUpdateOn(LocalDateTime.now()); | ||||
//如果是新增的话 要生成 项目编号 | //如果是新增的话 要生成 项目编号 | ||||
if (StringUtils.isBlank(baseProjId) || BizProjectContant.ProjectCollection.DRAFT.equals(baseProjId)) { | |||||
if (StringUtils.isBlank(baseProjId) || DRAFT.equals(baseProjId)) { | |||||
baseProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); | baseProjId = generateProjectCodeUtil.generateProjectCode(saveDTO); | ||||
saveBase.setBaseProjId(baseProjId); | saveBase.setBaseProjId(baseProjId); | ||||
} | } | ||||
@@ -1064,21 +1023,18 @@ public class GovProjectCollectionManage { | |||||
procureService.remove(Wrappers.lambdaQuery(GovBizProjectProcure.class) | procureService.remove(Wrappers.lambdaQuery(GovBizProjectProcure.class) | ||||
.eq(GovBizProjectProcure::getBaseProjId, baseProjId)); | .eq(GovBizProjectProcure::getBaseProjId, baseProjId)); | ||||
String finalBaseProjId = baseProjId; | |||||
UserInfoDetails finalUser = user; | |||||
Integer index = 1; | Integer index = 1; | ||||
for (GovBizProjectProcureDTO procure : procures) { | for (GovBizProjectProcureDTO procure : procures) { | ||||
procure.setBaseProjId(finalBaseProjId); | |||||
procure.setBaseProjId(baseProjId); | |||||
procure.setBaseProjName(baseProjName); | procure.setBaseProjName(baseProjName); | ||||
procure.setBaseBidCode(finalBaseProjId + StrPool.DASH + String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, index)); | |||||
procure.setBaseBidCode(baseProjId + StrPool.DASH + String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, index)); | |||||
GovBizProjectProcure saveProcure = BeanUtil.copyProperties(procure, GovBizProjectProcure.class); | GovBizProjectProcure saveProcure = BeanUtil.copyProperties(procure, GovBizProjectProcure.class); | ||||
saveProcure.setBaseProjId(finalBaseProjId); | |||||
saveProcure.setBaseProjId(baseProjId); | |||||
saveProcure.setId(null); | saveProcure.setId(null); | ||||
saveProcure.setAreaCode(RegionConst.RC_HZ); | saveProcure.setAreaCode(RegionConst.RC_HZ); | ||||
saveProcure.setTongTime(LocalDateTime.now()); | saveProcure.setTongTime(LocalDateTime.now()); | ||||
saveProcure.setBizTime(LocalDateTime.now()); | saveProcure.setBizTime(LocalDateTime.now()); | ||||
saveProcure.setUpdateBy(finalUser.getUsername()); | |||||
saveProcure.setUpdateBy(user.getUsername()); | |||||
saveProcure.setUpdateOn(LocalDateTime.now()); | saveProcure.setUpdateOn(LocalDateTime.now()); | ||||
if (procureService.save(saveProcure)) { | if (procureService.save(saveProcure)) { | ||||
threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssProcure(procure, null, saveProcure)); | threadPoolTaskScheduler.execute(() -> uploadFileToProvincialOssProcure(procure, null, saveProcure)); | ||||
@@ -1088,8 +1044,6 @@ public class GovProjectCollectionManage { | |||||
} | } | ||||
//7. 推送数据(改为定时推送了) | |||||
// pushProject(saveDTO); | |||||
//如果是草稿箱来的 就要删除 | //如果是草稿箱来的 就要删除 | ||||
if (Objects.nonNull(saveDTO.getDraftId())) { | if (Objects.nonNull(saveDTO.getDraftId())) { | ||||
operationProjectDraftService.removeById(saveDTO.getDraftId()); | operationProjectDraftService.removeById(saveDTO.getDraftId()); | ||||
@@ -1130,14 +1084,12 @@ public class GovProjectCollectionManage { | |||||
GovBizProjectDraft draft = new GovBizProjectDraft(); | GovBizProjectDraft draft = new GovBizProjectDraft(); | ||||
//草稿id | //草稿id | ||||
Long draftId = saveDTO.getDraftId(); | Long draftId = saveDTO.getDraftId(); | ||||
String baseAreaCode = user.getRegionCode() + BizConst.NINE_AREA_CODE_LAST; | |||||
if (Objects.nonNull(draftId)) { | if (Objects.nonNull(draftId)) { | ||||
GovBizProjectDraft oldDraft = draftService.getById(draftId); | GovBizProjectDraft oldDraft = draftService.getById(draftId); | ||||
VUtils.isTrue(Objects.isNull(oldDraft)).throwMessage("该草稿不存在!"); | VUtils.isTrue(Objects.isNull(oldDraft)).throwMessage("该草稿不存在!"); | ||||
draft.setId(draftId); | draft.setId(draftId); | ||||
} else { | } else { | ||||
draft.setTongTime(LocalDateTime.now()); | draft.setTongTime(LocalDateTime.now()); | ||||
draft.setBaseAreaCode(baseAreaCode); | |||||
draft.setCreateId(user.getUserId()); | draft.setCreateId(user.getUserId()); | ||||
draft.setTongTime(LocalDateTime.now()); | draft.setTongTime(LocalDateTime.now()); | ||||
} | } | ||||
@@ -1148,7 +1100,7 @@ public class GovProjectCollectionManage { | |||||
String baseProjName = base.getBaseProjName(); | String baseProjName = base.getBaseProjName(); | ||||
//要生成 草稿的项目编号 | //要生成 草稿的项目编号 | ||||
if (StringUtils.isBlank(baseProjId)) { | if (StringUtils.isBlank(baseProjId)) { | ||||
baseProjId = BizProjectContant.ProjectCollection.DRAFT; | |||||
baseProjId = DRAFT; | |||||
} | } | ||||
// 2.保存 申报信息 | // 2.保存 申报信息 | ||||
@@ -1207,12 +1159,12 @@ public class GovProjectCollectionManage { | |||||
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); | .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); | ||||
draft.setBaseProjId(baseProjId); | draft.setBaseProjId(baseProjId); | ||||
draft.setBaseProjName(baseProjName); | draft.setBaseProjName(baseProjName); | ||||
draft.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
draft.setIsEffective(IS_EFFECTIVE); | |||||
draft.setAreaCode(RegionConst.RC_HZ); | draft.setAreaCode(RegionConst.RC_HZ); | ||||
draft.setBizTime(LocalDateTime.now()); | draft.setBizTime(LocalDateTime.now()); | ||||
draft.setUpdateBy(user.getUsername()); | draft.setUpdateBy(user.getUsername()); | ||||
draft.setUpdateOn(LocalDateTime.now()); | draft.setUpdateOn(LocalDateTime.now()); | ||||
draft.setOp(BizProjectContant.ProjectCollection.OP_INSERT); | |||||
draft.setOp(OP_INSERT); | |||||
draftService.saveOrUpdate(draft); | draftService.saveOrUpdate(draft); | ||||
@@ -1227,14 +1179,12 @@ public class GovProjectCollectionManage { | |||||
GovOperationProjectDraft draft = new GovOperationProjectDraft(); | GovOperationProjectDraft draft = new GovOperationProjectDraft(); | ||||
//草稿id | //草稿id | ||||
Long draftId = saveDTO.getDraftId(); | Long draftId = saveDTO.getDraftId(); | ||||
String baseAreaCode = user.getRegionCode() + BizConst.NINE_AREA_CODE_LAST; | |||||
if (Objects.nonNull(draftId)) { | if (Objects.nonNull(draftId)) { | ||||
GovOperationProjectDraft oldDraft = operationProjectDraftService.getById(draftId); | GovOperationProjectDraft oldDraft = operationProjectDraftService.getById(draftId); | ||||
VUtils.isTrue(Objects.isNull(oldDraft)).throwMessage("该草稿不存在!"); | VUtils.isTrue(Objects.isNull(oldDraft)).throwMessage("该草稿不存在!"); | ||||
draft.setId(draftId); | draft.setId(draftId); | ||||
} else { | } else { | ||||
draft.setTongTime(LocalDateTime.now()); | draft.setTongTime(LocalDateTime.now()); | ||||
draft.setBaseAreaCode(baseAreaCode); | |||||
draft.setCreateId(user.getUserId()); | draft.setCreateId(user.getUserId()); | ||||
draft.setTongTime(LocalDateTime.now()); | draft.setTongTime(LocalDateTime.now()); | ||||
} | } | ||||
@@ -1245,7 +1195,7 @@ public class GovProjectCollectionManage { | |||||
String baseProjName = base.getBaseProjName(); | String baseProjName = base.getBaseProjName(); | ||||
//要生成 草稿的项目编号 | //要生成 草稿的项目编号 | ||||
if (StringUtils.isBlank(baseProjId)) { | if (StringUtils.isBlank(baseProjId)) { | ||||
baseProjId = BizProjectContant.ProjectCollection.DRAFT; | |||||
baseProjId = DRAFT; | |||||
} | } | ||||
// 2.保存 申报信息 | // 2.保存 申报信息 | ||||
@@ -1304,12 +1254,12 @@ public class GovProjectCollectionManage { | |||||
.setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); | .setIgnoreError(Boolean.TRUE).setIgnoreNullValue(Boolean.TRUE)); | ||||
draft.setBaseProjId(baseProjId); | draft.setBaseProjId(baseProjId); | ||||
draft.setBaseProjName(baseProjName); | draft.setBaseProjName(baseProjName); | ||||
draft.setIsEffective(BizProjectContant.ProjectCollection.IS_EFFECTIVE); | |||||
draft.setIsEffective(IS_EFFECTIVE); | |||||
draft.setAreaCode(RegionConst.RC_HZ); | draft.setAreaCode(RegionConst.RC_HZ); | ||||
draft.setBizTime(LocalDateTime.now()); | draft.setBizTime(LocalDateTime.now()); | ||||
draft.setUpdateBy(user.getUsername()); | draft.setUpdateBy(user.getUsername()); | ||||
draft.setUpdateOn(LocalDateTime.now()); | draft.setUpdateOn(LocalDateTime.now()); | ||||
draft.setOp(BizProjectContant.ProjectCollection.OP_INSERT); | |||||
draft.setOp(OP_INSERT); | |||||
operationProjectDraftService.saveOrUpdate(draft); | operationProjectDraftService.saveOrUpdate(draft); | ||||
@@ -1722,26 +1672,23 @@ public class GovProjectCollectionManage { | |||||
throw BizException.wrap("pdf转换无效"); | throw BizException.wrap("pdf转换无效"); | ||||
} | } | ||||
private Boolean checkFieldNotPdf(String field, Object record, String fieldName) { | |||||
if (StringUtils.isBlank(field)) { | |||||
private boolean checkFieldNotPdf(String field, Object record, String fieldName) { | |||||
if (StrUtil.isBlank(field)) { | |||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
} | } | ||||
//如果没有老值 | |||||
// 如果没有老值 | |||||
if (Objects.isNull(record)) { | if (Objects.isNull(record)) { | ||||
return Boolean.TRUE; | return Boolean.TRUE; | ||||
} | } | ||||
//和老值做个对比 不一样则true | |||||
// 和老值做个对比 不一样则true | |||||
Class<?> clazz = record.getClass(); | Class<?> clazz = record.getClass(); | ||||
String oldFiled = StringUtils.EMPTY; | String oldFiled = StringUtils.EMPTY; | ||||
try { | try { | ||||
Field fieldDeclared = clazz.getDeclaredField(fieldName); | Field fieldDeclared = clazz.getDeclaredField(fieldName); | ||||
fieldDeclared.setAccessible(Boolean.TRUE); | fieldDeclared.setAccessible(Boolean.TRUE); | ||||
oldFiled = Objects.nonNull(fieldDeclared.get(record)) ? String.valueOf(fieldDeclared.get(record)) : null; | oldFiled = Objects.nonNull(fieldDeclared.get(record)) ? String.valueOf(fieldDeclared.get(record)) : null; | ||||
} catch (NoSuchFieldException e) { | |||||
log.error("转换PDF文件出错" + e); | |||||
} catch (IllegalAccessException e) { | |||||
} catch (NoSuchFieldException | IllegalAccessException e) { | |||||
log.error("转换PDF文件出错" + e); | log.error("转换PDF文件出错" + e); | ||||
} | } | ||||
@@ -21,6 +21,7 @@ import com.hz.pm.api.projectlib.model.vo.ProjectApplicationVO; | |||||
import com.hz.pm.api.projectlib.model.vo.ProjectDetailVO; | import com.hz.pm.api.projectlib.model.vo.ProjectDetailVO; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.util.Collections; | import java.util.Collections; | ||||
import java.util.List; | import java.util.List; | ||||
@@ -38,12 +39,13 @@ public class ProjectConvertUtil { | |||||
/** | /** | ||||
* 申报项目 转为 项目归集 | * 申报项目 转为 项目归集 | ||||
* | |||||
* @param project | * @param project | ||||
* @return | * @return | ||||
*/ | */ | ||||
public static GovBizProjectDetailVO declaredToCollection(ProjectDetailVO project, FileService fileService){ | |||||
public static GovBizProjectDetailVO declaredToCollection(ProjectDetailVO project, FileService fileService) { | |||||
GovBizProjectDetailVO projectCollection = new GovBizProjectDetailVO(); | GovBizProjectDetailVO projectCollection = new GovBizProjectDetailVO(); | ||||
if(Objects.isNull(project)){ | |||||
if (Objects.isNull(project)) { | |||||
return projectCollection; | return projectCollection; | ||||
} | } | ||||
String projectCode = project.getProjectCode(); | String projectCode = project.getProjectCode(); | ||||
@@ -52,11 +54,11 @@ public class ProjectConvertUtil { | |||||
projectCollection.setBaseProjName(projectName); | projectCollection.setBaseProjName(projectName); | ||||
projectCollection.setBaseinfo(buildBaseinfo(project)); | projectCollection.setBaseinfo(buildBaseinfo(project)); | ||||
projectCollection.setApply(buildApply(project)); | projectCollection.setApply(buildApply(project)); | ||||
projectCollection.setApprove(buildApprove(project,fileService)); | |||||
projectCollection.setApprove(buildApprove(project, fileService)); | |||||
String projectType = project.getProjectType(); | String projectType = project.getProjectType(); | ||||
ProjectTypeNewEnum match = ProjectTypeNewEnum.match(projectType); | ProjectTypeNewEnum match = ProjectTypeNewEnum.match(projectType); | ||||
if(Objects.nonNull(match)){ | |||||
switch (match){ | |||||
if (Objects.nonNull(match)) { | |||||
switch (match) { | |||||
case SJ_BUILD: | case SJ_BUILD: | ||||
case FIRST_BUILD: | case FIRST_BUILD: | ||||
case SZ_BUILD: | case SZ_BUILD: | ||||
@@ -98,10 +100,8 @@ public class ProjectConvertUtil { | |||||
baseinfo.setBaseProvManDepartDing(project.getHigherSuperOrgCode()); | baseinfo.setBaseProvManDepartDing(project.getHigherSuperOrgCode()); | ||||
baseinfo.setBaseProvManDeprtType(project.getBaseProvManDeprtType()); | baseinfo.setBaseProvManDeprtType(project.getBaseProvManDeprtType()); | ||||
ProjectStatusEnum match = ProjectStatusEnum.match(project.getStatus()); | ProjectStatusEnum match = ProjectStatusEnum.match(project.getStatus()); | ||||
if(Objects.nonNull(match)){ | |||||
if(Objects.nonNull(match.getCollectionStatus())){ | |||||
baseinfo.setBaseProjSetProg(match.getCollectionStatus().getCode()); | |||||
} | |||||
if (Objects.nonNull(match) && (Objects.nonNull(match.getCollectionStatus()))) { | |||||
baseinfo.setBaseProjSetProg(match.getCollectionStatus().getCode()); | |||||
} | } | ||||
baseinfo.setBaseProjType(project.getProjectType()); | baseinfo.setBaseProjType(project.getProjectType()); | ||||
baseinfo.setDeleted(Boolean.FALSE); | baseinfo.setDeleted(Boolean.FALSE); | ||||
@@ -117,7 +117,7 @@ public class ProjectConvertUtil { | |||||
apply.setBaseHistorProjId(project.getBaseHistorProjId()); | apply.setBaseHistorProjId(project.getBaseHistorProjId()); | ||||
apply.setBaseBasisEstablish(project.getBaseBasisEstablish()); | apply.setBaseBasisEstablish(project.getBaseBasisEstablish()); | ||||
List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | ||||
if(CollUtil.isNotEmpty(projectApplications)){ | |||||
if (CollUtil.isNotEmpty(projectApplications)) { | |||||
String appName = projectApplications.stream().map(app -> { | String appName = projectApplications.stream().map(app -> { | ||||
if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | ||||
return app.getRelatedExistsApplication(); | return app.getRelatedExistsApplication(); | ||||
@@ -140,8 +140,8 @@ public class ProjectConvertUtil { | |||||
} | } | ||||
apply.setBaseBasisAmountOri(project.getBaseBasisAmountOri()); | apply.setBaseBasisAmountOri(project.getBaseBasisAmountOri()); | ||||
String coreBusiness = project.getCoreBusiness(); | String coreBusiness = project.getCoreBusiness(); | ||||
if(StringUtils.isNotBlank(coreBusiness)){ | |||||
try{ | |||||
if (StringUtils.isNotBlank(coreBusiness)) { | |||||
try { | |||||
JSONArray coreJson = JSON.parseArray(coreBusiness); | JSONArray coreJson = JSON.parseArray(coreBusiness); | ||||
String matters = coreJson.stream().map(j -> { | String matters = coreJson.stream().map(j -> { | ||||
JSONObject matterJson = JSON.parseObject(JSON.toJSONString(j)); | JSONObject matterJson = JSON.parseObject(JSON.toJSONString(j)); | ||||
@@ -155,8 +155,8 @@ public class ProjectConvertUtil { | |||||
.collect(Collectors.joining(StrPool.SEMICOLON_CHINA)); | .collect(Collectors.joining(StrPool.SEMICOLON_CHINA)); | ||||
apply.setBaseCoreBusiness(matters); | apply.setBaseCoreBusiness(matters); | ||||
apply.setBaseCoreBusinessCode(matterCodes); | apply.setBaseCoreBusinessCode(matterCodes); | ||||
}catch (Exception e){ | |||||
log.error("项目转化失败",e); | |||||
} catch (Exception e) { | |||||
log.error("项目转化失败", e); | |||||
} | } | ||||
} | } | ||||
apply.setBaseDevelopCode(project.getDevelopCode()); | apply.setBaseDevelopCode(project.getDevelopCode()); | ||||
@@ -166,14 +166,14 @@ public class ProjectConvertUtil { | |||||
apply.setBaseProjApplyFile(project.getProjectApplicationForm()); | apply.setBaseProjApplyFile(project.getProjectApplicationForm()); | ||||
String beginTime = project.getBeginTime(); | String beginTime = project.getBeginTime(); | ||||
String endTime = project.getEndTime(); | String endTime = project.getEndTime(); | ||||
if(StringUtils.isNotBlank(beginTime)){ | |||||
if (StringUtils.isNotBlank(beginTime)) { | |||||
apply.setBaseProjStartTime(BizUtils.convertLocalDateTime(beginTime)); | apply.setBaseProjStartTime(BizUtils.convertLocalDateTime(beginTime)); | ||||
} | } | ||||
if(StringUtils.isNotBlank(endTime)){ | |||||
if (StringUtils.isNotBlank(endTime)) { | |||||
apply.setBaseProjEndTime(BizUtils.convertLocalDateTime(endTime)); | apply.setBaseProjEndTime(BizUtils.convertLocalDateTime(endTime)); | ||||
} | } | ||||
if(StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)){ | |||||
try{ | |||||
if (StringUtils.isNotBlank(beginTime) && StringUtils.isNotBlank(endTime)) { | |||||
try { | |||||
String yearEnd = endTime.split(StrPool.DASH)[0]; | String yearEnd = endTime.split(StrPool.DASH)[0]; | ||||
String yearStart = beginTime.split(StrPool.DASH)[0]; | String yearStart = beginTime.split(StrPool.DASH)[0]; | ||||
String monthEnd = endTime.split(StrPool.DASH)[1]; | String monthEnd = endTime.split(StrPool.DASH)[1]; | ||||
@@ -181,8 +181,8 @@ public class ProjectConvertUtil { | |||||
Integer duration = Integer.parseInt(monthEnd) - Integer.parseInt(monthStart) + | Integer duration = Integer.parseInt(monthEnd) - Integer.parseInt(monthStart) + | ||||
(Integer.parseInt(yearEnd) - Integer.parseInt(yearStart)) * 12; | (Integer.parseInt(yearEnd) - Integer.parseInt(yearStart)) * 12; | ||||
apply.setBaseProjDuration(String.valueOf(duration)); | apply.setBaseProjDuration(String.valueOf(duration)); | ||||
}catch (Exception e){ | |||||
log.error("日期转换失败:",e); | |||||
} catch (Exception e) { | |||||
log.error("日期转换失败:", e); | |||||
} | } | ||||
} | } | ||||
apply.setBaseProjConsClass(project.getBuildLevel()); | apply.setBaseProjConsClass(project.getBuildLevel()); | ||||
@@ -203,12 +203,12 @@ public class ProjectConvertUtil { | |||||
} | } | ||||
//转化审批信息 | //转化审批信息 | ||||
private static GovBizProjectApproveVO buildApprove(ProjectDetailVO project,FileService fileService) { | |||||
private static GovBizProjectApproveVO buildApprove(ProjectDetailVO project, FileService fileService) { | |||||
GovBizProjectApproveVO approve = new GovBizProjectApproveVO(); | GovBizProjectApproveVO approve = new GovBizProjectApproveVO(); | ||||
// approve.setBaseProjId(project.getProjectCode()); | // approve.setBaseProjId(project.getProjectCode()); | ||||
approve.setBaseProjName(project.getProjectName()); | approve.setBaseProjName(project.getProjectName()); | ||||
File file = fileService.getById(project.getApprovedFile()); | File file = fileService.getById(project.getApprovedFile()); | ||||
if(Objects.nonNull(file)){ | |||||
if (Objects.nonNull(file)) { | |||||
approve.setApprovalFile(JSON.toJSONString(Lists.newArrayList(file))); | approve.setApprovalFile(JSON.toJSONString(Lists.newArrayList(file))); | ||||
} | } | ||||
approve.setAreaCode(RegionConst.RC_HZ); | approve.setAreaCode(RegionConst.RC_HZ); | ||||
@@ -220,24 +220,24 @@ public class ProjectConvertUtil { | |||||
approve.setBaseProjReplyAmount(project.getApprovalBudget()); | approve.setBaseProjReplyAmount(project.getApprovalBudget()); | ||||
approve.setBaseReviewCommentsFile(project.getProposeAttachFiles()); | approve.setBaseReviewCommentsFile(project.getProposeAttachFiles()); | ||||
List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | ||||
if(CollUtil.isNotEmpty(projectApplications)){ | |||||
if (CollUtil.isNotEmpty(projectApplications)) { | |||||
Integer max = 0; | Integer max = 0; | ||||
for(ProjectApplicationVO app : projectApplications){ | |||||
max = Math.max(app.getSecrecyGrade(),max); | |||||
for (ProjectApplicationVO app : projectApplications) { | |||||
max = Math.max(app.getSecrecyGrade(), max); | |||||
} | } | ||||
if(max > 0){ | |||||
approve.setEqualProtectionLevel(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS,max)); | |||||
if (max > 0) { | |||||
approve.setEqualProtectionLevel(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, max)); | |||||
} | } | ||||
} | } | ||||
approve.setPreliminaryDesignScheme(project.getPreliminaryPlanFile()); | approve.setPreliminaryDesignScheme(project.getPreliminaryPlanFile()); | ||||
approve.setPreliminaryDesignFile(project.getPreliminaryInspectionMaterials()); | approve.setPreliminaryDesignFile(project.getPreliminaryInspectionMaterials()); | ||||
approve.setBaseReviewOpinion(project.getProposeAttach()); | approve.setBaseReviewOpinion(project.getProposeAttach()); | ||||
if(Objects.nonNull(project.getBaseReviewResults())){ | |||||
if (Objects.nonNull(project.getBaseReviewResults())) { | |||||
approve.setBaseReviewResults(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, | approve.setBaseReviewResults(String.format(StrPool.FORMAT_DATE_SINGLE_DIGITS, | ||||
project.getBaseReviewResults())); | project.getBaseReviewResults())); | ||||
} | } | ||||
List<PurchaseVO> purchases = project.getPurchases(); | List<PurchaseVO> purchases = project.getPurchases(); | ||||
if(CollUtil.isNotEmpty(purchases)){ | |||||
if (CollUtil.isNotEmpty(purchases)) { | |||||
purchases.stream().map(PurchaseVO::getTransactionAmount) | purchases.stream().map(PurchaseVO::getTransactionAmount) | ||||
.filter(Objects::nonNull).reduce(BigDecimal::add) | .filter(Objects::nonNull).reduce(BigDecimal::add) | ||||
.ifPresent(approve::setReleaseYearMoney); | .ifPresent(approve::setReleaseYearMoney); | ||||
@@ -256,15 +256,15 @@ public class ProjectConvertUtil { | |||||
cim.setDeleted(Boolean.FALSE); | cim.setDeleted(Boolean.FALSE); | ||||
cim.setBaseDevelopCode(project.getDevelopCode()); | cim.setBaseDevelopCode(project.getDevelopCode()); | ||||
//总结报告 | //总结报告 | ||||
cim.setBaseSummReportFile(searchReportFile(project,5,2)); | |||||
cim.setBaseSummReportFile(searchReportFile(project, 5, 2)); | |||||
//监理总结报告 | //监理总结报告 | ||||
cim.setBaseEstaSummFile(searchReportFile(project,5,3)); | |||||
cim.setBaseEstaSummFile(searchReportFile(project, 5, 3)); | |||||
//建设核查表 | //建设核查表 | ||||
cim.setBaseCheckFile(searchReportFile(project,3,2)); | |||||
cim.setBaseThirdAcceptFile(searchReportFile(project,5,4)); | |||||
cim.setBaseInitialOpinionFile(searchReportFile(project,5,5)); | |||||
cim.setBaseCheckFile(searchReportFile(project, 3, 2)); | |||||
cim.setBaseThirdAcceptFile(searchReportFile(project, 5, 4)); | |||||
cim.setBaseInitialOpinionFile(searchReportFile(project, 5, 5)); | |||||
List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | ||||
if(CollUtil.isNotEmpty(projectApplications)){ | |||||
if (CollUtil.isNotEmpty(projectApplications)) { | |||||
String appCode = projectApplications.stream().map(app -> { | String appCode = projectApplications.stream().map(app -> { | ||||
if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | ||||
return app.getRelatedExistsApplicationCode(); | return app.getRelatedExistsApplicationCode(); | ||||
@@ -286,13 +286,13 @@ public class ProjectConvertUtil { | |||||
mim.setDeleted(Boolean.FALSE); | mim.setDeleted(Boolean.FALSE); | ||||
mim.setBaseDevelopCode(project.getDevelopCode()); | mim.setBaseDevelopCode(project.getDevelopCode()); | ||||
//监理总结报告 | //监理总结报告 | ||||
mim.setBaseEstaSummFile(searchReportFile(project,5,3)); | |||||
mim.setBaseEstaSummFile(searchReportFile(project, 5, 3)); | |||||
//建设核查表 | //建设核查表 | ||||
// mim.setBaseCheckFile(searchReportFile(project,3,2)); | // mim.setBaseCheckFile(searchReportFile(project,3,2)); | ||||
mim.setBaseThirdAcceptFile(searchReportFile(project,5,4)); | |||||
mim.setBaseThirdAcceptFile(searchReportFile(project, 5, 4)); | |||||
// mim.setBaseInitialOpinionFile(searchReportFile(project,5,5)); | // mim.setBaseInitialOpinionFile(searchReportFile(project,5,5)); | ||||
List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | List<ProjectApplicationVO> projectApplications = project.getProjectApplications(); | ||||
if(CollUtil.isNotEmpty(projectApplications)){ | |||||
if (CollUtil.isNotEmpty(projectApplications)) { | |||||
String appCode = projectApplications.stream().map(app -> { | String appCode = projectApplications.stream().map(app -> { | ||||
if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | if (StringUtils.isNotBlank(app.getRelatedExistsApplication())) { | ||||
return app.getRelatedExistsApplicationCode(); | return app.getRelatedExistsApplicationCode(); | ||||
@@ -309,13 +309,13 @@ public class ProjectConvertUtil { | |||||
List<PurchaseVO> purchases = project.getPurchases(); | List<PurchaseVO> purchases = project.getPurchases(); | ||||
ContractVO contract = project.getContract(); | ContractVO contract = project.getContract(); | ||||
final BigDecimal[] paymentTotal = {BigDecimal.ZERO}; | final BigDecimal[] paymentTotal = {BigDecimal.ZERO}; | ||||
if(Objects.nonNull(contract)){ | |||||
if (Objects.nonNull(contract)) { | |||||
List<PaymentPlanVO> payments = contract.getPayments(); | List<PaymentPlanVO> payments = contract.getPayments(); | ||||
payments.stream().map(PaymentPlanVO::getPaymentAmount) | payments.stream().map(PaymentPlanVO::getPaymentAmount) | ||||
.reduce(BigDecimal::add) | .reduce(BigDecimal::add) | ||||
.ifPresent(b -> paymentTotal[0] = b); | .ifPresent(b -> paymentTotal[0] = b); | ||||
} | } | ||||
if(CollUtil.isNotEmpty(purchases)){ | |||||
if (CollUtil.isNotEmpty(purchases)) { | |||||
return purchases.stream().map(p -> { | return purchases.stream().map(p -> { | ||||
GovBizProjectProcureVO purchase = new GovBizProjectProcureVO(); | GovBizProjectProcureVO purchase = new GovBizProjectProcureVO(); | ||||
purchase.setBaseProjName(project.getProjectName()); | purchase.setBaseProjName(project.getProjectName()); | ||||
@@ -333,7 +333,7 @@ public class ProjectConvertUtil { | |||||
purchase.setBaseWinningBidTime(p.getTransactionTime()); | purchase.setBaseWinningBidTime(p.getTransactionTime()); | ||||
purchase.setBiddingFile(p.getAcceptanceLetter()); | purchase.setBiddingFile(p.getAcceptanceLetter()); | ||||
purchase.setPaymentProgress(paymentTotal[0]); | purchase.setPaymentProgress(paymentTotal[0]); | ||||
if(Objects.nonNull(contract)){ | |||||
if (Objects.nonNull(contract)) { | |||||
purchase.setPurchaseContract(contract.getAttachment()); | purchase.setPurchaseContract(contract.getAttachment()); | ||||
} | } | ||||
purchase.setSetProjCodeFinan(project.getFinancialCode()); | purchase.setSetProjCodeFinan(project.getFinancialCode()); | ||||
@@ -346,31 +346,32 @@ public class ProjectConvertUtil { | |||||
/** | /** | ||||
* 查询项目 初验终验的 报告 | * 查询项目 初验终验的 报告 | ||||
* | |||||
* @param project | * @param project | ||||
* @return | * @return | ||||
*/ | */ | ||||
private static String searchReportFile(ProjectDetailVO project,Integer firstIndex,Integer secondIndex) { | |||||
if(Objects.isNull(project)){ | |||||
private static String searchReportFile(ProjectDetailVO project, Integer firstIndex, Integer secondIndex) { | |||||
if (Objects.isNull(project)) { | |||||
return null; | return null; | ||||
} | } | ||||
if(StringUtils.isNotBlank(project.getFinalAcceptanceMaterials())){ | |||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(),firstIndex,secondIndex); | |||||
}else if(StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())){ | |||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(),firstIndex,secondIndex); | |||||
if (StringUtils.isNotBlank(project.getFinalAcceptanceMaterials())) { | |||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | |||||
} else if (StringUtils.isNotBlank(project.getPreliminaryInspectionMaterials())) { | |||||
return searchReportFileInner(project.getFinalAcceptanceMaterials(), firstIndex, secondIndex); | |||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
private static String searchReportFileInner(String fileStr,Integer firstIndex,Integer secondIndex) { | |||||
try{ | |||||
private static String searchReportFileInner(String fileStr, Integer firstIndex, Integer secondIndex) { | |||||
try { | |||||
JSONArray jsonArray = JSON.parseArray(fileStr); | JSONArray jsonArray = JSON.parseArray(fileStr); | ||||
JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(jsonArray.get(firstIndex - 1))); | JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(jsonArray.get(firstIndex - 1))); | ||||
JSONArray data = jsonObject.getJSONArray("data"); | JSONArray data = jsonObject.getJSONArray("data"); | ||||
JSONObject wangong = JSON.parseObject(JSON.toJSONString(data.get(secondIndex - 1))); | JSONObject wangong = JSON.parseObject(JSON.toJSONString(data.get(secondIndex - 1))); | ||||
JSONArray files = wangong.getJSONArray("files"); | JSONArray files = wangong.getJSONArray("files"); | ||||
return JSON.toJSONString(files); | return JSON.toJSONString(files); | ||||
}catch (Exception e){ | |||||
log.error("解析文件失败:",e); | |||||
} catch (Exception e) { | |||||
log.error("解析文件失败:", e); | |||||
} | } | ||||
return null; | return null; | ||||
} | } | ||||
@@ -277,7 +277,6 @@ public class AppIrsManage { | |||||
String appSecret = "496f0f2a19994f76b4fd9dae087366c7"; | String appSecret = "496f0f2a19994f76b4fd9dae087366c7"; | ||||
String appKey = "A331101453557202109017383"; | String appKey = "A331101453557202109017383"; | ||||
String method = "POST"; | String method = "POST"; | ||||
String interfaceName = "5crv7i4727abLCv0"; | |||||
String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); | String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); | ||||
log.info("secret :{}", secret); | log.info("secret :{}", secret); | ||||
String sign = MD5.create().digestHex(appKey + secret + timestamp); | String sign = MD5.create().digestHex(appKey + secret + timestamp); | ||||
@@ -374,7 +373,6 @@ public class AppIrsManage { | |||||
String appSecret = driAppSecret; | String appSecret = driAppSecret; | ||||
String appKey = driAppKey; | String appKey = driAppKey; | ||||
String method = HttpMethod.POST.name(); | String method = HttpMethod.POST.name(); | ||||
String interfaceName = driInterfaceName; | |||||
String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); | String secret = refreshTokenService.refreshToken(appKey, appSecret, govRequestTokenUrl, govRefreshTokenUrl, method); | ||||
log.info("secret : {}", secret); | log.info("secret : {}", secret); | ||||
String sign = MD5.create().digestHex(appKey + secret + timestamp); | String sign = MD5.create().digestHex(appKey + secret + timestamp); | ||||
@@ -18,6 +18,7 @@ import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import java.util.List; | import java.util.List; | ||||
import java.util.Objects; | import java.util.Objects; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
@@ -37,6 +38,7 @@ public class IrsProjectManage { | |||||
/** | /** | ||||
* IRS档案 项目列表 | * IRS档案 项目列表 | ||||
* | |||||
* @param req | * @param req | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -44,39 +46,37 @@ public class IrsProjectManage { | |||||
Page<Project> page = req.page(); | Page<Project> page = req.page(); | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | ||||
.eq(StringUtils.isNotBlank(req.getAreaCode()),Project::getAreaCode,req.getAreaCode()) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()),Project::getAreaCode,req.getRegionCode()) | |||||
.eq(StringUtils.isNotBlank(req.getProjectType()),Project::getProjectType,req.getProjectType()) | |||||
.eq(Objects.nonNull(req.getStatus()),Project::getStatus,req.getStatus()) | |||||
.eq(Objects.nonNull(req.getStage()),Project::getStage,req.getStage()) | |||||
.ge(Objects.nonNull(req.getApproveAmountMin()),Project::getApprovalAmount,req.getApproveAmountMin()) | |||||
.le(Objects.nonNull(req.getApproveAmountMax()),Project::getApprovalAmount,req.getApproveAmountMax()) | |||||
.eq(Objects.nonNull(req.getProjectYear()),Project::getProjectYear,req.getProjectYear()) | |||||
.ge(Objects.nonNull(req.getCreateOnMin()),Project::getCreateOn,req.getCreateOnMin()) | |||||
.le(Objects.nonNull(req.getCreateOnMax()),Project::getCreateOn,req.getCreateOnMax()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()),Project::getProjectName,req.getProjectName()) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()),Project::getBuildOrgName,req.getBuildOrgName()) | |||||
.eq(StringUtils.isNotBlank(req.getProjectType()), Project::getProjectType, req.getProjectType()) | |||||
.eq(Objects.nonNull(req.getStatus()), Project::getStatus, req.getStatus()) | |||||
.eq(Objects.nonNull(req.getStage()), Project::getStage, req.getStage()) | |||||
.ge(Objects.nonNull(req.getApproveAmountMin()), Project::getApprovalAmount, req.getApproveAmountMin()) | |||||
.le(Objects.nonNull(req.getApproveAmountMax()), Project::getApprovalAmount, req.getApproveAmountMax()) | |||||
.eq(Objects.nonNull(req.getProjectYear()), Project::getProjectYear, req.getProjectYear()) | |||||
.ge(Objects.nonNull(req.getCreateOnMin()), Project::getCreateOn, req.getCreateOnMin()) | |||||
.le(Objects.nonNull(req.getCreateOnMax()), Project::getCreateOn, req.getCreateOnMax()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.gt(Project::getStatus, ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()) | .gt(Project::getStatus, ProjectStatusEnum.UNDER_CONSTRUCTION.getCode()) | ||||
.eq(Project::getNewest,Boolean.TRUE) | |||||
.eq(Project::getNewest, Boolean.TRUE) | |||||
.eq(Project::getIncludeApplication, CommonEnum.YES.getCode()) | .eq(Project::getIncludeApplication, CommonEnum.YES.getCode()) | ||||
.orderByDesc(Project::getUpdateOn); | .orderByDesc(Project::getUpdateOn); | ||||
buildPermission(wrapper,user); | |||||
projectService.page(page,wrapper); | |||||
buildPermission(wrapper, user); | |||||
projectService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<ProjectLibListItemVO> res = page.getRecords().stream().map(p -> BeanUtil.copyProperties(p,ProjectLibListItemVO.class)).collect(Collectors.toList()); | |||||
return PageVo.of(res,page.getTotal()); | |||||
List<ProjectLibListItemVO> res = page.getRecords().stream() | |||||
.map(p -> BeanUtil.copyProperties(p, ProjectLibListItemVO.class)) | |||||
.collect(Collectors.toList()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
private void buildPermission(LambdaQueryWrapper<Project> wrapper, UserInfoDetails user) { | private void buildPermission(LambdaQueryWrapper<Project> wrapper, UserInfoDetails user) { | ||||
if(user.getSuperAdmin()){ | |||||
if (user.getSuperAdmin() || user.getRegionAdmin()) { | |||||
log.info("超管 都可看 项目档案列表"); | log.info("超管 都可看 项目档案列表"); | ||||
}else if(user.getRegionAdmin()){ | |||||
wrapper.eq(Project::getAreaCode,user.getRegionCode()); | |||||
}else{ | |||||
wrapper.eq(Project::getBuildOrgCode,user.getEmpPosUnitCode()); | |||||
} else { | |||||
wrapper.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()); | |||||
} | } | ||||
} | } | ||||
} | } |
@@ -62,10 +62,10 @@ public class LeaveCreateReq { | |||||
if (!this.getStartTime().isBefore(this.getEndTime())) { | if (!this.getStartTime().isBefore(this.getEndTime())) { | ||||
throw new BizException("无效的请假时间"); | throw new BizException("无效的请假时间"); | ||||
} | } | ||||
if (leaveTypeEnum.equals(LeaveTypeEnum.FIXED_TERM)) { | |||||
if (this.getFixedType() == null || this.getFixedType().isEmpty()) { | |||||
if (leaveTypeEnum.equals(LeaveTypeEnum.FIXED_TERM) | |||||
&& (this.getFixedType() == null || this.getFixedType().isEmpty())) { | |||||
throw new BizException("固定时段不能为空"); | throw new BizException("固定时段不能为空"); | ||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -20,7 +20,7 @@ import com.hz.pm.api.staging.service.INdWorkNoticeStagingService; | |||||
import com.hz.pm.api.sys.model.entity.Notify; | import com.hz.pm.api.sys.model.entity.Notify; | ||||
import com.hz.pm.api.sys.service.INotifyService; | import com.hz.pm.api.sys.service.INotifyService; | ||||
import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | import com.hz.pm.api.todocenter.bean.entity.WorkNoticeInfo; | ||||
import com.hz.pm.api.user.entity.UserInfo; | |||||
import com.hz.pm.api.user.model.entity.UserInfo; | |||||
import com.hz.pm.api.user.service.IUserInfoService; | import com.hz.pm.api.user.service.IUserInfoService; | ||||
import com.ningdatech.yxt.model.cmd.SendSmsCmd.SendSmsContext; | import com.ningdatech.yxt.model.cmd.SendSmsCmd.SendSmsContext; | ||||
import com.ningdatech.yxt.model.cmd.SubmitTaskCallCmd.SubmitTaskCallContext; | import com.ningdatech.yxt.model.cmd.SubmitTaskCallCmd.SubmitTaskCallContext; | ||||
@@ -48,7 +48,7 @@ import java.util.stream.Collectors; | |||||
public class MeetingCallOrMsgHelper { | public class MeetingCallOrMsgHelper { | ||||
private final IUserInfoService userInfoService; | private final IUserInfoService userInfoService; | ||||
private final YxtCallOrSmsHelper yxtCallOrSmsHelper; | |||||
private final YxtClientHelper yxtClientHelper; | |||||
private final INdWorkNoticeStagingService workNoticeStagingService; | private final INdWorkNoticeStagingService workNoticeStagingService; | ||||
private final IDingEmployeeInfoService dingEmployeeInfoService; | private final IDingEmployeeInfoService dingEmployeeInfoService; | ||||
private final IDingOrganizationService dingOrganizationService; | private final IDingOrganizationService dingOrganizationService; | ||||
@@ -102,7 +102,7 @@ public class MeetingCallOrMsgHelper { | |||||
SendSmsContext yxtContent = new SendSmsContext(); | SendSmsContext yxtContent = new SendSmsContext(); | ||||
yxtContent.setContent(msgContent); | yxtContent.setContent(msgContent); | ||||
yxtContent.setReceiveNumber(info.getMobile()); | yxtContent.setReceiveNumber(info.getMobile()); | ||||
yxtCallOrSmsHelper.sendSms(yxtContent); | |||||
yxtClientHelper.sendSms(yxtContent); | |||||
// 发送工作通知 | // 发送工作通知 | ||||
if (info.getAccountId() != null) { | if (info.getAccountId() != null) { | ||||
WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | ||||
@@ -148,7 +148,7 @@ public class MeetingCallOrMsgHelper { | |||||
} | } | ||||
}); | }); | ||||
notifyService.saveBatch(notifies); | notifyService.saveBatch(notifies); | ||||
yxtCallOrSmsHelper.sendSms(yxtContents); | |||||
yxtClientHelper.sendSms(yxtContents); | |||||
workNoticeStagingService.addByWorkNotice(workingNotices, MsgTypeEnum.EXPERT_REVIEW); | workNoticeStagingService.addByWorkNotice(workingNotices, MsgTypeEnum.EXPERT_REVIEW); | ||||
} | } | ||||
@@ -164,7 +164,7 @@ public class MeetingCallOrMsgHelper { | |||||
context.setContent(content); | context.setContent(content); | ||||
return context; | return context; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
yxtCallOrSmsHelper.sendSms(contexts); | |||||
yxtClientHelper.sendSms(contexts); | |||||
} | } | ||||
/** | /** | ||||
@@ -184,7 +184,7 @@ public class MeetingCallOrMsgHelper { | |||||
context.setReceiveNumber(w.getMobile()); | context.setReceiveNumber(w.getMobile()); | ||||
return context; | return context; | ||||
}); | }); | ||||
String submitKey = yxtCallOrSmsHelper.submitCallTask(callContexts); | |||||
String submitKey = yxtClientHelper.submitCallTask(callContexts); | |||||
experts.forEach(w -> w.setSubmitKey(submitKey)); | experts.forEach(w -> w.setSubmitKey(submitKey)); | ||||
} | } | ||||
@@ -200,7 +200,7 @@ public class MeetingCallOrMsgHelper { | |||||
SendSmsContext yxtContent = new SendSmsContext(); | SendSmsContext yxtContent = new SendSmsContext(); | ||||
yxtContent.setContent(msgContent); | yxtContent.setContent(msgContent); | ||||
yxtContent.setReceiveNumber(info.getMobile()); | yxtContent.setReceiveNumber(info.getMobile()); | ||||
yxtCallOrSmsHelper.sendSms(yxtContent); | |||||
yxtClientHelper.sendSms(yxtContent); | |||||
// 发送工作通知 | // 发送工作通知 | ||||
if (info.getAccountId() != null) { | if (info.getAccountId() != null) { | ||||
WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | WorkNoticeInfo swn = getSendWorkNoticeInfo(info.getAccountId()); | ||||
@@ -1,66 +0,0 @@ | |||||
package com.hz.pm.api.meeting.helper; | |||||
import com.ningdatech.basic.util.CollUtils; | |||||
import com.hz.pm.api.common.helper.RegionCacheHelper; | |||||
import com.hz.pm.api.common.model.entity.ViewRegionDTO; | |||||
import com.hz.pm.api.sys.model.entity.Role; | |||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | |||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import lombok.AllArgsConstructor; | |||||
import org.springframework.stereotype.Component; | |||||
import java.util.Collection; | |||||
import java.util.Collections; | |||||
import java.util.List; | |||||
/** | |||||
* <p> | |||||
* MeetingDataScopeHelper | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 2023/4/27 | |||||
**/ | |||||
@Component | |||||
@AllArgsConstructor | |||||
public class MeetingDataScopeHelper { | |||||
private final RegionCacheHelper regionCacheHelper; | |||||
private static RoleEnum getRolePriorityMax() { | |||||
List<Role> roleList = LoginUserUtil.loginUserDetail().getUserRoleList(); | |||||
List<String> roleCodeList = CollUtils.fieldList(roleList, Role::getCode); | |||||
if (roleCodeList.contains(RoleEnum.SUPER_ADMIN.name())) { | |||||
return RoleEnum.SUPER_ADMIN; | |||||
} | |||||
if (roleCodeList.contains(RoleEnum.REGION_MANAGER.name())) { | |||||
return RoleEnum.REGION_MANAGER; | |||||
} | |||||
return RoleEnum.EXPERT_ADMIN; | |||||
} | |||||
public ViewRegionDTO meetingListViewRegions() { | |||||
RoleEnum role = getRolePriorityMax(); | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
Integer regionLevel = user.getRegionLevel(); | |||||
Collection<String> regions; | |||||
switch (role) { | |||||
case SUPER_ADMIN: | |||||
regions = null; | |||||
break; | |||||
case REGION_MANAGER: | |||||
regions = regionCacheHelper.listChildRegionCodeList(regionCode, regionLevel); | |||||
break; | |||||
case EXPERT_ADMIN: | |||||
regions = Collections.singletonList(regionCode); | |||||
break; | |||||
default: | |||||
regions = Collections.emptyList(); | |||||
break; | |||||
} | |||||
return new ViewRegionDTO(regions, regionLevel); | |||||
} | |||||
} |
@@ -24,7 +24,7 @@ import static com.ningdatech.yxt.model.cmd.SubmitTaskCallCmd.of; | |||||
*/ | */ | ||||
@Component | @Component | ||||
@AllArgsConstructor | @AllArgsConstructor | ||||
public class YxtCallOrSmsHelper { | |||||
public class YxtClientHelper { | |||||
private final YxtClient yxtClient; | private final YxtClient yxtClient; | ||||
@@ -30,7 +30,6 @@ import com.hz.pm.api.meeting.entity.req.*; | |||||
import com.hz.pm.api.meeting.entity.vo.*; | import com.hz.pm.api.meeting.entity.vo.*; | ||||
import com.hz.pm.api.meeting.helper.ExpertInviteHelper; | import com.hz.pm.api.meeting.helper.ExpertInviteHelper; | ||||
import com.hz.pm.api.meeting.helper.MeetingCallOrMsgHelper; | import com.hz.pm.api.meeting.helper.MeetingCallOrMsgHelper; | ||||
import com.hz.pm.api.meeting.helper.MeetingDataScopeHelper; | |||||
import com.hz.pm.api.meeting.helper.MeetingManageHelper; | import com.hz.pm.api.meeting.helper.MeetingManageHelper; | ||||
import com.hz.pm.api.meeting.service.*; | import com.hz.pm.api.meeting.service.*; | ||||
import com.hz.pm.api.meeting.task.ExpertRandomInviteTask; | import com.hz.pm.api.meeting.task.ExpertRandomInviteTask; | ||||
@@ -89,13 +88,10 @@ public class MeetingManage { | |||||
private final DistributedLock distributedLock; | private final DistributedLock distributedLock; | ||||
private final IProjectService projectService; | private final IProjectService projectService; | ||||
private final IMeetingInnerProjectService meetingInnerProjectService; | private final IMeetingInnerProjectService meetingInnerProjectService; | ||||
private final IMeetingOuterProjectService meetingOuterProjectService; | |||||
private final IBelongOrgService belongOrgService; | private final IBelongOrgService belongOrgService; | ||||
private final IDingOrganizationService dingOrganizationService; | private final IDingOrganizationService dingOrganizationService; | ||||
private final IExpertReviewService expertReviewService; | |||||
private final ExpertInviteHelper expertInviteHelper; | private final ExpertInviteHelper expertInviteHelper; | ||||
private final MeetingCallOrMsgHelper meetingCallOrMsgHelper; | private final MeetingCallOrMsgHelper meetingCallOrMsgHelper; | ||||
private final MeetingDataScopeHelper meetingDataScopeHelper; | |||||
private final IMeetingExpertJudgeService expertJudgeService; | private final IMeetingExpertJudgeService expertJudgeService; | ||||
private final IMeetingExpertJudgeService meetingExpertJudgeService; | private final IMeetingExpertJudgeService meetingExpertJudgeService; | ||||
@@ -130,8 +126,8 @@ public class MeetingManage { | |||||
// 保存会议基本信息 | // 保存会议基本信息 | ||||
Meeting meeting = BeanUtil.copyProperties(meetingBasic, Meeting.class); | Meeting meeting = BeanUtil.copyProperties(meetingBasic, Meeting.class); | ||||
meeting.setStatus(MeetingStatusEnum.NORMAL.getCode()); | meeting.setStatus(MeetingStatusEnum.NORMAL.getCode()); | ||||
meeting.setHoldOrg(userDetail.getOrganizationName()); | |||||
meeting.setHoldOrgCode(userDetail.getOrganizationCode()); | |||||
meeting.setHoldOrg(String.valueOf(userDetail.getMhUnitId())); | |||||
meeting.setHoldOrgCode(userDetail.getMhUnitName()); | |||||
meeting.setCreator(userDetail.getUsername()); | meeting.setCreator(userDetail.getUsername()); | ||||
meeting.setInviteStatus(Boolean.FALSE); | meeting.setInviteStatus(Boolean.FALSE); | ||||
meeting.setConfirmedRoster(Boolean.FALSE); | meeting.setConfirmedRoster(Boolean.FALSE); | ||||
@@ -1,5 +1,7 @@ | |||||
package com.hz.pm.api.organization.controller; | package com.hz.pm.api.organization.controller; | ||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.user.util.LoginUserUtil; | |||||
import com.ningdatech.basic.model.PageVo; | import com.ningdatech.basic.model.PageVo; | ||||
import com.ningdatech.log.annotation.WebLog; | import com.ningdatech.log.annotation.WebLog; | ||||
import com.hz.pm.api.organization.manage.ProcDefManage; | import com.hz.pm.api.organization.manage.ProcDefManage; | ||||
@@ -50,8 +52,11 @@ public class ProcDefController { | |||||
@ApiOperation(value = "单位流程配置保存", notes = "单位流程配置保存") | @ApiOperation(value = "单位流程配置保存", notes = "单位流程配置保存") | ||||
@PostMapping("/save") | @PostMapping("/save") | ||||
@WebLog("单位流程配置保存") | @WebLog("单位流程配置保存") | ||||
public String save(@Validated @RequestBody WflowOrgProcdefDto wflowOrgProcdefDto) { | |||||
return orgProcessModelService.saveProcessLs(wflowOrgProcdefDto); | |||||
public String save(@Validated @RequestBody WflowOrgProcdefDto req) { | |||||
if (StrUtils.isBlank(req.getOrgCode())) { | |||||
req.setOrgCode(LoginUserUtil.loginUserDetail().getMhUnitIdStr()); | |||||
} | |||||
return orgProcessModelService.saveProcessLs(req); | |||||
} | } | ||||
@ApiOperation(value = "单位流程配置启用", notes = "单位流程配置启用") | @ApiOperation(value = "单位流程配置启用", notes = "单位流程配置启用") | ||||
@@ -73,7 +73,8 @@ public class TemplateDetailBuildHelperImpl implements TemplateDetailBuildHelper | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode,projectCode) | .eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode,projectCode) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode())); | .eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode())); | ||||
if (CollUtil.isNotEmpty(reAppraisalScoreInfo)) { | if (CollUtil.isNotEmpty(reAppraisalScoreInfo)) { | ||||
Map<String, List<PerformanceAppraisalScoreInfo>> reAppScoreInfoMap = reAppraisalScoreInfo.stream().collect(Collectors.groupingBy(PerformanceAppraisalScoreInfo::getAppraisalEmployeeName)); | |||||
Map<String, List<PerformanceAppraisalScoreInfo>> reAppScoreInfoMap = reAppraisalScoreInfo.stream() | |||||
.collect(Collectors.groupingBy(PerformanceAppraisalScoreInfo::getAppraisalUserName)); | |||||
HashMap<String, BigDecimal> scoreMap = MapUtil.newHashMap(); | HashMap<String, BigDecimal> scoreMap = MapUtil.newHashMap(); | ||||
for (String name : reAppScoreInfoMap.keySet()) { | for (String name : reAppScoreInfoMap.keySet()) { | ||||
List<PerformanceAppraisalScoreInfo> scoreInfos = reAppScoreInfoMap.get(name); | List<PerformanceAppraisalScoreInfo> scoreInfos = reAppScoreInfoMap.get(name); | ||||
@@ -97,13 +98,13 @@ public class TemplateDetailBuildHelperImpl implements TemplateDetailBuildHelper | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode,projectCode) | .eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode,projectCode) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode())); | .eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode())); | ||||
if (CollUtil.isNotEmpty(verifyScoreInfo)) { | if (CollUtil.isNotEmpty(verifyScoreInfo)) { | ||||
Map<String, List<PerformanceAppraisalScoreInfo>> verifyScoreInfoMap = verifyScoreInfo.stream().collect(Collectors.groupingBy(PerformanceAppraisalScoreInfo::getAppraisalEmployeeName)); | |||||
Map<String, List<PerformanceAppraisalScoreInfo>> verifyScoreInfoMap = verifyScoreInfo.stream() | |||||
.collect(Collectors.groupingBy(PerformanceAppraisalScoreInfo::getAppraisalUserName)); | |||||
HashMap<String, BigDecimal> scoreMap = MapUtil.newHashMap(); | HashMap<String, BigDecimal> scoreMap = MapUtil.newHashMap(); | ||||
for (String name : verifyScoreInfoMap.keySet()) { | for (String name : verifyScoreInfoMap.keySet()) { | ||||
List<PerformanceAppraisalScoreInfo> scoreInfos = verifyScoreInfoMap.get(name); | List<PerformanceAppraisalScoreInfo> scoreInfos = verifyScoreInfoMap.get(name); | ||||
BigDecimal totalScore = scoreInfos.stream().map(PerformanceAppraisalScoreInfo::getAppraisalScore) | BigDecimal totalScore = scoreInfos.stream().map(PerformanceAppraisalScoreInfo::getAppraisalScore) | ||||
.filter(Objects::nonNull) | |||||
.reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
.filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add); | |||||
scoreMap.put(name, totalScore); | scoreMap.put(name, totalScore); | ||||
} | } | ||||
detailThirdVo.setVerifyTotalScoreInfo(scoreMap); | detailThirdVo.setVerifyTotalScoreInfo(scoreMap); | ||||
@@ -1,47 +1,49 @@ | |||||
package com.hz.pm.api.performance.manage; | package com.hz.pm.api.performance.manage; | ||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.lang.Assert; | |||||
import cn.hutool.core.map.MapUtil; | import cn.hutool.core.map.MapUtil; | ||||
import com.hz.pm.api.performance.enumration.AppIndexTypeEnum; | |||||
import com.hz.pm.api.performance.model.dto.AppAppraisalInfoDTO; | |||||
import com.hz.pm.api.performance.model.vo.*; | |||||
import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | |||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.beans.BeanUtils; | |||||
import org.springframework.stereotype.Component; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import com.hz.pm.api.performance.constant.ProjectBizConst; | import com.hz.pm.api.performance.constant.ProjectBizConst; | ||||
import com.hz.pm.api.performance.enumration.AppIndexTypeEnum; | |||||
import com.hz.pm.api.performance.model.dto.AppAppraisalInfoDTO; | |||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.hz.pm.api.performance.model.entity.*; | import com.hz.pm.api.performance.model.entity.*; | ||||
import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | ||||
import com.hz.pm.api.performance.model.vo.*; | |||||
import com.hz.pm.api.performance.service.*; | import com.hz.pm.api.performance.service.*; | ||||
import com.hz.pm.api.projectlib.model.entity.ProjectApplication; | |||||
import com.hz.pm.api.projectlib.service.IProjectApplicationService; | |||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.beans.BeanUtils; | |||||
import org.springframework.stereotype.Component; | |||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Objects; | |||||
import java.util.Set; | |||||
import java.util.stream.Collectors; | |||||
/** | /** | ||||
* AppAppraisalManage | * AppAppraisalManage | ||||
* @return | |||||
* | |||||
* @author CMM | * @author CMM | ||||
* @return | |||||
* @since 2023/08/10 8:55 | * @since 2023/08/10 8:55 | ||||
*/ | */ | ||||
@Component | @Component | ||||
@@ -56,8 +58,10 @@ public class AppAppraisalManage { | |||||
private final IPerformanceAppraisalApplicationService performanceAppraisalApplicationService; | private final IPerformanceAppraisalApplicationService performanceAppraisalApplicationService; | ||||
private final IPerformanceAppraisalAppIndicatorService performanceAppraisalAppIndicatorService; | private final IPerformanceAppraisalAppIndicatorService performanceAppraisalAppIndicatorService; | ||||
private final IProjectCoreBusinessIndicatorsService projectCoreBusinessIndicatorsService; | private final IProjectCoreBusinessIndicatorsService projectCoreBusinessIndicatorsService; | ||||
/** | /** | ||||
* 应用评价-评价计划列表 | * 应用评价-评价计划列表 | ||||
* | |||||
* @param req | * @param req | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -68,31 +72,31 @@ public class AppAppraisalManage { | |||||
List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | ||||
Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class) | Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class) | ||||
.eq(Role::getName, ProjectBizConst.REAPPRAISAL_ROLE)); | .eq(Role::getName, ProjectBizConst.REAPPRAISAL_ROLE)); | ||||
if (Objects.isNull(role)){ | |||||
if (Objects.isNull(role)) { | |||||
throw new BizException("登录用户没有复评员角色!"); | throw new BizException("登录用户没有复评员角色!"); | ||||
} | } | ||||
// 登录用户不是复评员,不能查看复评计划列表 | // 登录用户不是复评员,不能查看复评计划列表 | ||||
if (!roleIdList.contains(role.getId())){ | |||||
if (!roleIdList.contains(role.getId())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
// 获取所有已添加到评价计划中的应用信息 | // 获取所有已添加到评价计划中的应用信息 | ||||
List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(); | List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(); | ||||
// 没有包含应用的评价计划 | // 没有包含应用的评价计划 | ||||
if (CollUtil.isEmpty(paas)){ | |||||
if (CollUtil.isEmpty(paas)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Set<Long> paIds = paas.stream().map(PerformanceAppraisalApplication::getAppraisalId).collect(Collectors.toSet()); | Set<Long> paIds = paas.stream().map(PerformanceAppraisalApplication::getAppraisalId).collect(Collectors.toSet()); | ||||
Page<PerformanceAppraisal> page = req.page(); | Page<PerformanceAppraisal> page = req.page(); | ||||
LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | ||||
.in(PerformanceAppraisal::getId,paIds) | |||||
.in(PerformanceAppraisal::getId, paIds) | |||||
.orderByDesc(PerformanceAppraisal::getUpdateOn); | .orderByDesc(PerformanceAppraisal::getUpdateOn); | ||||
performanceAppraisalService.page(page,wrapper); | |||||
performanceAppraisalService.page(page, wrapper); | |||||
List<PerformanceAppraisalVO> res = page.getRecords().stream() | List<PerformanceAppraisalVO> res = page.getRecords().stream() | ||||
.map(p -> BeanUtil.copyProperties(p, PerformanceAppraisalVO.class)) | .map(p -> BeanUtil.copyProperties(p, PerformanceAppraisalVO.class)) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
@@ -108,7 +112,7 @@ public class AppAppraisalManage { | |||||
.eq(PerformanceAppraisalApplication::getAppraisalId, planId) | .eq(PerformanceAppraisalApplication::getAppraisalId, planId) | ||||
.eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.FALSE)); | .eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.FALSE)); | ||||
// 没有当前用户待评价的应用信息 | // 没有当前用户待评价的应用信息 | ||||
if (CollUtil.isEmpty(paas)){ | |||||
if (CollUtil.isEmpty(paas)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<Long> ids = paas.stream().map(PerformanceAppraisalApplication::getApplicationId).collect(Collectors.toList()); | List<Long> ids = paas.stream().map(PerformanceAppraisalApplication::getApplicationId).collect(Collectors.toList()); | ||||
@@ -126,36 +130,36 @@ public class AppAppraisalManage { | |||||
} | } | ||||
appIds = ids; | appIds = ids; | ||||
// 没有当前用户待评价的应用信息 | // 没有当前用户待评价的应用信息 | ||||
if(CollUtil.isEmpty(appIds)){ | |||||
if (CollUtil.isEmpty(appIds)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Page<ProjectApplication> page = req.page(); | Page<ProjectApplication> page = req.page(); | ||||
LambdaQueryWrapper<ProjectApplication> wrapper = Wrappers.lambdaQuery(ProjectApplication.class) | LambdaQueryWrapper<ProjectApplication> wrapper = Wrappers.lambdaQuery(ProjectApplication.class) | ||||
.in(ProjectApplication::getId, appIds) | .in(ProjectApplication::getId, appIds) | ||||
.like(StringUtils.isNotBlank(req.getApplicationName()),ProjectApplication::getApplicationName,req.getApplicationName()); | |||||
projectApplicationService.page(page,wrapper); | |||||
.like(StringUtils.isNotBlank(req.getApplicationName()), ProjectApplication::getApplicationName, req.getApplicationName()); | |||||
projectApplicationService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<PerformanceAppraisalAppVO> res = page.getRecords().stream() | List<PerformanceAppraisalAppVO> res = page.getRecords().stream() | ||||
.map(p -> { | .map(p -> { | ||||
PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | ||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | |||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode, p.getId(), planId)); | |||||
vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | ||||
vo.setAppraisalId(planId); | vo.setAppraisalId(planId); | ||||
return vo; | return vo; | ||||
}) | }) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
public PageVo<PerformanceAppraisalAppVO> evaluatedList(Long planId, PerformanceAppraisalListReq req) { | public PageVo<PerformanceAppraisalAppVO> evaluatedList(Long planId, PerformanceAppraisalListReq req) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = user.getEmployeeCode(); | |||||
String employeeCode = user.getUserIdStr(); | |||||
PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | ||||
VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | ||||
@@ -164,7 +168,7 @@ public class AppAppraisalManage { | |||||
List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | List<PerformanceAppraisalApplication> paas = performanceAppraisalApplicationService.list(Wrappers.lambdaQuery(PerformanceAppraisalApplication.class) | ||||
.eq(PerformanceAppraisalApplication::getAppraisalId, planId) | .eq(PerformanceAppraisalApplication::getAppraisalId, planId) | ||||
.eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.TRUE)); | .eq(PerformanceAppraisalApplication::getIsCompleteAppraisal, Boolean.TRUE)); | ||||
if (CollUtil.isEmpty(paas)){ | |||||
if (CollUtil.isEmpty(paas)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
// 从绩效评价打分信息表中获取上述绩效评价计划应用的打分信息 | // 从绩效评价打分信息表中获取上述绩效评价计划应用的打分信息 | ||||
@@ -173,39 +177,38 @@ public class AppAppraisalManage { | |||||
List<Long> appIds = Lists.newArrayList(); | List<Long> appIds = Lists.newArrayList(); | ||||
if (CollUtil.isNotEmpty(appraisalScoreInfos)) { | if (CollUtil.isNotEmpty(appraisalScoreInfos)) { | ||||
// 筛选出当前登录用户已进行打分的应用信息 | // 筛选出当前登录用户已进行打分的应用信息 | ||||
List<Long> scoredAppIds = appraisalScoreInfos.stream() | |||||
appIds = appraisalScoreInfos.stream() | |||||
.filter(a -> employeeCode.equals(a.getAppraisalEmployeeCode())) | .filter(a -> employeeCode.equals(a.getAppraisalEmployeeCode())) | ||||
.map(PerformanceAppraisalAppScoreInfo::getApplicationId) | .map(PerformanceAppraisalAppScoreInfo::getApplicationId) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
appIds = scoredAppIds; | |||||
} | } | ||||
// 没有当前用户已评价的应用信息 | // 没有当前用户已评价的应用信息 | ||||
if(CollUtil.isEmpty(appIds)){ | |||||
if (CollUtil.isEmpty(appIds)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Page<ProjectApplication> page = req.page(); | Page<ProjectApplication> page = req.page(); | ||||
LambdaQueryWrapper<ProjectApplication> wrapper = Wrappers.lambdaQuery(ProjectApplication.class) | LambdaQueryWrapper<ProjectApplication> wrapper = Wrappers.lambdaQuery(ProjectApplication.class) | ||||
.in(ProjectApplication::getId, appIds) | .in(ProjectApplication::getId, appIds) | ||||
.like(StringUtils.isNotBlank(req.getApplicationName()),ProjectApplication::getApplicationName,req.getApplicationName()); | |||||
projectApplicationService.page(page,wrapper); | |||||
.like(StringUtils.isNotBlank(req.getApplicationName()), ProjectApplication::getApplicationName, req.getApplicationName()); | |||||
projectApplicationService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<PerformanceAppraisalAppVO> res = page.getRecords().stream() | List<PerformanceAppraisalAppVO> res = page.getRecords().stream() | ||||
.map(p -> { | .map(p -> { | ||||
PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | PerformanceAppraisalAppVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalAppVO.class); | ||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode,p.getId(),planId)); | |||||
vo.setCanAppraisal(checkCanAppraisal(employeeCode, p.getId(), planId)); | |||||
vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | vo.setApplicationName(StringUtils.isNotBlank(p.getApplicationName()) ? p.getApplicationName() : p.getRelatedExistsApplication()); | ||||
vo.setAppraisalId(planId); | vo.setAppraisalId(planId); | ||||
return vo; | return vo; | ||||
}) | }) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
/** | /** | ||||
@@ -216,14 +219,14 @@ public class AppAppraisalManage { | |||||
* @param appraisalId | * @param appraisalId | ||||
* @return | * @return | ||||
*/ | */ | ||||
private Boolean checkCanAppraisal(String employeeCode, Long appId, Long appraisalId) { | |||||
private Boolean checkCanAppraisal(String employeeCode, Long appId, Long appraisalId) { | |||||
// 从绩效评价应用打分信息表中查询打分人员为当前登录复评用户的打分信息 | // 从绩效评价应用打分信息表中查询打分人员为当前登录复评用户的打分信息 | ||||
// 如果没有相关的打分信息,说明是当前登录复评用户是首次评价 | // 如果没有相关的打分信息,说明是当前登录复评用户是首次评价 | ||||
List<PerformanceAppraisalAppScoreInfo> scoreInfos = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | List<PerformanceAppraisalAppScoreInfo> scoreInfos = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId,appId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId,appraisalId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId, appraisalId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalEmployeeCode, employeeCode)); | .eq(PerformanceAppraisalAppScoreInfo::getAppraisalEmployeeCode, employeeCode)); | ||||
if (CollUtil.isEmpty(scoreInfos)){ | |||||
if (CollUtil.isEmpty(scoreInfos)) { | |||||
return true; | return true; | ||||
} | } | ||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
@@ -233,28 +236,26 @@ public class AppAppraisalManage { | |||||
public AppAppraisalIndexDetailVO detail(Long planId, Long appId) { | public AppAppraisalIndexDetailVO detail(Long planId, Long appId) { | ||||
ProjectApplication projectApplication = projectApplicationService.getById(appId); | ProjectApplication projectApplication = projectApplicationService.getById(appId); | ||||
VUtils.isTrue(Objects.isNull(projectApplication)).throwMessage("应用不存在!"); | |||||
Assert.notNull(projectApplication, "应用不存在!"); | |||||
AppAppraisalIndexDetailVO resVo = new AppAppraisalIndexDetailVO(); | AppAppraisalIndexDetailVO resVo = new AppAppraisalIndexDetailVO(); | ||||
if (StringUtils.isNotBlank(projectApplication.getApplicationName())) { | if (StringUtils.isNotBlank(projectApplication.getApplicationName())) { | ||||
resVo.setApplicationName(projectApplication.getApplicationName()); | resVo.setApplicationName(projectApplication.getApplicationName()); | ||||
}else { | |||||
} else { | |||||
resVo.setApplicationName(projectApplication.getRelatedExistsApplication()); | resVo.setApplicationName(projectApplication.getRelatedExistsApplication()); | ||||
} | } | ||||
if (Objects.nonNull(projectApplication)){ | |||||
resVo.setBuildOrgName(projectApplication.getBuildOrgName()); | |||||
// todo 应用状态 需通过appCode通过IRS接口获取,这里暂时写死 已验收 | |||||
resVo.setApplicationStatus("已验收"); | |||||
} | |||||
resVo.setBuildOrgName(projectApplication.getBuildOrgName()); | |||||
// todo 应用状态 需通过appCode通过IRS接口获取,这里暂时写死 已验收 | |||||
resVo.setApplicationStatus("已验收"); | |||||
// 获取指标配置的应用指标信息 | // 获取指标配置的应用指标信息 | ||||
// 通用指标 | // 通用指标 | ||||
List<PerformanceAppraisalAppIndicator> commonIndexList = performanceAppraisalAppIndicatorService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | List<PerformanceAppraisalAppIndicator> commonIndexList = performanceAppraisalAppIndicatorService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | ||||
.eq(PerformanceAppraisalAppIndicator::getIndexType, AppIndexTypeEnum.COMMON.getCode()) | .eq(PerformanceAppraisalAppIndicator::getIndexType, AppIndexTypeEnum.COMMON.getCode()) | ||||
.eq(PerformanceAppraisalAppIndicator::getIsDisplay,Boolean.TRUE) | |||||
.orderBy(Boolean.TRUE,Boolean.TRUE,PerformanceAppraisalAppIndicator::getSort)); | |||||
.eq(PerformanceAppraisalAppIndicator::getIsDisplay, Boolean.TRUE) | |||||
.orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalAppIndicator::getSort)); | |||||
// 获取当前应用通用指标的的打分信息 | // 获取当前应用通用指标的的打分信息 | ||||
Map<Long, PerformanceAppraisalAppScoreInfo> commonScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> commonScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId,planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.COMMON.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.COMMON.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | .stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | ||||
@@ -274,11 +275,11 @@ public class AppAppraisalManage { | |||||
// 辅助指标 | // 辅助指标 | ||||
List<PerformanceAppraisalAppIndicator> auxIndexList = performanceAppraisalAppIndicatorService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | List<PerformanceAppraisalAppIndicator> auxIndexList = performanceAppraisalAppIndicatorService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | ||||
.eq(PerformanceAppraisalAppIndicator::getIndexType, AppIndexTypeEnum.AUX.getCode()) | .eq(PerformanceAppraisalAppIndicator::getIndexType, AppIndexTypeEnum.AUX.getCode()) | ||||
.eq(PerformanceAppraisalAppIndicator::getIsDisplay,Boolean.TRUE) | |||||
.orderBy(Boolean.TRUE,Boolean.TRUE,PerformanceAppraisalAppIndicator::getSort)); | |||||
.eq(PerformanceAppraisalAppIndicator::getIsDisplay, Boolean.TRUE) | |||||
.orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalAppIndicator::getSort)); | |||||
// 获取当前应用辅助指标的的打分信息 | // 获取当前应用辅助指标的的打分信息 | ||||
Map<Long, PerformanceAppraisalAppScoreInfo> auxScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> auxScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId,planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.AUX.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.AUX.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | .stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | ||||
@@ -299,7 +300,7 @@ public class AppAppraisalManage { | |||||
.eq(ProjectCoreBusinessIndicators::getApplicationId, appId)); | .eq(ProjectCoreBusinessIndicators::getApplicationId, appId)); | ||||
// 获取当前应用业务指标的的打分信息 | // 获取当前应用业务指标的的打分信息 | ||||
Map<Long, PerformanceAppraisalAppScoreInfo> businessScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | Map<Long, PerformanceAppraisalAppScoreInfo> businessScoreInfoMap = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId,planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | .eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appId) | ||||
.eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.BUSINESS.getCode())) | .eq(PerformanceAppraisalAppScoreInfo::getIndexType, AppIndexTypeEnum.BUSINESS.getCode())) | ||||
.stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | .stream().collect(Collectors.toMap(PerformanceAppraisalAppScoreInfo::getIndexId, p -> p)); | ||||
@@ -333,7 +334,7 @@ public class AppAppraisalManage { | |||||
.eq(PerformanceAppraisalApplication::getApplicationId, applicationId)); | .eq(PerformanceAppraisalApplication::getApplicationId, applicationId)); | ||||
List<Long> indexIds = appAppraisalInfoList.stream().filter(a -> AppIndexTypeEnum.COMMON.getCode().equals(a.getIndexType()) || | List<Long> indexIds = appAppraisalInfoList.stream().filter(a -> AppIndexTypeEnum.COMMON.getCode().equals(a.getIndexType()) || | ||||
AppIndexTypeEnum.AUX.getCode().equals(a.getIndexType())) | |||||
AppIndexTypeEnum.AUX.getCode().equals(a.getIndexType())) | |||||
.map(AppAppraisalInfoDTO::getIndexId) | .map(AppAppraisalInfoDTO::getIndexId) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
List<Long> businessIndexIds = appAppraisalInfoList.stream() | List<Long> businessIndexIds = appAppraisalInfoList.stream() | ||||
@@ -366,18 +367,18 @@ public class AppAppraisalManage { | |||||
Map<Long, ProjectCoreBusinessIndicators> finalBusinessIndexMap = businessIndexMap; | Map<Long, ProjectCoreBusinessIndicators> finalBusinessIndexMap = businessIndexMap; | ||||
List<PerformanceAppraisalAppScoreInfo> scoreInfos = appAppraisalInfoList.stream().map(a -> { | List<PerformanceAppraisalAppScoreInfo> scoreInfos = appAppraisalInfoList.stream().map(a -> { | ||||
if (AppIndexTypeEnum.COMMON.getCode().equals(a.getIndexType()) || | if (AppIndexTypeEnum.COMMON.getCode().equals(a.getIndexType()) || | ||||
AppIndexTypeEnum.AUX.getCode().equals(a.getIndexType())){ | |||||
AppIndexTypeEnum.AUX.getCode().equals(a.getIndexType())) { | |||||
PerformanceAppraisalAppIndicator appIndicator = finalIndexMap.get(a.getIndexId()); | PerformanceAppraisalAppIndicator appIndicator = finalIndexMap.get(a.getIndexId()); | ||||
BigDecimal score = a.getScore(); | BigDecimal score = a.getScore(); | ||||
BigDecimal indexScore = appIndicator.getIndexScore(); | BigDecimal indexScore = appIndicator.getIndexScore(); | ||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0){ | |||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0) { | |||||
throw new BizException("评价得分必须大于等于0且小于等于指标分值!"); | throw new BizException("评价得分必须大于等于0且小于等于指标分值!"); | ||||
} | } | ||||
} else if (AppIndexTypeEnum.BUSINESS.getCode().equals(a.getIndexType())) { | } else if (AppIndexTypeEnum.BUSINESS.getCode().equals(a.getIndexType())) { | ||||
ProjectCoreBusinessIndicators coreBusinessIndicators = finalBusinessIndexMap.get(a.getIndexId()); | ProjectCoreBusinessIndicators coreBusinessIndicators = finalBusinessIndexMap.get(a.getIndexId()); | ||||
BigDecimal score = a.getScore(); | BigDecimal score = a.getScore(); | ||||
BigDecimal indexScore = coreBusinessIndicators.getScore(); | BigDecimal indexScore = coreBusinessIndicators.getScore(); | ||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0){ | |||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0) { | |||||
throw new BizException("评价得分必须大于等于0且小于等于指标分值!"); | throw new BizException("评价得分必须大于等于0且小于等于指标分值!"); | ||||
} | } | ||||
} | } | ||||
@@ -396,7 +397,7 @@ public class AppAppraisalManage { | |||||
scoreInfo.setUpdateBy(username); | scoreInfo.setUpdateBy(username); | ||||
return scoreInfo; | return scoreInfo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
if (performanceAppraisalAppScoreInfoService.saveBatch(scoreInfos)){ | |||||
if (performanceAppraisalAppScoreInfoService.saveBatch(scoreInfos)) { | |||||
// 计算评价总分并保存 | // 计算评价总分并保存 | ||||
BigDecimal appraisalTotalScore = appAppraisalInfoList.stream() | BigDecimal appraisalTotalScore = appAppraisalInfoList.stream() | ||||
.map(AppAppraisalInfoDTO::getScore) | .map(AppAppraisalInfoDTO::getScore) | ||||
@@ -412,18 +413,5 @@ public class AppAppraisalManage { | |||||
} | } | ||||
return "提交失败"; | return "提交失败"; | ||||
} | } | ||||
private void judgeCompleteAppraisal(PerformanceAppraisalProjectGroup group, PerformanceAppraisalApplication appraisalApplication) { | |||||
// 获取该评价应用的复评打分信息 | |||||
List<PerformanceAppraisalAppScoreInfo> scoreInfos = performanceAppraisalAppScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalAppScoreInfo.class) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getAppraisalId, group.getAppraisalId()) | |||||
.eq(PerformanceAppraisalAppScoreInfo::getApplicationId, appraisalApplication.getApplicationId())); | |||||
String reAppraisalUsers = group.getReAppraisalUsers(); | |||||
List<String> users = scoreInfos.stream().map(PerformanceAppraisalAppScoreInfo::getAppraisalEmployeeCode).collect(Collectors.toList()); | |||||
if (CollUtil.isNotEmpty(users)){ | |||||
String join = String.join(StrPool.COMMA, users); | |||||
if (join.equals(reAppraisalUsers)) { | |||||
appraisalApplication.setIsCompleteAppraisal(Boolean.TRUE); | |||||
} | |||||
} | |||||
} | |||||
} | } |
@@ -3,16 +3,15 @@ package com.hz.pm.api.performance.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import com.hz.pm.api.common.enumeration.CommonEnum; | |||||
import com.hz.pm.api.common.model.constant.BizConst; | import com.hz.pm.api.common.model.constant.BizConst; | ||||
import com.hz.pm.api.common.model.constant.CommonConst; | import com.hz.pm.api.common.model.constant.CommonConst; | ||||
import com.hz.pm.api.common.enumeration.CommonEnum; | |||||
import com.hz.pm.api.common.util.BizUtils; | |||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.performance.enumration.PerformanceTemplateTypeEnum; | import com.hz.pm.api.performance.enumration.PerformanceTemplateTypeEnum; | ||||
import com.hz.pm.api.performance.helper.TemplateDetailBuildHelper; | import com.hz.pm.api.performance.helper.TemplateDetailBuildHelper; | ||||
import com.hz.pm.api.performance.model.dto.PerformanceIndicatorAppIndexSaveDTO; | import com.hz.pm.api.performance.model.dto.PerformanceIndicatorAppIndexSaveDTO; | ||||
@@ -34,6 +33,10 @@ import com.hz.pm.api.performance.service.IPerformanceIndicatorProjectTemplateDet | |||||
import com.hz.pm.api.performance.service.IPerformanceIndicatorProjectTemplateService; | import com.hz.pm.api.performance.service.IPerformanceIndicatorProjectTemplateService; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -43,7 +46,6 @@ import org.springframework.transaction.annotation.Transactional; | |||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.Arrays; | |||||
import java.util.List; | import java.util.List; | ||||
import java.util.Map; | import java.util.Map; | ||||
import java.util.Objects; | import java.util.Objects; | ||||
@@ -67,18 +69,18 @@ public class IndicatorConfigManage { | |||||
/** | /** | ||||
* 模板列表 | * 模板列表 | ||||
* | |||||
* @param req | * @param req | ||||
* @return | * @return | ||||
*/ | */ | ||||
public PageVo<ProjectIndexTemplateVO> projectIndexTemplateList(PerformanceAppraisalListReq req) { | public PageVo<ProjectIndexTemplateVO> projectIndexTemplateList(PerformanceAppraisalListReq req) { | ||||
Page<PerformanceIndicatorProjectTemplate> page = req.page(); | Page<PerformanceIndicatorProjectTemplate> page = req.page(); | ||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | ||||
.like(StringUtils.isNotBlank(req.getTemplateName()), PerformanceIndicatorProjectTemplate::getName, req.getTemplateName()) | |||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), PerformanceIndicatorProjectTemplate::getRegionCode,req.getRegionCode()) | |||||
.like(StrUtils.isNotBlank(req.getTemplateName()), PerformanceIndicatorProjectTemplate::getName, req.getTemplateName()) | |||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getCreateOn); | .orderByDesc(PerformanceIndicatorProjectTemplate::getCreateOn); | ||||
indicatorProjectTemplateService.page(page,wrapper); | |||||
indicatorProjectTemplateService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
@@ -86,40 +88,40 @@ public class IndicatorConfigManage { | |||||
.map(p -> BeanUtil.copyProperties(p, ProjectIndexTemplateVO.class)) | .map(p -> BeanUtil.copyProperties(p, ProjectIndexTemplateVO.class)) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
/** | /** | ||||
* 查询项目模板详情 | * 查询项目模板详情 | ||||
* @param id | |||||
* @return | |||||
* | |||||
* @param id \ | |||||
* @return \ | |||||
*/ | */ | ||||
public ProjectIndexTemplateVO projectDetail(Long id) { | public ProjectIndexTemplateVO projectDetail(Long id) { | ||||
PerformanceIndicatorProjectTemplate template = indicatorProjectTemplateService.getById(id); | PerformanceIndicatorProjectTemplate template = indicatorProjectTemplateService.getById(id); | ||||
if(Objects.isNull(template)){ | |||||
if (Objects.isNull(template)) { | |||||
return null; | return null; | ||||
} | } | ||||
ProjectIndexTemplateVO vo = BeanUtil.copyProperties(template, | ProjectIndexTemplateVO vo = BeanUtil.copyProperties(template, | ||||
ProjectIndexTemplateVO.class); | ProjectIndexTemplateVO.class); | ||||
String projectTagIds = template.getProjectTagIds(); | String projectTagIds = template.getProjectTagIds(); | ||||
if (StringUtils.isNotBlank(projectTagIds)){ | |||||
List<Long> proTagIdList = Arrays.stream(projectTagIds.split(StrPool.COMMA)).map(Long::valueOf).collect(Collectors.toList()); | |||||
vo.setProjectTagIds(proTagIdList); | |||||
if (StringUtils.isNotBlank(projectTagIds)) { | |||||
vo.setProjectTagIds(BizUtils.splitToLong(projectTagIds)); | |||||
} | } | ||||
// 获取模版绩效指标详情 | // 获取模版绩效指标详情 | ||||
List<PerformanceIndicatorProjectTemplateDetail> templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id) | .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.FALSE)); | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.FALSE)); | |||||
// 获取模版附加绩效指标详情 | // 获取模版附加绩效指标详情 | ||||
List<PerformanceIndicatorProjectTemplateDetail> additionalTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> additionalTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id) | .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.TRUE)); | |||||
if(CollUtil.isNotEmpty(templateDetails)){ | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.TRUE)); | |||||
if (CollUtil.isNotEmpty(templateDetails)) { | |||||
List<ProjectTemplateDetailVO> templateDetailVos = templateDetailBuildHelper.buildTemplateDetail(templateDetails, null, null); | List<ProjectTemplateDetailVO> templateDetailVos = templateDetailBuildHelper.buildTemplateDetail(templateDetails, null, null); | ||||
vo.setTemplateDetails(templateDetailVos); | vo.setTemplateDetails(templateDetailVos); | ||||
} | } | ||||
if (CollUtil.isNotEmpty(additionalTemplateDetails)){ | |||||
if (CollUtil.isNotEmpty(additionalTemplateDetails)) { | |||||
List<ProjectTemplateDetailVO> additionalTemplateDetailVos = templateDetailBuildHelper.buildTemplateDetail(additionalTemplateDetails, null, null); | List<ProjectTemplateDetailVO> additionalTemplateDetailVos = templateDetailBuildHelper.buildTemplateDetail(additionalTemplateDetails, null, null); | ||||
vo.setAdditionalIndexDetails(additionalTemplateDetailVos); | vo.setAdditionalIndexDetails(additionalTemplateDetailVos); | ||||
} | } | ||||
@@ -128,6 +130,7 @@ public class IndicatorConfigManage { | |||||
/** | /** | ||||
* 项目指标 模板保存 | * 项目指标 模板保存 | ||||
* | |||||
* @param dto | * @param dto | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -138,35 +141,35 @@ public class IndicatorConfigManage { | |||||
List<Long> projectTagIds = dto.getProjectTagIds(); | List<Long> projectTagIds = dto.getProjectTagIds(); | ||||
List<String> tagIdList = projectTagIds.stream().map(String::valueOf).collect(Collectors.toList()); | List<String> tagIdList = projectTagIds.stream().map(String::valueOf).collect(Collectors.toList()); | ||||
template.setProjectTagIds(String.join(StrPool.COMMA, tagIdList)); | template.setProjectTagIds(String.join(StrPool.COMMA, tagIdList)); | ||||
if (Objects.isNull(dto.getStatus())){ | |||||
if (Objects.isNull(dto.getStatus())) { | |||||
// 默认模版禁用 | // 默认模版禁用 | ||||
template.setStatus(0); | template.setStatus(0); | ||||
} | } | ||||
if(Objects.nonNull(dto.getId())){ | |||||
if (Objects.nonNull(dto.getId())) { | |||||
PerformanceIndicatorProjectTemplate old = indicatorProjectTemplateService.getById(dto.getId()); | PerformanceIndicatorProjectTemplate old = indicatorProjectTemplateService.getById(dto.getId()); | ||||
VUtils.isTrue(Objects.isNull(old)).throwMessage("该模板不存在!"); | |||||
Assert.notNull(old, "该模板不存在!"); | |||||
template.setId(old.getId()); | template.setId(old.getId()); | ||||
}else{ | |||||
} else { | |||||
template.setId(null); | template.setId(null); | ||||
template.setCreateOn(LocalDateTime.now()); | template.setCreateOn(LocalDateTime.now()); | ||||
template.setCreateBy(user.getUsername()); | template.setCreateBy(user.getUsername()); | ||||
} | } | ||||
template.setUpdateOn(LocalDateTime.now()); | template.setUpdateOn(LocalDateTime.now()); | ||||
template.setUpdateBy(user.getUsername()); | template.setUpdateBy(user.getUsername()); | ||||
if(indicatorProjectTemplateService.saveOrUpdate(template)){ | |||||
if (indicatorProjectTemplateService.saveOrUpdate(template)) { | |||||
//保存 模板指标的详情 | //保存 模板指标的详情 | ||||
if(CollUtil.isNotEmpty(dto.getTemplateDetails())){ | |||||
if (CollUtil.isNotEmpty(dto.getTemplateDetails())) { | |||||
//先删除 | //先删除 | ||||
indicatorProjectTemplateDetailService.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | indicatorProjectTemplateDetailService.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId,dto.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.FALSE)); | |||||
analysisTemplateDetails(dto.getTemplateDetails(),template.getId()); | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, dto.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.FALSE)); | |||||
analysisTemplateDetails(dto.getTemplateDetails(), template.getId()); | |||||
//校检 所有3级指标(不包括附加指标) 总分是不是100 | //校检 所有3级指标(不包括附加指标) 总分是不是100 | ||||
List<PerformanceIndicatorProjectTemplateDetail> indexList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> indexList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, template.getId()) | .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, template.getId()) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.FALSE) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getType,PerformanceTemplateTypeEnum.THIRD_INDEX.getCode())); | |||||
if(CollUtil.isNotEmpty(indexList)){ | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.FALSE) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getType, PerformanceTemplateTypeEnum.THIRD_INDEX.getCode())); | |||||
if (CollUtil.isNotEmpty(indexList)) { | |||||
BigDecimal sum = indexList.stream() | BigDecimal sum = indexList.stream() | ||||
.map(PerformanceIndicatorProjectTemplateDetail::getIndexScore) | .map(PerformanceIndicatorProjectTemplateDetail::getIndexScore) | ||||
.filter(Objects::nonNull) | .filter(Objects::nonNull) | ||||
@@ -176,11 +179,11 @@ public class IndicatorConfigManage { | |||||
} | } | ||||
} | } | ||||
// 保存 模版附加指标详情 | // 保存 模版附加指标详情 | ||||
if (CollUtil.isNotEmpty(dto.getAdditionalIndexDetails())){ | |||||
if (CollUtil.isNotEmpty(dto.getAdditionalIndexDetails())) { | |||||
indicatorProjectTemplateDetailService.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | indicatorProjectTemplateDetailService.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId,dto.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.TRUE)); | |||||
analysisAdditionalTemplateDetails(dto.getAdditionalIndexDetails(),template.getId()); | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, dto.getId()) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.TRUE)); | |||||
analysisAdditionalTemplateDetails(dto.getAdditionalIndexDetails(), template.getId()); | |||||
} | } | ||||
return BizConst.SAVE_SUCCESS; | return BizConst.SAVE_SUCCESS; | ||||
} | } | ||||
@@ -189,37 +192,39 @@ public class IndicatorConfigManage { | |||||
/** | /** | ||||
* 解析 项目考核指标 | * 解析 项目考核指标 | ||||
* | |||||
* @param templateDetails | * @param templateDetails | ||||
* @return | * @return | ||||
*/ | */ | ||||
public void analysisTemplateDetails( | public void analysisTemplateDetails( | ||||
List<ProjectTemplateDetailDTO> templateDetails,Long templateId) { | |||||
if(CollUtil.isEmpty(templateDetails)){ | |||||
List<ProjectTemplateDetailDTO> templateDetails, Long templateId) { | |||||
if (CollUtil.isEmpty(templateDetails)) { | |||||
return; | return; | ||||
} | } | ||||
analysisTemplateDetailsInner(templateDetails,templateId,null); | |||||
analysisTemplateDetailsInner(templateDetails, templateId, null); | |||||
} | } | ||||
/** | /** | ||||
* 解析 项目附加考核指标 | * 解析 项目附加考核指标 | ||||
* | |||||
* @param additionalTemplateDetails | * @param additionalTemplateDetails | ||||
* @return | * @return | ||||
*/ | */ | ||||
public void analysisAdditionalTemplateDetails( | public void analysisAdditionalTemplateDetails( | ||||
List<ProjectTemplateDetailDTO> additionalTemplateDetails,Long templateId) { | |||||
if(CollUtil.isEmpty(additionalTemplateDetails)){ | |||||
List<ProjectTemplateDetailDTO> additionalTemplateDetails, Long templateId) { | |||||
if (CollUtil.isEmpty(additionalTemplateDetails)) { | |||||
return; | return; | ||||
} | } | ||||
analysisAdditionalTemplateDetailsInner(additionalTemplateDetails,templateId,null); | |||||
analysisAdditionalTemplateDetailsInner(additionalTemplateDetails, templateId, null); | |||||
} | } | ||||
public void analysisTemplateDetailsInner(List<ProjectTemplateDetailDTO> templateDetails, | public void analysisTemplateDetailsInner(List<ProjectTemplateDetailDTO> templateDetails, | ||||
Long templateId,Long parentId) { | |||||
if(CollUtil.isEmpty(templateDetails)){ | |||||
Long templateId, Long parentId) { | |||||
if (CollUtil.isEmpty(templateDetails)) { | |||||
return; | return; | ||||
} | } | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
for(ProjectTemplateDetailDTO detail : templateDetails){ | |||||
for (ProjectTemplateDetailDTO detail : templateDetails) { | |||||
//计算阶段的 | //计算阶段的 | ||||
PerformanceIndicatorProjectTemplateDetail templateDetail = BeanUtil.copyProperties(detail, PerformanceIndicatorProjectTemplateDetail.class); | PerformanceIndicatorProjectTemplateDetail templateDetail = BeanUtil.copyProperties(detail, PerformanceIndicatorProjectTemplateDetail.class); | ||||
templateDetail.setCreateBy(user.getUsername()); | templateDetail.setCreateBy(user.getUsername()); | ||||
@@ -233,19 +238,19 @@ public class IndicatorConfigManage { | |||||
indicatorProjectTemplateDetailService.save(templateDetail); | indicatorProjectTemplateDetailService.save(templateDetail); | ||||
if(CollUtil.isNotEmpty(detail.getChildren())){ | |||||
analysisTemplateDetailsInner(detail.getChildren(),templateId,templateDetail.getId()); | |||||
if (CollUtil.isNotEmpty(detail.getChildren())) { | |||||
analysisTemplateDetailsInner(detail.getChildren(), templateId, templateDetail.getId()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
public void analysisAdditionalTemplateDetailsInner(List<ProjectTemplateDetailDTO> templateDetails, | public void analysisAdditionalTemplateDetailsInner(List<ProjectTemplateDetailDTO> templateDetails, | ||||
Long templateId,Long parentId) { | |||||
if(CollUtil.isEmpty(templateDetails)){ | |||||
Long templateId, Long parentId) { | |||||
if (CollUtil.isEmpty(templateDetails)) { | |||||
return; | return; | ||||
} | } | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
for(ProjectTemplateDetailDTO detail : templateDetails){ | |||||
for (ProjectTemplateDetailDTO detail : templateDetails) { | |||||
//计算阶段的 | //计算阶段的 | ||||
PerformanceIndicatorProjectTemplateDetail templateDetail = BeanUtil.copyProperties(detail, PerformanceIndicatorProjectTemplateDetail.class); | PerformanceIndicatorProjectTemplateDetail templateDetail = BeanUtil.copyProperties(detail, PerformanceIndicatorProjectTemplateDetail.class); | ||||
templateDetail.setCreateBy(user.getUsername()); | templateDetail.setCreateBy(user.getUsername()); | ||||
@@ -260,14 +265,15 @@ public class IndicatorConfigManage { | |||||
indicatorProjectTemplateDetailService.save(templateDetail); | indicatorProjectTemplateDetailService.save(templateDetail); | ||||
if(CollUtil.isNotEmpty(detail.getChildren())){ | |||||
analysisAdditionalTemplateDetailsInner(detail.getChildren(),templateId,templateDetail.getId()); | |||||
if (CollUtil.isNotEmpty(detail.getChildren())) { | |||||
analysisAdditionalTemplateDetailsInner(detail.getChildren(), templateId, templateDetail.getId()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* 装配 模板详情 | * 装配 模板详情 | ||||
* | |||||
* @param templateDetails | * @param templateDetails | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -310,11 +316,11 @@ public class IndicatorConfigManage { | |||||
} | } | ||||
return res; | return res; | ||||
} | } | ||||
/** | /** | ||||
* 删除项目模板 | * 删除项目模板 | ||||
* | |||||
* | |||||
* @param id | * @param id | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -328,8 +334,8 @@ public class IndicatorConfigManage { | |||||
if (indicatorProjectTemplateService.removeById(id)) { | if (indicatorProjectTemplateService.removeById(id)) { | ||||
indicatorProjectTemplateDetailService | indicatorProjectTemplateDetailService | ||||
.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id)); | |||||
.remove(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, id)); | |||||
return "删除成功"; | return "删除成功"; | ||||
} | } | ||||
return "操作失败"; | return "操作失败"; | ||||
@@ -337,7 +343,7 @@ public class IndicatorConfigManage { | |||||
public Boolean enOrDisProjectIndexTemplate(Long templateId, boolean active) { | public Boolean enOrDisProjectIndexTemplate(Long templateId, boolean active) { | ||||
PerformanceIndicatorProjectTemplate projectTemplate = indicatorProjectTemplateService.getById(templateId); | PerformanceIndicatorProjectTemplate projectTemplate = indicatorProjectTemplateService.getById(templateId); | ||||
if (Boolean.TRUE.equals(active)){ | |||||
if (Boolean.TRUE.equals(active)) { | |||||
// 根据创建模板时选择的项目类型、预算年度、项目金额、项目标签 | // 根据创建模板时选择的项目类型、预算年度、项目金额、项目标签 | ||||
// 判断模板是否可以启用(同一套组合只能启用一套模板) | // 判断模板是否可以启用(同一套组合只能启用一套模板) | ||||
PerformanceIndicatorProjectTemplate template = indicatorProjectTemplateService.getOne(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | PerformanceIndicatorProjectTemplate template = indicatorProjectTemplateService.getOne(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | ||||
@@ -345,12 +351,12 @@ public class IndicatorConfigManage { | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectTemplate.getProjectYear()) | .eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectTemplate.getProjectYear()) | ||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, projectTemplate.getAmountRange()) | .eq(PerformanceIndicatorProjectTemplate::getAmountRange, projectTemplate.getAmountRange()) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, projectTemplate.getProjectTagIds()) | .eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, projectTemplate.getProjectTagIds()) | ||||
.eq(PerformanceIndicatorProjectTemplate::getStatus,CommonEnum.YES.getCode())); | |||||
if (Objects.nonNull(template)){ | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode())); | |||||
if (Objects.nonNull(template)) { | |||||
throw new BizException("相同配置的模板已存在,当前模板无法启用!"); | throw new BizException("相同配置的模板已存在,当前模板无法启用!"); | ||||
} | } | ||||
projectTemplate.setStatus(CommonEnum.YES.getCode()); | projectTemplate.setStatus(CommonEnum.YES.getCode()); | ||||
}else { | |||||
} else { | |||||
projectTemplate.setStatus(CommonEnum.NO.getCode()); | projectTemplate.setStatus(CommonEnum.NO.getCode()); | ||||
} | } | ||||
return indicatorProjectTemplateService.updateById(projectTemplate); | return indicatorProjectTemplateService.updateById(projectTemplate); | ||||
@@ -361,7 +367,7 @@ public class IndicatorConfigManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
PerformanceIndicatorProjectTemplate projectTemplate = indicatorProjectTemplateService.getById(templateId); | PerformanceIndicatorProjectTemplate projectTemplate = indicatorProjectTemplateService.getById(templateId); | ||||
PerformanceIndicatorProjectTemplate newTemplate = new PerformanceIndicatorProjectTemplate(); | PerformanceIndicatorProjectTemplate newTemplate = new PerformanceIndicatorProjectTemplate(); | ||||
BeanUtils.copyProperties(projectTemplate,newTemplate); | |||||
BeanUtils.copyProperties(projectTemplate, newTemplate); | |||||
// 复制后,项目模版名称变更为xxx副本,状态为禁用 | // 复制后,项目模版名称变更为xxx副本,状态为禁用 | ||||
newTemplate.setName(projectTemplate.getName() + CommonConst.COPY); | newTemplate.setName(projectTemplate.getName() + CommonConst.COPY); | ||||
newTemplate.setStatus(CommonEnum.NO.getCode()); | newTemplate.setStatus(CommonEnum.NO.getCode()); | ||||
@@ -381,7 +387,7 @@ public class IndicatorConfigManage { | |||||
List<PerformanceIndicatorProjectTemplateDetail> thirdList = projectTemplateDetails.stream() | List<PerformanceIndicatorProjectTemplateDetail> thirdList = projectTemplateDetails.stream() | ||||
.filter(p -> PerformanceTemplateTypeEnum.THIRD_INDEX.getCode().equals(p.getType())) | .filter(p -> PerformanceTemplateTypeEnum.THIRD_INDEX.getCode().equals(p.getType())) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
if (CollUtil.isEmpty(thirdList)){ | |||||
if (CollUtil.isEmpty(thirdList)) { | |||||
throw new BizException("当前模板未配置三级指!"); | throw new BizException("当前模板未配置三级指!"); | ||||
} | } | ||||
List<PerformanceIndicatorProjectTemplateDetail> templateDetails = Lists.newArrayList(); | List<PerformanceIndicatorProjectTemplateDetail> templateDetails = Lists.newArrayList(); | ||||
@@ -400,7 +406,7 @@ public class IndicatorConfigManage { | |||||
// 再保存关联的二级指标 | // 再保存关联的二级指标 | ||||
Long thirdParentId = templateDetail.getParentId(); | Long thirdParentId = templateDetail.getParentId(); | ||||
PerformanceIndicatorProjectTemplateDetail secondTemplateDetail = detailMap.get(thirdParentId); | PerformanceIndicatorProjectTemplateDetail secondTemplateDetail = detailMap.get(thirdParentId); | ||||
if (Objects.isNull(secondTemplateDetail)){ | |||||
if (Objects.isNull(secondTemplateDetail)) { | |||||
throw new BizException("三级指标:" + templateDetail.getName() + "对应的二级指标不存在"); | throw new BizException("三级指标:" + templateDetail.getName() + "对应的二级指标不存在"); | ||||
} | } | ||||
PerformanceIndicatorProjectTemplateDetail newSecondTemplateDetail = new PerformanceIndicatorProjectTemplateDetail(); | PerformanceIndicatorProjectTemplateDetail newSecondTemplateDetail = new PerformanceIndicatorProjectTemplateDetail(); | ||||
@@ -420,7 +426,7 @@ public class IndicatorConfigManage { | |||||
// 再保存关联的一级指标 | // 再保存关联的一级指标 | ||||
Long secondParentId = secondTemplateDetail.getParentId(); | Long secondParentId = secondTemplateDetail.getParentId(); | ||||
PerformanceIndicatorProjectTemplateDetail firstTemplateDetail = detailMap.get(secondParentId); | PerformanceIndicatorProjectTemplateDetail firstTemplateDetail = detailMap.get(secondParentId); | ||||
if (Objects.isNull(firstTemplateDetail)){ | |||||
if (Objects.isNull(firstTemplateDetail)) { | |||||
throw new BizException("二级指标:" + secondTemplateDetail.getName() + "对应的一级指标不存在"); | throw new BizException("二级指标:" + secondTemplateDetail.getName() + "对应的一级指标不存在"); | ||||
} | } | ||||
PerformanceIndicatorProjectTemplateDetail newFirstTemplateDetail = new PerformanceIndicatorProjectTemplateDetail(); | PerformanceIndicatorProjectTemplateDetail newFirstTemplateDetail = new PerformanceIndicatorProjectTemplateDetail(); | ||||
@@ -453,32 +459,32 @@ public class IndicatorConfigManage { | |||||
.eq(Objects.nonNull(req.getIndexLevel()), PerformanceAppraisalProjectIndicator::getIndexLevel, req.getIndexLevel()) | .eq(Objects.nonNull(req.getIndexLevel()), PerformanceAppraisalProjectIndicator::getIndexLevel, req.getIndexLevel()) | ||||
.eq(StringUtils.isNotBlank(req.getRegionCode()), PerformanceAppraisalProjectIndicator::getRegionCode, req.getRegionCode()) | .eq(StringUtils.isNotBlank(req.getRegionCode()), PerformanceAppraisalProjectIndicator::getRegionCode, req.getRegionCode()) | ||||
.orderByDesc(PerformanceAppraisalProjectIndicator::getCreateOn); | .orderByDesc(PerformanceAppraisalProjectIndicator::getCreateOn); | ||||
projectIndicatorService.page(page,wrapper); | |||||
projectIndicatorService.page(page, wrapper); | |||||
if (CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<ProjectIndexVO> result = page.getRecords().stream() | List<ProjectIndexVO> result = page.getRecords().stream() | ||||
.map(i -> BeanUtil.copyProperties(i, ProjectIndexVO.class)) | .map(i -> BeanUtil.copyProperties(i, ProjectIndexVO.class)) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(result,page.getTotal()); | |||||
return PageVo.of(result, page.getTotal()); | |||||
} | } | ||||
public String projectIndexSave(PerformanceIndicatorProjectIndexSaveDTO dto) { | public String projectIndexSave(PerformanceIndicatorProjectIndexSaveDTO dto) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
PerformanceAppraisalProjectIndicator projectIndicator = BeanUtil.copyProperties(dto, PerformanceAppraisalProjectIndicator.class); | PerformanceAppraisalProjectIndicator projectIndicator = BeanUtil.copyProperties(dto, PerformanceAppraisalProjectIndicator.class); | ||||
if(Objects.nonNull(dto.getId())){ | |||||
if (Objects.nonNull(dto.getId())) { | |||||
PerformanceAppraisalProjectIndicator old = projectIndicatorService.getById(dto.getId()); | PerformanceAppraisalProjectIndicator old = projectIndicatorService.getById(dto.getId()); | ||||
VUtils.isTrue(Objects.isNull(old)).throwMessage("该项目指标不存在!"); | |||||
Assert.notNull(old, "该项目指标不存在!"); | |||||
projectIndicator.setId(old.getId()); | projectIndicator.setId(old.getId()); | ||||
}else{ | |||||
} else { | |||||
projectIndicator.setId(null); | projectIndicator.setId(null); | ||||
projectIndicator.setCreateOn(LocalDateTime.now()); | projectIndicator.setCreateOn(LocalDateTime.now()); | ||||
projectIndicator.setCreateBy(user.getUsername()); | projectIndicator.setCreateBy(user.getUsername()); | ||||
} | } | ||||
projectIndicator.setUpdateOn(LocalDateTime.now()); | projectIndicator.setUpdateOn(LocalDateTime.now()); | ||||
projectIndicator.setUpdateBy(user.getUsername()); | projectIndicator.setUpdateBy(user.getUsername()); | ||||
if(projectIndicatorService.saveOrUpdate(projectIndicator)){ | |||||
if (projectIndicatorService.saveOrUpdate(projectIndicator)) { | |||||
return "指标新增成功"; | return "指标新增成功"; | ||||
} | } | ||||
return "指标新增失败"; | return "指标新增失败"; | ||||
@@ -495,7 +501,7 @@ public class IndicatorConfigManage { | |||||
public ProjectIndexVO projectIndexDetail(Long id) { | public ProjectIndexVO projectIndexDetail(Long id) { | ||||
PerformanceAppraisalProjectIndicator projectIndex = projectIndicatorService.getById(id); | PerformanceAppraisalProjectIndicator projectIndex = projectIndicatorService.getById(id); | ||||
if(Objects.isNull(projectIndex)){ | |||||
if (Objects.isNull(projectIndex)) { | |||||
return null; | return null; | ||||
} | } | ||||
return BeanUtil.copyProperties(projectIndex, ProjectIndexVO.class); | return BeanUtil.copyProperties(projectIndex, ProjectIndexVO.class); | ||||
@@ -505,33 +511,33 @@ public class IndicatorConfigManage { | |||||
Page<PerformanceAppraisalAppIndicator> page = req.page(); | Page<PerformanceAppraisalAppIndicator> page = req.page(); | ||||
LambdaQueryWrapper<PerformanceAppraisalAppIndicator> wrapper = Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | LambdaQueryWrapper<PerformanceAppraisalAppIndicator> wrapper = Wrappers.lambdaQuery(PerformanceAppraisalAppIndicator.class) | ||||
.like(StringUtils.isNotBlank(req.getIndexName()), PerformanceAppraisalAppIndicator::getIndexName, req.getIndexName()) | .like(StringUtils.isNotBlank(req.getIndexName()), PerformanceAppraisalAppIndicator::getIndexName, req.getIndexName()) | ||||
.orderBy(Boolean.FALSE,Boolean.TRUE, PerformanceAppraisalAppIndicator::getSort); | |||||
appIndicatorService.page(page,wrapper); | |||||
.orderBy(Boolean.FALSE, Boolean.TRUE, PerformanceAppraisalAppIndicator::getSort); | |||||
appIndicatorService.page(page, wrapper); | |||||
if (CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<AppIndexVO> result = page.getRecords().stream() | List<AppIndexVO> result = page.getRecords().stream() | ||||
.map(i -> BeanUtil.copyProperties(i, AppIndexVO.class)) | .map(i -> BeanUtil.copyProperties(i, AppIndexVO.class)) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(result,page.getTotal()); | |||||
return PageVo.of(result, page.getTotal()); | |||||
} | } | ||||
public String appIndexSave(PerformanceIndicatorAppIndexSaveDTO dto) { | public String appIndexSave(PerformanceIndicatorAppIndexSaveDTO dto) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
PerformanceAppraisalAppIndicator appIndicator = BeanUtil.copyProperties(dto, PerformanceAppraisalAppIndicator.class); | PerformanceAppraisalAppIndicator appIndicator = BeanUtil.copyProperties(dto, PerformanceAppraisalAppIndicator.class); | ||||
if(Objects.nonNull(dto.getId())){ | |||||
if (Objects.nonNull(dto.getId())) { | |||||
PerformanceAppraisalAppIndicator old = appIndicatorService.getById(dto.getId()); | PerformanceAppraisalAppIndicator old = appIndicatorService.getById(dto.getId()); | ||||
VUtils.isTrue(Objects.isNull(old)).throwMessage("该项目指标不存在!"); | |||||
Assert.notNull(old, "该项目指标不存在!"); | |||||
appIndicator.setId(old.getId()); | appIndicator.setId(old.getId()); | ||||
}else{ | |||||
} else { | |||||
appIndicator.setId(null); | appIndicator.setId(null); | ||||
appIndicator.setCreateOn(LocalDateTime.now()); | appIndicator.setCreateOn(LocalDateTime.now()); | ||||
appIndicator.setCreateBy(user.getUsername()); | appIndicator.setCreateBy(user.getUsername()); | ||||
} | } | ||||
appIndicator.setUpdateOn(LocalDateTime.now()); | appIndicator.setUpdateOn(LocalDateTime.now()); | ||||
appIndicator.setUpdateBy(user.getUsername()); | appIndicator.setUpdateBy(user.getUsername()); | ||||
if(appIndicatorService.saveOrUpdate(appIndicator)){ | |||||
if (appIndicatorService.saveOrUpdate(appIndicator)) { | |||||
return "指标新增成功"; | return "指标新增成功"; | ||||
} | } | ||||
return "指标新增失败"; | return "指标新增失败"; | ||||
@@ -548,7 +554,7 @@ public class IndicatorConfigManage { | |||||
public AppIndexVO appIndexDetail(Long id) { | public AppIndexVO appIndexDetail(Long id) { | ||||
PerformanceAppraisalAppIndicator appIndex = appIndicatorService.getById(id); | PerformanceAppraisalAppIndicator appIndex = appIndicatorService.getById(id); | ||||
if(Objects.isNull(appIndex)){ | |||||
if (Objects.isNull(appIndex)) { | |||||
return null; | return null; | ||||
} | } | ||||
return BeanUtil.copyProperties(appIndex, AppIndexVO.class); | return BeanUtil.copyProperties(appIndex, AppIndexVO.class); | ||||
@@ -556,9 +562,9 @@ public class IndicatorConfigManage { | |||||
public Boolean enOrDisAppIndex(Long appId, Boolean state) { | public Boolean enOrDisAppIndex(Long appId, Boolean state) { | ||||
PerformanceAppraisalAppIndicator appIndicator = appIndicatorService.getById(appId); | PerformanceAppraisalAppIndicator appIndicator = appIndicatorService.getById(appId); | ||||
if (Boolean.TRUE.equals(state)){ | |||||
if (Boolean.TRUE.equals(state)) { | |||||
appIndicator.setIsDisplay(Boolean.TRUE); | appIndicator.setIsDisplay(Boolean.TRUE); | ||||
}else { | |||||
} else { | |||||
appIndicator.setIsDisplay(Boolean.FALSE); | appIndicator.setIsDisplay(Boolean.FALSE); | ||||
} | } | ||||
return appIndicatorService.updateById(appIndicator); | return appIndicatorService.updateById(appIndicator); | ||||
@@ -4,40 +4,44 @@ import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.ExcelExportStyle; | import com.hz.pm.api.common.util.ExcelExportStyle; | ||||
import com.hz.pm.api.performance.constant.ProjectBizConst; | import com.hz.pm.api.performance.constant.ProjectBizConst; | ||||
import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | ||||
import com.hz.pm.api.performance.helper.TemplateDetailBuildHelper; | import com.hz.pm.api.performance.helper.TemplateDetailBuildHelper; | ||||
import com.hz.pm.api.performance.model.dto.SelfAppraisalScoreExportDTO; | |||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalInfoDTO; | import com.hz.pm.api.performance.model.dto.ProjectAppraisalInfoDTO; | ||||
import com.hz.pm.api.performance.model.dto.SelfAppraisalScoreExportDTO; | |||||
import com.hz.pm.api.performance.model.entity.*; | import com.hz.pm.api.performance.model.entity.*; | ||||
import com.hz.pm.api.performance.model.req.PerformanceAppraisalExportReq; | import com.hz.pm.api.performance.model.req.PerformanceAppraisalExportReq; | ||||
import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | ||||
import com.hz.pm.api.performance.model.vo.*; | |||||
import com.hz.pm.api.performance.model.vo.PerformanceAppraisalProjectVO; | |||||
import com.hz.pm.api.performance.model.vo.PerformanceAppraisalVO; | |||||
import com.hz.pm.api.performance.model.vo.ProjectAppraisalIndexDetailVO; | |||||
import com.hz.pm.api.performance.model.vo.ProjectTemplateDetailVO; | |||||
import com.hz.pm.api.performance.service.*; | import com.hz.pm.api.performance.service.*; | ||||
import com.hz.pm.api.performance.util.ExcelFillCellMergeStrategy; | import com.hz.pm.api.performance.util.ExcelFillCellMergeStrategy; | ||||
import com.hz.pm.api.performance.util.MultiColumnMergeStrategy; | import com.hz.pm.api.performance.util.MultiColumnMergeStrategy; | ||||
import com.hz.pm.api.portrait.model.entity.ProjectTag; | import com.hz.pm.api.portrait.model.entity.ProjectTag; | ||||
import com.hz.pm.api.portrait.service.IProjectTagService; | import com.hz.pm.api.portrait.service.IProjectTagService; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectStatusEnum; | 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.ProjectTypeNewEnum; | ||||
import com.hz.pm.api.projectlib.model.entity.Project; | |||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.ningdatech.basic.util.StrPool; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
@@ -48,7 +52,10 @@ import javax.servlet.http.HttpServletResponse; | |||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.*; | |||||
import java.util.List; | |||||
import java.util.Map; | |||||
import java.util.Objects; | |||||
import java.util.Set; | |||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
/** | /** | ||||
@@ -71,8 +78,10 @@ public class OrgSelfAppraisalManage { | |||||
private final IPerformanceIndicatorProjectTemplateDetailService indicatorProjectTemplateDetailService; | private final IPerformanceIndicatorProjectTemplateDetailService indicatorProjectTemplateDetailService; | ||||
private final IProjectTagService projectTagService; | private final IProjectTagService projectTagService; | ||||
private final IPerformanceAppraisalScoreInfoService performanceAppraisalScoreInfoService; | private final IPerformanceAppraisalScoreInfoService performanceAppraisalScoreInfoService; | ||||
/** | /** | ||||
* 绩效列表 | * 绩效列表 | ||||
* | |||||
* @param req | * @param req | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -80,51 +89,51 @@ public class OrgSelfAppraisalManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
//当前登录用户 单位code | //当前登录用户 单位code | ||||
String empPosUnitCode = user.getEmpPosUnitCode(); | |||||
String mhUnitId = user.getMhUnitIdStr(); | |||||
// 获取当前登录用户的角色列表,只有单位管理员才能查看该列表 | // 获取当前登录用户的角色列表,只有单位管理员才能查看该列表 | ||||
List<Role> userRoleList = user.getUserRoleList(); | List<Role> userRoleList = user.getUserRoleList(); | ||||
List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | ||||
Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class) | Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class) | ||||
.eq(Role::getName, RoleEnum.COMPANY_MANAGER.getDesc())); | .eq(Role::getName, RoleEnum.COMPANY_MANAGER.getDesc())); | ||||
if (Objects.isNull(role)){ | |||||
if (Objects.isNull(role)) { | |||||
throw new BizException("登录用户没有单位管理员角色!"); | throw new BizException("登录用户没有单位管理员角色!"); | ||||
} | } | ||||
// 登录用户不是单位管理员,不能查看本单位的自评计划列表 | // 登录用户不是单位管理员,不能查看本单位的自评计划列表 | ||||
if (!roleIdList.contains(role.getId())){ | |||||
if (!roleIdList.contains(role.getId())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
// 获取登录用户所在单位的所有已终验项目信息 | // 获取登录用户所在单位的所有已终验项目信息 | ||||
List<Project> projectLists = projectService.list(Wrappers.lambdaQuery(Project.class) | List<Project> projectLists = projectService.list(Wrappers.lambdaQuery(Project.class) | ||||
.eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()) | .eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()) | ||||
.eq(Project::getBuildOrgCode, empPosUnitCode)); | |||||
.eq(Project::getBuildOrgCode, mhUnitId)); | |||||
if(CollUtil.isEmpty(projectLists)){ | |||||
if (CollUtil.isEmpty(projectLists)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<Long> projectIds = projectLists.stream().map(Project::getId).collect(Collectors.toList()); | List<Long> projectIds = projectLists.stream().map(Project::getId).collect(Collectors.toList()); | ||||
// 获取添加过该单位项目的所有评价计划信息 | // 获取添加过该单位项目的所有评价计划信息 | ||||
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.in(PerformanceAppraisalProject::getProjectId, projectIds)); | .in(PerformanceAppraisalProject::getProjectId, projectIds)); | ||||
if(CollUtil.isEmpty(paps)){ | |||||
if (CollUtil.isEmpty(paps)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Set<Long> paIds = paps.stream().map(PerformanceAppraisalProject::getAppraisalId).collect(Collectors.toSet()); | Set<Long> paIds = paps.stream().map(PerformanceAppraisalProject::getAppraisalId).collect(Collectors.toSet()); | ||||
// 获取评价计划列表 | // 获取评价计划列表 | ||||
Page<PerformanceAppraisal> page = req.page(); | Page<PerformanceAppraisal> page = req.page(); | ||||
LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | LambdaQueryWrapper<PerformanceAppraisal> wrapper = Wrappers.lambdaQuery(PerformanceAppraisal.class) | ||||
.in(PerformanceAppraisal::getId,paIds) | |||||
.in(PerformanceAppraisal::getId, paIds) | |||||
.orderByDesc(PerformanceAppraisal::getUpdateOn); | .orderByDesc(PerformanceAppraisal::getUpdateOn); | ||||
performanceAppraisalService.page(page,wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
performanceAppraisalService.page(page, wrapper); | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<PerformanceAppraisalVO> res = page.getRecords().stream() | List<PerformanceAppraisalVO> res = page.getRecords().stream() | ||||
.map(p -> BeanUtil.copyProperties(p, PerformanceAppraisalVO.class)) | .map(p -> BeanUtil.copyProperties(p, PerformanceAppraisalVO.class)) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
public PageVo<PerformanceAppraisalProjectVO> pendingList(Long planId, PerformanceAppraisalListReq req) { | public PageVo<PerformanceAppraisalProjectVO> pendingList(Long planId, PerformanceAppraisalListReq req) { | ||||
@@ -135,11 +144,11 @@ public class OrgSelfAppraisalManage { | |||||
// 获取评价计划内已添加的待评价项目信息 | // 获取评价计划内已添加的待评价项目信息 | ||||
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId())).stream() | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId())).stream() | |||||
.filter(p -> Objects.isNull(p.getSelfAppraisalScoreTime())).collect(Collectors.toList()); | .filter(p -> Objects.isNull(p.getSelfAppraisalScoreTime())).collect(Collectors.toList()); | ||||
Map<Long, PerformanceAppraisalProject> papsMap = paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | Map<Long, PerformanceAppraisalProject> papsMap = paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | ||||
if(CollUtil.isEmpty(paps)){ | |||||
if (CollUtil.isEmpty(paps)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
@@ -149,19 +158,19 @@ public class OrgSelfAppraisalManage { | |||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | ||||
.in(Project::getProjectCode, projectCodes) | .in(Project::getProjectCode, projectCodes) | ||||
.eq(Project::getNewest, Boolean.TRUE) | .eq(Project::getNewest, Boolean.TRUE) | ||||
.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()),Project::getProjectName,req.getProjectName()); | |||||
projectService.page(page,wrapper); | |||||
.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
projectService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<PerformanceAppraisalProjectVO> res = page.getRecords().stream() | |||||
.map(p -> { | |||||
PerformanceAppraisalProjectVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalProjectVO.class); | |||||
List<PerformanceAppraisalProjectVO> res = page.getRecords().stream().map(p -> { | |||||
PerformanceAppraisalProjectVO vo = new PerformanceAppraisalProjectVO(); | |||||
BeanUtil.copyProperties(p, vo); | |||||
PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | ||||
BeanUtil.copyProperties(appraisalProject,vo); | |||||
BeanUtil.copyProperties(appraisalProject, vo); | |||||
vo.setProjectId(appraisalProject.getProjectId()); | vo.setProjectId(appraisalProject.getProjectId()); | ||||
vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | ||||
vo.setCanSelfAppraisal(checkCanSelfAppraisal(appraisalProject)); | vo.setCanSelfAppraisal(checkCanSelfAppraisal(appraisalProject)); | ||||
@@ -170,7 +179,7 @@ public class OrgSelfAppraisalManage { | |||||
}) | }) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
/** | /** | ||||
@@ -188,11 +197,11 @@ public class OrgSelfAppraisalManage { | |||||
// 获取评价计划内已添加的已评价项目信息 | // 获取评价计划内已添加的已评价项目信息 | ||||
List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | List<PerformanceAppraisalProject> paps = performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId())).stream() | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId())).stream() | |||||
.filter(p -> Objects.nonNull(p.getSelfAppraisalScoreTime())).collect(Collectors.toList()); | .filter(p -> Objects.nonNull(p.getSelfAppraisalScoreTime())).collect(Collectors.toList()); | ||||
Map<Long, PerformanceAppraisalProject> papsMap = paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | Map<Long, PerformanceAppraisalProject> papsMap = paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | ||||
if(CollUtil.isEmpty(paps)){ | |||||
if (CollUtil.isEmpty(paps)) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
@@ -202,18 +211,18 @@ public class OrgSelfAppraisalManage { | |||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | ||||
.in(Project::getProjectCode, projectCodes) | .in(Project::getProjectCode, projectCodes) | ||||
.eq(Project::getNewest, Boolean.TRUE) | .eq(Project::getNewest, Boolean.TRUE) | ||||
.eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()),Project::getProjectName,req.getProjectName()); | |||||
projectService.page(page,wrapper); | |||||
.eq(Project::getBuildOrgCode, user.getMhUnitIdStr()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
projectService.page(page, wrapper); | |||||
if(CollUtil.isEmpty(page.getRecords())){ | |||||
if (CollUtil.isEmpty(page.getRecords())) { | |||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
List<PerformanceAppraisalProjectVO> res = page.getRecords().stream() | List<PerformanceAppraisalProjectVO> res = page.getRecords().stream() | ||||
.map(p -> { | .map(p -> { | ||||
PerformanceAppraisalProjectVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalProjectVO.class); | PerformanceAppraisalProjectVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalProjectVO.class); | ||||
PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | ||||
BeanUtil.copyProperties(appraisalProject,vo); | |||||
BeanUtil.copyProperties(appraisalProject, vo); | |||||
vo.setProjectId(appraisalProject.getProjectId()); | vo.setProjectId(appraisalProject.getProjectId()); | ||||
vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | ||||
vo.setCanSelfAppraisal(checkCanSelfAppraisal(appraisalProject)); | vo.setCanSelfAppraisal(checkCanSelfAppraisal(appraisalProject)); | ||||
@@ -222,30 +231,27 @@ public class OrgSelfAppraisalManage { | |||||
}) | }) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
return PageVo.of(res,page.getTotal()); | |||||
return PageVo.of(res, page.getTotal()); | |||||
} | } | ||||
/** | /** | ||||
* 是否可以自评 | * 是否可以自评 | ||||
* | |||||
* @param appraisalProject | * @param appraisalProject | ||||
* @return | * @return | ||||
*/ | */ | ||||
private Boolean checkCanSelfAppraisal(PerformanceAppraisalProject appraisalProject) { | private Boolean checkCanSelfAppraisal(PerformanceAppraisalProject appraisalProject) { | ||||
// 在自评时间段内,且是首次自评(打分时间为空) | // 在自评时间段内,且是首次自评(打分时间为空) | ||||
if(LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalStart()) > 0 && | |||||
if (LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalStart()) > 0 && | |||||
LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalEnd()) < 0 && | LocalDateTime.now().compareTo(appraisalProject.getSelfAppraisalEnd()) < 0 && | ||||
Objects.isNull(appraisalProject.getSelfAppraisalScoreTime())){ | |||||
Objects.isNull(appraisalProject.getSelfAppraisalScoreTime())) { | |||||
return Boolean.TRUE; | return Boolean.TRUE; | ||||
} | } | ||||
return Boolean.FALSE; | return Boolean.FALSE; | ||||
} | } | ||||
public ProjectAppraisalIndexDetailVO getAppraisalTemplateDetail(String projectCode) { | public ProjectAppraisalIndexDetailVO getAppraisalTemplateDetail(String projectCode) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
ProjectAppraisalIndexDetailVO vo = new ProjectAppraisalIndexDetailVO(); | ProjectAppraisalIndexDetailVO vo = new ProjectAppraisalIndexDetailVO(); | ||||
// 根据项目编码获取最新版本的项目信息 | // 根据项目编码获取最新版本的项目信息 | ||||
Project project = projectService.getProjectByCode(projectCode); | Project project = projectService.getProjectByCode(projectCode); | ||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | ||||
@@ -256,7 +262,7 @@ public class OrgSelfAppraisalManage { | |||||
VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | ||||
// 根据项目code获取项目标签ID列表 | // 根据项目code获取项目标签ID列表 | ||||
List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | ||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | |||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | |||||
.map(ProjectTag::getTagId).collect(Collectors.toList()); | .map(ProjectTag::getTagId).collect(Collectors.toList()); | ||||
VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | ||||
@@ -264,25 +270,24 @@ public class OrgSelfAppraisalManage { | |||||
String projectTagIds = String.join(StrPool.COMMA, strIdList); | String projectTagIds = String.join(StrPool.COMMA, strIdList); | ||||
Integer amountRange = null; | Integer amountRange = null; | ||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0){ | |||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | ||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | } else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | ||||
approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) < 0) { | approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) < 0) { | ||||
amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | ||||
}else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0){ | |||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0) { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | ||||
} | } | ||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | ||||
.eq(PerformanceIndicatorProjectTemplate::getRegionCode, regionCode) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | .eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | .eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | ||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | .eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds,projectTagIds) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus,CommonEnum.YES.getCode()) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, projectTagIds) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | |||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | .orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | ||||
List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | ||||
VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | ||||
if (templates.size() > 1){ | |||||
if (templates.size() > 1) { | |||||
throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | ||||
} | } | ||||
PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | ||||
@@ -290,13 +295,13 @@ public class OrgSelfAppraisalManage { | |||||
// 获取模版绩效指标详情 | // 获取模版绩效指标详情 | ||||
List<PerformanceIndicatorProjectTemplateDetail> templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> templateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.FALSE)); | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.FALSE)); | |||||
// 获取模版附加绩效指标详情 | // 获取模版附加绩效指标详情 | ||||
List<PerformanceIndicatorProjectTemplateDetail> additionalTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> additionalTemplateDetails = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | .eq(PerformanceIndicatorProjectTemplateDetail::getTemplateId, projectTemplate.getId()) | ||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional,Boolean.TRUE)); | |||||
List<ProjectTemplateDetailVO> templateDetailVos = templateDetailBuildHelper.buildTemplateDetail(templateDetails,projectCode,vo); | |||||
List<ProjectTemplateDetailVO> additionalTemplateDetailVos = templateDetailBuildHelper.buildTemplateDetail(additionalTemplateDetails,projectCode,vo); | |||||
.eq(PerformanceIndicatorProjectTemplateDetail::getIsAdditional, Boolean.TRUE)); | |||||
List<ProjectTemplateDetailVO> templateDetailVos = templateDetailBuildHelper.buildTemplateDetail(templateDetails, projectCode, vo); | |||||
List<ProjectTemplateDetailVO> additionalTemplateDetailVos = templateDetailBuildHelper.buildTemplateDetail(additionalTemplateDetails, projectCode, vo); | |||||
vo.setProjectName(project.getProjectName()); | vo.setProjectName(project.getProjectName()); | ||||
vo.setBuildOrgName(project.getBuildOrgName()); | vo.setBuildOrgName(project.getBuildOrgName()); | ||||
vo.setProjectStatus(project.getStatus()); | vo.setProjectStatus(project.getStatus()); | ||||
@@ -310,8 +315,6 @@ public class OrgSelfAppraisalManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String submitSelfAppraisal(ProjectAppraisalDTO param) { | public String submitSelfAppraisal(ProjectAppraisalDTO param) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String username = userDetail.getUsername(); | |||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
Long appraisalProjectId = param.getAppraisalProjectId(); | Long appraisalProjectId = param.getAppraisalProjectId(); | ||||
String appraisalProjectCode = param.getAppraisalProjectCode(); | String appraisalProjectCode = param.getAppraisalProjectCode(); | ||||
@@ -320,12 +323,12 @@ public class OrgSelfAppraisalManage { | |||||
PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | .eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | ||||
.eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId) | .eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId) | ||||
.eq(PerformanceAppraisalProject::getProjectCode,appraisalProjectCode)); | |||||
if (Objects.isNull(appraisalProject)){ | |||||
.eq(PerformanceAppraisalProject::getProjectCode, appraisalProjectCode)); | |||||
if (Objects.isNull(appraisalProject)) { | |||||
throw new BizException("该项目已被移除评价计划,请返回上一页或者刷新重试!"); | throw new BizException("该项目已被移除评价计划,请返回上一页或者刷新重试!"); | ||||
} | } | ||||
// 根据项目模板详情ID保存自评得分、打分时间 | // 根据项目模板详情ID保存自评得分、打分时间 | ||||
if (CollUtil.isEmpty(appraisalInfoList)){ | |||||
if (CollUtil.isEmpty(appraisalInfoList)) { | |||||
throw new BizException("填写所有自评得分后才能提交!"); | throw new BizException("填写所有自评得分后才能提交!"); | ||||
} | } | ||||
List<Long> ids = appraisalInfoList.stream() | List<Long> ids = appraisalInfoList.stream() | ||||
@@ -334,7 +337,7 @@ public class OrgSelfAppraisalManage { | |||||
// 查出项目模版详情信息 | // 查出项目模版详情信息 | ||||
List<PerformanceIndicatorProjectTemplateDetail> detailList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> detailList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.in(PerformanceIndicatorProjectTemplateDetail::getId, ids)); | .in(PerformanceIndicatorProjectTemplateDetail::getId, ids)); | ||||
if (CollUtil.isEmpty(detailList)){ | |||||
if (CollUtil.isEmpty(detailList)) { | |||||
throw new BizException("评价指标不存在!"); | throw new BizException("评价指标不存在!"); | ||||
} | } | ||||
Map<Long, PerformanceIndicatorProjectTemplateDetail> detailMap = detailList.stream().collect(Collectors.toMap(PerformanceIndicatorProjectTemplateDetail::getId, d -> d)); | Map<Long, PerformanceIndicatorProjectTemplateDetail> detailMap = detailList.stream().collect(Collectors.toMap(PerformanceIndicatorProjectTemplateDetail::getId, d -> d)); | ||||
@@ -342,7 +345,7 @@ public class OrgSelfAppraisalManage { | |||||
PerformanceIndicatorProjectTemplateDetail templateDetail = detailMap.get(a.getProjectTemplateDetailId()); | PerformanceIndicatorProjectTemplateDetail templateDetail = detailMap.get(a.getProjectTemplateDetailId()); | ||||
BigDecimal score = a.getScore(); | BigDecimal score = a.getScore(); | ||||
BigDecimal indexScore = templateDetail.getIndexScore(); | BigDecimal indexScore = templateDetail.getIndexScore(); | ||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0){ | |||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0) { | |||||
throw new BizException("自评得分必须大于等于0且小于等于指标分值!"); | throw new BizException("自评得分必须大于等于0且小于等于指标分值!"); | ||||
} | } | ||||
// 保存自评分数信息 | // 保存自评分数信息 | ||||
@@ -353,17 +356,17 @@ public class OrgSelfAppraisalManage { | |||||
scoreInfo.setAppraisalType(AppraisalTypeEnum.SELF_APPRAISAL.getCode()); | scoreInfo.setAppraisalType(AppraisalTypeEnum.SELF_APPRAISAL.getCode()); | ||||
scoreInfo.setTemplateDetailId(templateDetail.getId()); | scoreInfo.setTemplateDetailId(templateDetail.getId()); | ||||
scoreInfo.setTemplateId(templateDetail.getTemplateId()); | scoreInfo.setTemplateId(templateDetail.getTemplateId()); | ||||
scoreInfo.setAppraisalEmployeeCode(employeeCode); | |||||
scoreInfo.setAppraisalEmployeeName(username); | |||||
scoreInfo.setAppraisalUserId(String.valueOf(userDetail.getUserId())); | |||||
scoreInfo.setAppraisalUserName(userDetail.getRealName()); | |||||
scoreInfo.setAppraisalId(appraisalId); | scoreInfo.setAppraisalId(appraisalId); | ||||
scoreInfo.setAppraisalProjectId(appraisalProjectId); | scoreInfo.setAppraisalProjectId(appraisalProjectId); | ||||
scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | ||||
scoreInfo.setCreateOn(LocalDateTime.now()); | scoreInfo.setCreateOn(LocalDateTime.now()); | ||||
scoreInfo.setCreateBy(username); | |||||
scoreInfo.setCreateBy(userDetail.getRealName()); | |||||
return scoreInfo; | return scoreInfo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
if (performanceAppraisalScoreInfoService.saveBatch(scoreInfos)){ | |||||
if (performanceAppraisalScoreInfoService.saveBatch(scoreInfos)) { | |||||
// 计算自评总分并保存 | // 计算自评总分并保存 | ||||
BigDecimal selfAppraisalTotalScore = appraisalInfoList.stream() | BigDecimal selfAppraisalTotalScore = appraisalInfoList.stream() | ||||
.map(ProjectAppraisalInfoDTO::getScore) | .map(ProjectAppraisalInfoDTO::getScore) | ||||
@@ -373,7 +376,7 @@ public class OrgSelfAppraisalManage { | |||||
appraisalProject.setSelfAppraisalScoreTime(LocalDateTime.now()); | appraisalProject.setSelfAppraisalScoreTime(LocalDateTime.now()); | ||||
appraisalProject.setIsCompleteSelfAppraisal(Boolean.TRUE); | appraisalProject.setIsCompleteSelfAppraisal(Boolean.TRUE); | ||||
appraisalProject.setUpdateOn(LocalDateTime.now()); | appraisalProject.setUpdateOn(LocalDateTime.now()); | ||||
appraisalProject.setUpdateBy(username); | |||||
appraisalProject.setUpdateBy(userDetail.getRealName()); | |||||
performanceAppraisalProjectService.updateById(appraisalProject); | performanceAppraisalProjectService.updateById(appraisalProject); | ||||
return "提交成功"; | return "提交成功"; | ||||
} | } | ||||
@@ -381,48 +384,41 @@ public class OrgSelfAppraisalManage { | |||||
} | } | ||||
public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
String projectCode = param.getProjectCode(); | String projectCode = param.getProjectCode(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
// 根据项目编码获取最新版本的项目信息 | // 根据项目编码获取最新版本的项目信息 | ||||
Project project = projectService.getProjectByCode(projectCode); | Project project = projectService.getProjectByCode(projectCode); | ||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | |||||
Assert.notNull(project, "项目不存在!"); | |||||
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | ||||
String projectType = project.getProjectType(); | String projectType = project.getProjectType(); | ||||
Integer projectYear = project.getProjectYear(); | Integer projectYear = project.getProjectYear(); | ||||
BigDecimal approvalAmount = project.getApprovalAmount(); | BigDecimal approvalAmount = project.getApprovalAmount(); | ||||
VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | |||||
Assert.notNull(approvalAmount, "未获取到该项目的立项批复金额"); | |||||
// 根据项目code获取项目标签ID列表 | // 根据项目code获取项目标签ID列表 | ||||
List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
String tagIdStr = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | .eq(ProjectTag::getProjectCode, projectCode)).stream() | ||||
.map(ProjectTag::getTagId).collect(Collectors.toList()); | |||||
VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
List<String> strIdList = tagIdList.stream().map(String::valueOf).collect(Collectors.toList()); | |||||
String projectTagIds = String.join(StrPool.COMMA, strIdList); | |||||
.map(w -> w.getTagId().toString()).collect(Collectors.joining(",")); | |||||
Assert.notEmpty(tagIdStr, "当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
Integer amountRange = null; | Integer amountRange = null; | ||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0){ | |||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | ||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | } else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | ||||
approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) < 0) { | approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) < 0) { | ||||
amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | ||||
}else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0){ | |||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0) { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | ||||
} | } | ||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | ||||
.eq(PerformanceIndicatorProjectTemplate::getRegionCode, regionCode) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | .eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | .eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | ||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | .eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds,projectTagIds) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus,CommonEnum.YES.getCode()) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, tagIdStr) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | |||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | .orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | ||||
List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | ||||
VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | ||||
if (templates.size() > 1){ | |||||
if (templates.size() > 1) { | |||||
throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | ||||
} | } | ||||
PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | ||||
@@ -442,7 +438,7 @@ public class OrgSelfAppraisalManage { | |||||
.orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalScoreInfo::getTemplateDetailId)); | .orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalScoreInfo::getTemplateDetailId)); | ||||
Map<Long, PerformanceAppraisalScoreInfo> scoreInfoMap = scoreInfoList.stream() | Map<Long, PerformanceAppraisalScoreInfo> scoreInfoMap = scoreInfoList.stream() | ||||
.collect(Collectors.toMap(PerformanceAppraisalScoreInfo::getTemplateDetailId, p -> p)); | .collect(Collectors.toMap(PerformanceAppraisalScoreInfo::getTemplateDetailId, p -> p)); | ||||
// 筛选出所有打分的三级指标模板详情ID | // 筛选出所有打分的三级指标模板详情ID | ||||
for (PerformanceAppraisalScoreInfo scoreInfo : scoreInfoList) { | for (PerformanceAppraisalScoreInfo scoreInfo : scoreInfoList) { | ||||
SelfAppraisalScoreExportDTO thirdDto = new SelfAppraisalScoreExportDTO(); | SelfAppraisalScoreExportDTO thirdDto = new SelfAppraisalScoreExportDTO(); | ||||
@@ -471,7 +467,7 @@ public class OrgSelfAppraisalManage { | |||||
thirdDto.setSecondIndexName(secondTemplateDetail.getName()); | thirdDto.setSecondIndexName(secondTemplateDetail.getName()); | ||||
// 一级指标名称 | // 一级指标名称 | ||||
Long firstId = secondTemplateDetail.getParentId(); | Long firstId = secondTemplateDetail.getParentId(); | ||||
if (Objects.nonNull(firstId)){ | |||||
if (Objects.nonNull(firstId)) { | |||||
PerformanceIndicatorProjectTemplateDetail firstTemplateDetail = templateDetailMap.get(firstId); | PerformanceIndicatorProjectTemplateDetail firstTemplateDetail = templateDetailMap.get(firstId); | ||||
if (Objects.nonNull(firstTemplateDetail)) { | if (Objects.nonNull(firstTemplateDetail)) { | ||||
thirdDto.setFirstIndexName(firstTemplateDetail.getName()); | thirdDto.setFirstIndexName(firstTemplateDetail.getName()); | ||||
@@ -481,7 +477,7 @@ public class OrgSelfAppraisalManage { | |||||
} | } | ||||
if (Boolean.FALSE.equals(thirdTemplateDetail.getIsAdditional())) { | if (Boolean.FALSE.equals(thirdTemplateDetail.getIsAdditional())) { | ||||
exportDataList.add(thirdDto); | exportDataList.add(thirdDto); | ||||
}else { | |||||
} else { | |||||
exportAdditionalDataList.add(thirdDto); | exportAdditionalDataList.add(thirdDto); | ||||
} | } | ||||
} | } | ||||
@@ -496,14 +492,13 @@ public class OrgSelfAppraisalManage { | |||||
try { | try { | ||||
EasyExcel.write(response.getOutputStream(), SelfAppraisalScoreExportDTO.class) | EasyExcel.write(response.getOutputStream(), SelfAppraisalScoreExportDTO.class) | ||||
.autoCloseStream(false) | .autoCloseStream(false) | ||||
.registerWriteHandler(new MultiColumnMergeStrategy(exportDataList.size(),0,1)) | |||||
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex,mergeColumnIndex)) | |||||
.registerWriteHandler(new MultiColumnMergeStrategy(exportDataList.size(), 0, 1)) | |||||
.registerWriteHandler(new ExcelFillCellMergeStrategy(mergeRowIndex, mergeColumnIndex)) | |||||
.registerWriteHandler(ExcelExportStyle.formalStyle()) | .registerWriteHandler(ExcelExportStyle.formalStyle()) | ||||
.sheet(fileName) | .sheet(fileName) | ||||
.doWrite(exportDataList); | .doWrite(exportDataList); | ||||
} catch (IOException e) { | } catch (IOException e) { | ||||
throw new BizException(e); | throw new BizException(e); | ||||
} | } | ||||
} | } | ||||
} | } |
@@ -7,6 +7,7 @@ import cn.hutool.core.util.CharsetUtil; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.alibaba.excel.write.builder.ExcelWriterBuilder; | import com.alibaba.excel.write.builder.ExcelWriterBuilder; | ||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
@@ -25,8 +26,8 @@ import com.hz.pm.api.performance.service.*; | |||||
import com.hz.pm.api.performance.util.*; | import com.hz.pm.api.performance.util.*; | ||||
import com.hz.pm.api.portrait.model.entity.ProjectTag; | import com.hz.pm.api.portrait.model.entity.ProjectTag; | ||||
import com.hz.pm.api.portrait.service.IProjectTagService; | import com.hz.pm.api.portrait.service.IProjectTagService; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
@@ -115,10 +116,7 @@ public class ReAppraisalManage { | |||||
} else { | } else { | ||||
empCodeList.add(reAppraisalUsers); | empCodeList.add(reAppraisalUsers); | ||||
} | } | ||||
if (empCodeList.contains(employeeCode)) { | |||||
return true; | |||||
} | |||||
return false; | |||||
return empCodeList.contains(employeeCode); | |||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
// 当前登录复评员用户,没有参加评价计划 | // 当前登录复评员用户,没有参加评价计划 | ||||
if (CollUtil.isEmpty(groupList)) { | if (CollUtil.isEmpty(groupList)) { | ||||
@@ -150,12 +148,12 @@ public class ReAppraisalManage { | |||||
/** | /** | ||||
* 是否可以复评 | * 是否可以复评 | ||||
* | * | ||||
* @param employeeCode | |||||
* @param projectCode | |||||
* @param appraisalId | |||||
* @return | |||||
* @param userId \ | |||||
* @param projectCode \ | |||||
* @param appraisalId \ | |||||
* @return \ | |||||
*/ | */ | ||||
private Boolean checkCanReAppraisal(String employeeCode, String projectCode, Long appraisalId) { | |||||
private Boolean checkCanReAppraisal(String userId, String projectCode, Long appraisalId) { | |||||
// 首次复评(复评打分时间为空) | // 首次复评(复评打分时间为空) | ||||
// 从绩效评价打分信息表中查询打分类型为复评、打分人员为当前登录复评用户的打分信息 | // 从绩效评价打分信息表中查询打分类型为复评、打分人员为当前登录复评用户的打分信息 | ||||
// 如果没有相关的打分信息,说明是当前登录复评用户是首次复评 | // 如果没有相关的打分信息,说明是当前登录复评用户是首次复评 | ||||
@@ -163,7 +161,7 @@ public class ReAppraisalManage { | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode()) | .eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode()) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | .eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | .eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalEmployeeCode, employeeCode)); | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalUserId, userId)); | |||||
if (CollUtil.isEmpty(scoreInfos)) { | if (CollUtil.isEmpty(scoreInfos)) { | ||||
return true; | return true; | ||||
} | } | ||||
@@ -230,7 +228,7 @@ public class ReAppraisalManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String submitReAppraisal(ProjectAppraisalDTO param) { | public String submitReAppraisal(ProjectAppraisalDTO param) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String userIdStr = String.valueOf(userDetail.getMhUserId()); | |||||
String username = userDetail.getUsername(); | String username = userDetail.getUsername(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
Long appraisalProjectId = param.getAppraisalProjectId(); | Long appraisalProjectId = param.getAppraisalProjectId(); | ||||
@@ -270,8 +268,8 @@ public class ReAppraisalManage { | |||||
scoreInfo.setAppraisalType(AppraisalTypeEnum.RE_APPRAISAL.getCode()); | scoreInfo.setAppraisalType(AppraisalTypeEnum.RE_APPRAISAL.getCode()); | ||||
scoreInfo.setTemplateDetailId(templateDetail.getId()); | scoreInfo.setTemplateDetailId(templateDetail.getId()); | ||||
scoreInfo.setTemplateId(templateDetail.getTemplateId()); | scoreInfo.setTemplateId(templateDetail.getTemplateId()); | ||||
scoreInfo.setAppraisalEmployeeCode(employeeCode); | |||||
scoreInfo.setAppraisalEmployeeName(username); | |||||
scoreInfo.setAppraisalUserId(userIdStr); | |||||
scoreInfo.setAppraisalUserName(username); | |||||
scoreInfo.setAppraisalId(appraisalId); | scoreInfo.setAppraisalId(appraisalId); | ||||
scoreInfo.setAppraisalProjectId(appraisalProjectId); | scoreInfo.setAppraisalProjectId(appraisalProjectId); | ||||
scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | ||||
@@ -317,7 +315,7 @@ public class ReAppraisalManage { | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode())); | .eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode())); | ||||
// 判断打分人员是否为分组内的复评人员 | // 判断打分人员是否为分组内的复评人员 | ||||
if (CollUtil.isNotEmpty(scoreInfoList)) { | if (CollUtil.isNotEmpty(scoreInfoList)) { | ||||
Set<String> users = scoreInfoList.stream().map(PerformanceAppraisalScoreInfo::getAppraisalEmployeeCode).collect(Collectors.toSet()); | |||||
Set<String> users = scoreInfoList.stream().map(PerformanceAppraisalScoreInfo::getAppraisalUserId).collect(Collectors.toSet()); | |||||
if (CollUtil.isNotEmpty(users)) { | if (CollUtil.isNotEmpty(users)) { | ||||
String reAppraisalUsers = group.getReAppraisalUsers(); | String reAppraisalUsers = group.getReAppraisalUsers(); | ||||
String join = String.join(StrPool.COMMA, users); | String join = String.join(StrPool.COMMA, users); | ||||
@@ -330,27 +328,22 @@ public class ReAppraisalManage { | |||||
} | } | ||||
public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
String projectCode = param.getProjectCode(); | String projectCode = param.getProjectCode(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
// 根据项目编码获取最新版本的项目信息 | // 根据项目编码获取最新版本的项目信息 | ||||
Project project = projectService.getProjectByCode(projectCode); | Project project = projectService.getProjectByCode(projectCode); | ||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | |||||
Assert.notNull(project, "项目不存在!"); | |||||
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | ||||
String projectType = project.getProjectType(); | String projectType = project.getProjectType(); | ||||
Integer projectYear = project.getProjectYear(); | Integer projectYear = project.getProjectYear(); | ||||
BigDecimal approvalAmount = project.getApprovalAmount(); | BigDecimal approvalAmount = project.getApprovalAmount(); | ||||
VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | |||||
Assert.notNull(approvalAmount, "未获取到该项目的立项批复金额"); | |||||
// 根据项目code获取项目标签ID列表 | // 根据项目code获取项目标签ID列表 | ||||
List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
String tagIdStr = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | .eq(ProjectTag::getProjectCode, projectCode)).stream() | ||||
.map(ProjectTag::getTagId).collect(Collectors.toList()); | |||||
VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
List<String> strIdList = tagIdList.stream().map(String::valueOf).collect(Collectors.toList()); | |||||
String projectTagIds = String.join(StrPool.COMMA, strIdList); | |||||
.map(w -> w.getTagId().toString()).collect(Collectors.joining(",")); | |||||
Assert.notEmpty(tagIdStr, "当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
Integer amountRange = null; | Integer amountRange = null; | ||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | ||||
@@ -362,15 +355,14 @@ public class ReAppraisalManage { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | ||||
} | } | ||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | ||||
.eq(PerformanceIndicatorProjectTemplate::getRegionCode, regionCode) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | .eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | .eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | ||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | .eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, projectTagIds) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, tagIdStr) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | .eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | ||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | .orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | ||||
List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | ||||
VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | |||||
Assert.notEmpty(templates, "该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | |||||
if (templates.size() > 1) { | if (templates.size() > 1) { | ||||
throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | ||||
} | } | ||||
@@ -398,7 +390,7 @@ public class ReAppraisalManage { | |||||
.filter(s -> AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(s.getAppraisalType())) | .filter(s -> AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(s.getAppraisalType())) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
List<String> reUserList = reScoreInfoList.stream() | List<String> reUserList = reScoreInfoList.stream() | ||||
.map(PerformanceAppraisalScoreInfo::getAppraisalEmployeeName) | |||||
.map(PerformanceAppraisalScoreInfo::getAppraisalUserName) | |||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
// 筛选出所有打分的三级指标模板详情ID | // 筛选出所有打分的三级指标模板详情ID | ||||
@@ -434,8 +426,8 @@ public class ReAppraisalManage { | |||||
scoreMap.put(ProjectBizConst.SELF_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | scoreMap.put(ProjectBizConst.SELF_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | ||||
scoreMap.put(ProjectBizConst.SELF_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | scoreMap.put(ProjectBizConst.SELF_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | ||||
} else if (AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | } else if (AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | ||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.RE_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.RE_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.RE_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.RE_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
} | } | ||||
if (Boolean.TRUE.equals(thirdTemplateDetail.getIsAdditional())) { | if (Boolean.TRUE.equals(thirdTemplateDetail.getIsAdditional())) { | ||||
@@ -456,21 +448,21 @@ public class ReAppraisalManage { | |||||
// 需要从第几行开始合并 | // 需要从第几行开始合并 | ||||
int mergeRowIndex = 2; | int mergeRowIndex = 2; | ||||
List<ExcelHead> headList = Lists.newArrayList(); | |||||
headList.add(new ExcelHead(ProjectBizConst.FIRST_INDEX_NAME, ProjectBizConst.FIRST_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SECOND_INDEX_NAME, ProjectBizConst.SECOND_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.THIRD_INDEX_NAME, ProjectBizConst.THIRD_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.INDEX_SCORE, ProjectBizConst.INDEX_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.INDEX_DETAIL, ProjectBizConst.INDEX_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.GRADE_DETAIL, ProjectBizConst.GRADE_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SUPPORT_MATERIAL, ProjectBizConst.SUPPORT_MATERIAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SELF_APPRAISAL_BASIS, ProjectBizConst.SELF_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SELF_APPRAISAL_SCORE, ProjectBizConst.SELF_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
List<ExcelHead<Object>> headList = Lists.newArrayList(); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.FIRST_INDEX_NAME, ProjectBizConst.FIRST_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SECOND_INDEX_NAME, ProjectBizConst.SECOND_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.THIRD_INDEX_NAME, ProjectBizConst.THIRD_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.INDEX_SCORE, ProjectBizConst.INDEX_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.INDEX_DETAIL, ProjectBizConst.INDEX_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.GRADE_DETAIL, ProjectBizConst.GRADE_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SUPPORT_MATERIAL, ProjectBizConst.SUPPORT_MATERIAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SELF_APPRAISAL_BASIS, ProjectBizConst.SELF_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SELF_APPRAISAL_SCORE, ProjectBizConst.SELF_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
for (String reUser : reUserList) { | for (String reUser : reUserList) { | ||||
headList.add(new ExcelHead(reUser + ProjectBizConst.RE_APPRAISAL_BASIS, ProjectBizConst.RE_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(reUser + ProjectBizConst.RE_APPRAISAL_SCORE, ProjectBizConst.RE_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(reUser + ProjectBizConst.RE_APPRAISAL_BASIS, ProjectBizConst.RE_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(reUser + ProjectBizConst.RE_APPRAISAL_SCORE, ProjectBizConst.RE_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
} | } | ||||
headList.add(new ExcelHead(ProjectBizConst.IS_ADDITIONAL, ProjectBizConst.IS_ADDITIONAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.IS_ADDITIONAL, ProjectBizConst.IS_ADDITIONAL_TITLE, StrPool.EMPTY)); | |||||
// 数据导出处理函数 | // 数据导出处理函数 | ||||
try { | try { | ||||
@@ -1,52 +1,50 @@ | |||||
package com.hz.pm.api.performance.manage; | package com.hz.pm.api.performance.manage; | ||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | |||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import cn.hutool.core.text.StrPool; | import cn.hutool.core.text.StrPool; | ||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | |||||
import com.hz.pm.api.performance.enumration.RectifyAuditEnum; | |||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalInfoDTO; | |||||
import com.hz.pm.api.performance.model.entity.*; | |||||
import com.hz.pm.api.performance.service.*; | |||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import com.google.common.collect.Lists; | |||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | |||||
import com.hz.pm.api.performance.enumration.RectifyAuditEnum; | |||||
import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | ||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalInfoDTO; | |||||
import com.hz.pm.api.performance.model.entity.*; | |||||
import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | import com.hz.pm.api.performance.model.req.PerformanceAppraisalListReq; | ||||
import com.hz.pm.api.performance.model.vo.PerformanceAppraisalProjectVO; | import com.hz.pm.api.performance.model.vo.PerformanceAppraisalProjectVO; | ||||
import com.hz.pm.api.performance.model.vo.PerformanceAppraisalVO; | import com.hz.pm.api.performance.model.vo.PerformanceAppraisalVO; | ||||
import com.hz.pm.api.performance.service.*; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
import com.hz.pm.api.user.model.enumeration.RoleEnum; | import com.hz.pm.api.user.model.enumeration.RoleEnum; | ||||
import com.hz.pm.api.user.security.model.UserInfoDetails; | import com.hz.pm.api.user.security.model.UserInfoDetails; | ||||
import com.hz.pm.api.user.util.LoginUserUtil; | import com.hz.pm.api.user.util.LoginUserUtil; | ||||
import cn.hutool.core.bean.BeanUtil; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.ningdatech.basic.exception.BizException; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.basic.model.PageVo; | |||||
import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.apache.commons.lang3.StringUtils; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.transaction.annotation.Transactional; | |||||
import java.math.BigDecimal; | |||||
import java.time.LocalDateTime; | |||||
import java.util.*; | |||||
import java.util.stream.Collectors; | |||||
/** | /** | ||||
* RectifyAuditManage | * RectifyAuditManage | ||||
* | |||||
* @return | |||||
* | |||||
* @author CMM | * @author CMM | ||||
* @return | |||||
* @since 2023/08/12 17:36 | * @since 2023/08/12 17:36 | ||||
*/ | */ | ||||
@Component | @Component | ||||
@@ -62,9 +60,10 @@ public class RectifyAuditManage { | |||||
private final IPerformanceAppraisalProjectGroupService groupService; | private final IPerformanceAppraisalProjectGroupService groupService; | ||||
private final IPerformanceIndicatorProjectTemplateDetailService indicatorProjectTemplateDetailService; | private final IPerformanceIndicatorProjectTemplateDetailService indicatorProjectTemplateDetailService; | ||||
private final IPerformanceAppraisalScoreInfoService performanceAppraisalScoreInfoService; | private final IPerformanceAppraisalScoreInfoService performanceAppraisalScoreInfoService; | ||||
/** | /** | ||||
* 绩效列表 | * 绩效列表 | ||||
* | |||||
* | |||||
* @param req | * @param req | ||||
* @return | * @return | ||||
*/ | */ | ||||
@@ -163,9 +162,9 @@ public class RectifyAuditManage { | |||||
// 因为一个核查用户只能出现在一个评价计划中的一个分组中,所以根据评价计划ID和核查组长信息可以确定分组内项目信息 | // 因为一个核查用户只能出现在一个评价计划中的一个分组中,所以根据评价计划ID和核查组长信息可以确定分组内项目信息 | ||||
PerformanceAppraisalProjectGroup projectGroup = | PerformanceAppraisalProjectGroup projectGroup = | ||||
groupService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalProjectGroup::getVerifyLeader, employeeCode)); | |||||
groupService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalProjectGroup::getVerifyLeader, employeeCode)); | |||||
// 当前登录专家没有为核查组长的绩效分组信息 | // 当前登录专家没有为核查组长的绩效分组信息 | ||||
if (Objects.isNull(projectGroup)) { | if (Objects.isNull(projectGroup)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
@@ -180,25 +179,25 @@ public class RectifyAuditManage { | |||||
} | } | ||||
// 获取评价计划内已添加的核查组长为当前登录专家用户的待整改审核项目信息 | // 获取评价计划内已添加的核查组长为当前登录专家用户的待整改审核项目信息 | ||||
List<PerformanceAppraisalProject> paps = | List<PerformanceAppraisalProject> paps = | ||||
performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId()) | |||||
.in(PerformanceAppraisalProject::getProjectCode, codes) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE) | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode())); | |||||
performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId()) | |||||
.in(PerformanceAppraisalProject::getProjectCode, codes) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE) | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode())); | |||||
if (CollUtil.isEmpty(paps)) { | if (CollUtil.isEmpty(paps)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Map<Long, PerformanceAppraisalProject> papsMap = | Map<Long, PerformanceAppraisalProject> papsMap = | ||||
paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
// 获取本单位在当前评价计划内的项目 | // 获取本单位在当前评价计划内的项目 | ||||
Set<String> projectCodes = | Set<String> projectCodes = | ||||
paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | |||||
paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | |||||
Page<Project> page = req.page(); | Page<Project> page = req.page(); | ||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | ||||
.in(Project::getProjectCode, projectCodes).eq(Project::getNewest, Boolean.TRUE) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
.in(Project::getProjectCode, projectCodes).eq(Project::getNewest, Boolean.TRUE) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
projectService.page(page, wrapper); | projectService.page(page, wrapper); | ||||
if (CollUtil.isEmpty(page.getRecords())) { | if (CollUtil.isEmpty(page.getRecords())) { | ||||
@@ -231,9 +230,9 @@ public class RectifyAuditManage { | |||||
// 因为一个核查用户只能出现在一个评价计划中的一个分组中,所以根据评价计划ID和核查组长信息可以确定分组内项目信息 | // 因为一个核查用户只能出现在一个评价计划中的一个分组中,所以根据评价计划ID和核查组长信息可以确定分组内项目信息 | ||||
PerformanceAppraisalProjectGroup projectGroup = | PerformanceAppraisalProjectGroup projectGroup = | ||||
groupService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalProjectGroup::getVerifyLeader, employeeCode)); | |||||
groupService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProjectGroup.class) | |||||
.eq(PerformanceAppraisalProjectGroup::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalProjectGroup::getVerifyLeader, employeeCode)); | |||||
// 当前登录专家没有为核查组长的绩效分组信息 | // 当前登录专家没有为核查组长的绩效分组信息 | ||||
if (Objects.isNull(projectGroup)) { | if (Objects.isNull(projectGroup)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
@@ -248,28 +247,28 @@ public class RectifyAuditManage { | |||||
} | } | ||||
// 获取评价计划内已添加的核查组长为当前登录专家用户的已整改审核项目信息 | // 获取评价计划内已添加的核查组长为当前登录专家用户的已整改审核项目信息 | ||||
List< | List< | ||||
PerformanceAppraisalProject> paps = | |||||
PerformanceAppraisalProject> paps = | |||||
performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | performanceAppraisalProjectService.list(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId()) | |||||
.in(PerformanceAppraisalProject::getProjectCode, codes) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE) | |||||
.and(wp -> wp | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.NOT_APPROVED.getCode()) | |||||
.or().eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode()))); | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, plan.getId()) | |||||
.in(PerformanceAppraisalProject::getProjectCode, codes) | |||||
.eq(PerformanceAppraisalProject::getIsRectify, Boolean.TRUE) | |||||
.and(wp -> wp | |||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.NOT_APPROVED.getCode()) | |||||
.or().eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode()))); | |||||
if (CollUtil.isEmpty(paps)) { | if (CollUtil.isEmpty(paps)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Map<Long, PerformanceAppraisalProject> papsMap = | Map<Long, PerformanceAppraisalProject> papsMap = | ||||
paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
// 获取评价计划内的项目 | // 获取评价计划内的项目 | ||||
Set<String> projectCodes = | Set<String> projectCodes = | ||||
paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | |||||
paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | |||||
Page<Project> page = req.page(); | Page<Project> page = req.page(); | ||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | ||||
.in(Project::getProjectCode, projectCodes).eq(Project::getNewest, Boolean.TRUE) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
.in(Project::getProjectCode, projectCodes).eq(Project::getNewest, Boolean.TRUE) | |||||
.like(StringUtils.isNotBlank(req.getBuildOrgName()), Project::getBuildOrgName, req.getBuildOrgName()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
projectService.page(page, wrapper); | projectService.page(page, wrapper); | ||||
if (CollUtil.isEmpty(page.getRecords())) { | if (CollUtil.isEmpty(page.getRecords())) { | ||||
@@ -296,7 +295,7 @@ public class RectifyAuditManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String submit(ProjectAppraisalDTO param) { | public String submit(ProjectAppraisalDTO param) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String userIdStr = String.valueOf(userDetail.getUserId()); | |||||
String username = userDetail.getUsername(); | String username = userDetail.getUsername(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
Long appraisalProjectId = param.getAppraisalProjectId(); | Long appraisalProjectId = param.getAppraisalProjectId(); | ||||
@@ -305,13 +304,11 @@ public class RectifyAuditManage { | |||||
String rectifyAuditOpinion = param.getRectifyAuditOpinion(); | String rectifyAuditOpinion = param.getRectifyAuditOpinion(); | ||||
String rectifyAuditAppendix = param.getRectifyAuditAppendix(); | String rectifyAuditAppendix = param.getRectifyAuditAppendix(); | ||||
List<ProjectAppraisalInfoDTO> appraisalInfoList = param.getAppraisalInfoList(); | List<ProjectAppraisalInfoDTO> appraisalInfoList = param.getAppraisalInfoList(); | ||||
Long groupId = param.getGroupId(); | |||||
PerformanceAppraisalProjectGroup group = groupService.getById(groupId); | |||||
// 获取评价项目 | // 获取评价项目 | ||||
PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | ||||
.eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | .eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | ||||
.eq(PerformanceAppraisalProject::getProjectCode,appraisalProjectCode) | |||||
.eq(PerformanceAppraisalProject::getProjectCode, appraisalProjectCode) | |||||
.eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId)); | .eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId)); | ||||
List<Long> ids = appraisalInfoList.stream() | List<Long> ids = appraisalInfoList.stream() | ||||
@@ -320,7 +317,7 @@ public class RectifyAuditManage { | |||||
// 查出项目模版详情信息 | // 查出项目模版详情信息 | ||||
List<PerformanceIndicatorProjectTemplateDetail> detailList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | List<PerformanceIndicatorProjectTemplateDetail> detailList = indicatorProjectTemplateDetailService.list(Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplateDetail.class) | ||||
.in(PerformanceIndicatorProjectTemplateDetail::getId, ids)); | .in(PerformanceIndicatorProjectTemplateDetail::getId, ids)); | ||||
if (CollUtil.isEmpty(detailList)){ | |||||
if (CollUtil.isEmpty(detailList)) { | |||||
throw new BizException("评价指标不存在!"); | throw new BizException("评价指标不存在!"); | ||||
} | } | ||||
Map<Long, PerformanceIndicatorProjectTemplateDetail> detailMap = detailList.stream().collect(Collectors.toMap(PerformanceIndicatorProjectTemplateDetail::getId, d -> d)); | Map<Long, PerformanceIndicatorProjectTemplateDetail> detailMap = detailList.stream().collect(Collectors.toMap(PerformanceIndicatorProjectTemplateDetail::getId, d -> d)); | ||||
@@ -328,7 +325,7 @@ public class RectifyAuditManage { | |||||
PerformanceIndicatorProjectTemplateDetail templateDetail = detailMap.get(a.getProjectTemplateDetailId()); | PerformanceIndicatorProjectTemplateDetail templateDetail = detailMap.get(a.getProjectTemplateDetailId()); | ||||
BigDecimal score = a.getScore(); | BigDecimal score = a.getScore(); | ||||
BigDecimal indexScore = templateDetail.getIndexScore(); | BigDecimal indexScore = templateDetail.getIndexScore(); | ||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0){ | |||||
if (score.compareTo(indexScore) > 0 || score.compareTo(BigDecimal.ZERO) < 0) { | |||||
throw new BizException("核查审核得分必须大于等于0且小于等于指标分值!"); | throw new BizException("核查审核得分必须大于等于0且小于等于指标分值!"); | ||||
} | } | ||||
// 保存核查分数信息 | // 保存核查分数信息 | ||||
@@ -339,8 +336,8 @@ public class RectifyAuditManage { | |||||
scoreInfo.setAppraisalType(AppraisalTypeEnum.EXPERT_RECTIFY_AUDIT.getCode()); | scoreInfo.setAppraisalType(AppraisalTypeEnum.EXPERT_RECTIFY_AUDIT.getCode()); | ||||
scoreInfo.setTemplateDetailId(templateDetail.getId()); | scoreInfo.setTemplateDetailId(templateDetail.getId()); | ||||
scoreInfo.setTemplateId(templateDetail.getTemplateId()); | scoreInfo.setTemplateId(templateDetail.getTemplateId()); | ||||
scoreInfo.setAppraisalEmployeeCode(employeeCode); | |||||
scoreInfo.setAppraisalEmployeeName(username); | |||||
scoreInfo.setAppraisalUserId(userIdStr); | |||||
scoreInfo.setAppraisalUserName(username); | |||||
scoreInfo.setAppraisalId(appraisalId); | scoreInfo.setAppraisalId(appraisalId); | ||||
scoreInfo.setAppraisalProjectId(appraisalProjectId); | scoreInfo.setAppraisalProjectId(appraisalProjectId); | ||||
scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | ||||
@@ -349,7 +346,7 @@ public class RectifyAuditManage { | |||||
return scoreInfo; | return scoreInfo; | ||||
}).collect(Collectors.toList()); | }).collect(Collectors.toList()); | ||||
if (performanceAppraisalScoreInfoService.saveBatch(scoreInfos)){ | |||||
if (performanceAppraisalScoreInfoService.saveBatch(scoreInfos)) { | |||||
// 计算核查总分并保存 | // 计算核查总分并保存 | ||||
BigDecimal rectifyTotalScore = appraisalInfoList.stream() | BigDecimal rectifyTotalScore = appraisalInfoList.stream() | ||||
.map(ProjectAppraisalInfoDTO::getScore) | .map(ProjectAppraisalInfoDTO::getScore) | ||||
@@ -2,10 +2,13 @@ package com.hz.pm.api.performance.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Assert; | |||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.hz.pm.api.common.helper.UserInfoHelper; | import com.hz.pm.api.common.helper.UserInfoHelper; | ||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | ||||
import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | import com.hz.pm.api.performance.model.dto.ProjectAppraisalDTO; | ||||
import com.hz.pm.api.performance.model.entity.PerformanceAppraisal; | import com.hz.pm.api.performance.model.entity.PerformanceAppraisal; | ||||
@@ -70,12 +73,12 @@ public class RectifyManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
// 当前登录用户 单位code | // 当前登录用户 单位code | ||||
String empPosUnitCode = user.getEmpPosUnitCode(); | |||||
String mhUnitId = user.getMhUnitIdStr(); | |||||
// 获取当前登录用户的角色列表,只有单位管理员才能查看该列表 | // 获取当前登录用户的角色列表,只有单位管理员才能查看该列表 | ||||
List<Role> userRoleList = user.getUserRoleList(); | List<Role> userRoleList = user.getUserRoleList(); | ||||
List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | List<Long> roleIdList = userRoleList.stream().map(Role::getId).collect(Collectors.toList()); | ||||
Role role = | |||||
roleService.getOne(Wrappers.lambdaQuery(Role.class).eq(Role::getName, RoleEnum.COMPANY_MANAGER.getDesc())); | |||||
Role role = roleService.getOne(Wrappers.lambdaQuery(Role.class) | |||||
.eq(Role::getName, RoleEnum.COMPANY_MANAGER.getDesc())); | |||||
if (Objects.isNull(role)) { | if (Objects.isNull(role)) { | ||||
throw new BizException("登录用户没有单位管理员角色!"); | throw new BizException("登录用户没有单位管理员角色!"); | ||||
} | } | ||||
@@ -87,7 +90,7 @@ public class RectifyManage { | |||||
// 获取登录用户所在单位的所有已终验项目信息 | // 获取登录用户所在单位的所有已终验项目信息 | ||||
List<Project> projectLists = projectService.list(Wrappers.lambdaQuery(Project.class) | List<Project> projectLists = projectService.list(Wrappers.lambdaQuery(Project.class) | ||||
.eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()).eq(Project::getBuildOrgCode, empPosUnitCode)); | |||||
.eq(Project::getStatus, ProjectStatusEnum.ACCEPTED.getCode()).eq(Project::getBuildOrgCode, mhUnitId)); | |||||
if (CollUtil.isEmpty(projectLists)) { | if (CollUtil.isEmpty(projectLists)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
@@ -161,7 +164,7 @@ public class RectifyManage { | |||||
Page<Project> page = req.page(); | Page<Project> page = req.page(); | ||||
LambdaQueryWrapper<Project> wrapper = | LambdaQueryWrapper<Project> wrapper = | ||||
Wrappers.lambdaQuery(Project.class).in(Project::getProjectCode, projectCodes) | Wrappers.lambdaQuery(Project.class).in(Project::getProjectCode, projectCodes) | ||||
.eq(Project::getNewest, Boolean.TRUE).eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()) | |||||
.eq(Project::getNewest, Boolean.TRUE).eq(Project::getBuildOrgCode, user.getMhUnitId()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | .like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | ||||
projectService.page(page, wrapper); | projectService.page(page, wrapper); | ||||
@@ -189,7 +192,7 @@ public class RectifyManage { | |||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | UserInfoDetails user = LoginUserUtil.loginUserDetail(); | ||||
PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | PerformanceAppraisal plan = performanceAppraisalService.getById(planId); | ||||
VUtils.isTrue(Objects.isNull(plan)).throwMessage("该评价计划不存在!"); | |||||
Assert.notNull(plan, "该评价计划不存在!"); | |||||
// 获取评价计划内已添加的已整改项目信息 | // 获取评价计划内已添加的已整改项目信息 | ||||
List<PerformanceAppraisalProject> paps = | List<PerformanceAppraisalProject> paps = | ||||
@@ -199,8 +202,6 @@ public class RectifyManage { | |||||
.and(wp -> wp | .and(wp -> wp | ||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode()).or() | .eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.TO_BE_REVIEWED.getCode()).or() | ||||
.eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode()))); | .eq(PerformanceAppraisalProject::getRectifyStatus, RectifyStatusEnum.APPROVED.getCode()))); | ||||
Map<Long, PerformanceAppraisalProject> papsMap = | |||||
paps.stream().collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
if (CollUtil.isEmpty(paps)) { | if (CollUtil.isEmpty(paps)) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
@@ -210,15 +211,19 @@ public class RectifyManage { | |||||
Set<String> projectCodes = | Set<String> projectCodes = | ||||
paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | paps.stream().map(PerformanceAppraisalProject::getProjectCode).collect(Collectors.toSet()); | ||||
Page<Project> page = req.page(); | Page<Project> page = req.page(); | ||||
LambdaQueryWrapper<Project> wrapper = | |||||
Wrappers.lambdaQuery(Project.class).in(Project::getProjectCode, projectCodes) | |||||
.eq(Project::getNewest, Boolean.TRUE).eq(Project::getBuildOrgCode, user.getEmpPosUnitCode()) | |||||
.like(StringUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
LambdaQueryWrapper<Project> wrapper = Wrappers.lambdaQuery(Project.class) | |||||
.in(Project::getProjectCode, projectCodes) | |||||
.eq(Project::getNewest, Boolean.TRUE) | |||||
.eq(Project::getBuildOrgCode, user.getMhUnitId()) | |||||
.like(StrUtils.isNotBlank(req.getProjectName()), Project::getProjectName, req.getProjectName()); | |||||
projectService.page(page, wrapper); | projectService.page(page, wrapper); | ||||
if (CollUtil.isEmpty(page.getRecords())) { | if (CollUtil.isEmpty(page.getRecords())) { | ||||
return PageVo.empty(); | return PageVo.empty(); | ||||
} | } | ||||
Map<Long, PerformanceAppraisalProject> papsMap = paps.stream() | |||||
.collect(Collectors.toMap(PerformanceAppraisalProject::getProjectId, p -> p)); | |||||
List<PerformanceAppraisalProjectVO> res = page.getRecords().stream().map(p -> { | List<PerformanceAppraisalProjectVO> res = page.getRecords().stream().map(p -> { | ||||
PerformanceAppraisalProjectVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalProjectVO.class); | PerformanceAppraisalProjectVO vo = BeanUtil.copyProperties(p, PerformanceAppraisalProjectVO.class); | ||||
PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | PerformanceAppraisalProject appraisalProject = papsMap.get(p.getId()); | ||||
@@ -239,19 +244,20 @@ public class RectifyManage { | |||||
RectifyDetailVO vo = new RectifyDetailVO(); | RectifyDetailVO vo = new RectifyDetailVO(); | ||||
// 根据评价计划ID和项目编号获取评价项目信息 | // 根据评价计划ID和项目编号获取评价项目信息 | ||||
PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers | PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers | ||||
.lambdaQuery(PerformanceAppraisalProject.class).eq(PerformanceAppraisalProject::getAppraisalId, planId) | |||||
.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, planId) | |||||
.eq(PerformanceAppraisalProject::getProjectCode, projectCode)); | .eq(PerformanceAppraisalProject::getProjectCode, projectCode)); | ||||
VUtils.isTrue(Objects.isNull(appraisalProject)).throwMessage("该项目已被移除评价计划,请返回上一页或者刷新重试!!"); | |||||
Assert.notNull(appraisalProject, "该项目已被移除评价计划,请返回上一页或者刷新重试!"); | |||||
BeanUtils.copyProperties(appraisalProject, vo); | BeanUtils.copyProperties(appraisalProject, vo); | ||||
String rectifySubmitEmployeeCode = appraisalProject.getRectifySubmitEmployeeCode(); | |||||
if (StringUtils.isNotBlank(rectifySubmitEmployeeCode)) { | |||||
UserFullInfoDTO userFullInfoDto = userInfoHelper.getUserFullInfoByEmployeeCode(rectifySubmitEmployeeCode); | |||||
vo.setRectifySubmitEmployee(userFullInfoDto); | |||||
String rectifySubmitUserId = appraisalProject.getRectifySubmitUserId(); | |||||
if (StrUtils.isNotBlank(rectifySubmitUserId)) { | |||||
UserFullInfoDTO userFullInfoDto = userInfoHelper.getUserFullInfo(rectifySubmitUserId); | |||||
vo.setRectifySubmitUser(userFullInfoDto); | |||||
} | } | ||||
String rectifyResSubEmpCode = appraisalProject.getRectifyResSubEmpCode(); | |||||
if (StringUtils.isNotBlank(rectifyResSubEmpCode)) { | |||||
UserFullInfoDTO userFullInfoDto = userInfoHelper.getUserFullInfoByEmployeeCode(rectifyResSubEmpCode); | |||||
vo.setRectifyResSubEmployee(userFullInfoDto); | |||||
String rectifyResSubUserId = appraisalProject.getRectifyResSubUserId(); | |||||
if (StrUtils.isNotBlank(rectifyResSubUserId)) { | |||||
UserFullInfoDTO userFullInfoDto = userInfoHelper.getUserFullInfo(rectifyResSubUserId); | |||||
vo.setRectifyResSubUser(userFullInfoDto); | |||||
} | } | ||||
vo.setRectifyStatusName(RectifyStatusEnum.getDesc(appraisalProject.getRectifyStatus())); | vo.setRectifyStatusName(RectifyStatusEnum.getDesc(appraisalProject.getRectifyStatus())); | ||||
return vo; | return vo; | ||||
@@ -260,7 +266,7 @@ public class RectifyManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String fillOutResult(ProjectAppraisalDTO param) { | public String fillOutResult(ProjectAppraisalDTO param) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String userIdStr = String.valueOf(userDetail.getUserId()); | |||||
String username = userDetail.getUsername(); | String username = userDetail.getUsername(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
@@ -270,16 +276,17 @@ public class RectifyManage { | |||||
String rectifyResultAppendix = param.getRectifyResultAppendix(); | String rectifyResultAppendix = param.getRectifyResultAppendix(); | ||||
// 判断该项目是否还存在于计划或分组中 | // 判断该项目是否还存在于计划或分组中 | ||||
PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(Wrappers | |||||
.lambdaQuery(PerformanceAppraisalProject.class).eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | |||||
Wrapper<PerformanceAppraisalProject> query = Wrappers.lambdaQuery(PerformanceAppraisalProject.class) | |||||
.eq(PerformanceAppraisalProject::getAppraisalId, appraisalId) | |||||
.eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId) | .eq(PerformanceAppraisalProject::getProjectId, appraisalProjectId) | ||||
.eq(PerformanceAppraisalProject::getProjectCode, appraisalProjectCode)); | |||||
.eq(PerformanceAppraisalProject::getProjectCode, appraisalProjectCode); | |||||
PerformanceAppraisalProject appraisalProject = performanceAppraisalProjectService.getOne(query); | |||||
if (Objects.isNull(appraisalProject)) { | if (Objects.isNull(appraisalProject)) { | ||||
throw new BizException("该项目已被移除评价计划,请返回上一页或者刷新重试!"); | throw new BizException("该项目已被移除评价计划,请返回上一页或者刷新重试!"); | ||||
} | } | ||||
appraisalProject.setRectifyResult(rectifyResult); | appraisalProject.setRectifyResult(rectifyResult); | ||||
appraisalProject.setRectifyResultAppendix(rectifyResultAppendix); | appraisalProject.setRectifyResultAppendix(rectifyResultAppendix); | ||||
appraisalProject.setRectifyResSubEmpCode(employeeCode); | |||||
appraisalProject.setRectifyResSubUserId(userIdStr); | |||||
appraisalProject.setRectifyResSubTime(LocalDateTime.now()); | appraisalProject.setRectifyResSubTime(LocalDateTime.now()); | ||||
// 更新整改状态为整改待审核 | // 更新整改状态为整改待审核 | ||||
appraisalProject.setRectifyStatus(RectifyStatusEnum.TO_BE_REVIEWED.getCode()); | appraisalProject.setRectifyStatus(RectifyStatusEnum.TO_BE_REVIEWED.getCode()); | ||||
@@ -2,16 +2,21 @@ package com.hz.pm.api.performance.manage; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||
import cn.hutool.core.lang.Assert; | |||||
import cn.hutool.core.map.MapUtil; | import cn.hutool.core.map.MapUtil; | ||||
import cn.hutool.core.util.CharsetUtil; | import cn.hutool.core.util.CharsetUtil; | ||||
import cn.hutool.core.util.NumberUtil; | |||||
import com.alibaba.excel.EasyExcel; | import com.alibaba.excel.EasyExcel; | ||||
import com.alibaba.excel.write.builder.ExcelWriterBuilder; | import com.alibaba.excel.write.builder.ExcelWriterBuilder; | ||||
import com.baomidou.mybatisplus.core.conditions.Wrapper; | |||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||
import com.google.common.collect.Lists; | import com.google.common.collect.Lists; | ||||
import com.hz.pm.api.common.enumeration.CommonEnum; | import com.hz.pm.api.common.enumeration.CommonEnum; | ||||
import com.hz.pm.api.common.model.constant.BizConst; | |||||
import com.hz.pm.api.common.util.ExcelDownUtil; | import com.hz.pm.api.common.util.ExcelDownUtil; | ||||
import com.hz.pm.api.common.util.StrUtils; | |||||
import com.hz.pm.api.performance.constant.ProjectBizConst; | import com.hz.pm.api.performance.constant.ProjectBizConst; | ||||
import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | import com.hz.pm.api.performance.enumration.AppraisalTypeEnum; | ||||
import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | import com.hz.pm.api.performance.enumration.RectifyStatusEnum; | ||||
@@ -26,8 +31,8 @@ import com.hz.pm.api.performance.service.*; | |||||
import com.hz.pm.api.performance.util.*; | import com.hz.pm.api.performance.util.*; | ||||
import com.hz.pm.api.portrait.model.entity.ProjectTag; | import com.hz.pm.api.portrait.model.entity.ProjectTag; | ||||
import com.hz.pm.api.portrait.service.IProjectTagService; | import com.hz.pm.api.portrait.service.IProjectTagService; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import com.hz.pm.api.projectlib.model.entity.Project; | import com.hz.pm.api.projectlib.model.entity.Project; | ||||
import com.hz.pm.api.projectlib.model.enumeration.ProjectTypeNewEnum; | |||||
import com.hz.pm.api.projectlib.service.IProjectService; | import com.hz.pm.api.projectlib.service.IProjectService; | ||||
import com.hz.pm.api.sys.model.entity.Role; | import com.hz.pm.api.sys.model.entity.Role; | ||||
import com.hz.pm.api.sys.service.IRoleService; | import com.hz.pm.api.sys.service.IRoleService; | ||||
@@ -47,6 +52,7 @@ import org.springframework.transaction.annotation.Transactional; | |||||
import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.math.RoundingMode; | |||||
import java.time.LocalDateTime; | import java.time.LocalDateTime; | ||||
import java.util.*; | import java.util.*; | ||||
import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
@@ -100,12 +106,14 @@ public class VerifyManage { | |||||
List<PerformanceAppraisalProjectGroup> projectGroups = groupService.list(); | List<PerformanceAppraisalProjectGroup> projectGroups = groupService.list(); | ||||
for (PerformanceAppraisalProjectGroup projectGroup : projectGroups) { | for (PerformanceAppraisalProjectGroup projectGroup : projectGroups) { | ||||
String verificationUsers = projectGroup.getVerificationUsers(); | String verificationUsers = projectGroup.getVerificationUsers(); | ||||
if (verificationUsers.contains(StrPool.COMMA)) { | |||||
if (verificationUsers.contains(employeeCode)) { | |||||
if (StrUtils.isNotBlank(verificationUsers)) { | |||||
if (verificationUsers.contains(StrPool.COMMA)) { | |||||
if (verificationUsers.contains(employeeCode)) { | |||||
groups.add(projectGroup); | |||||
} | |||||
} else if (verificationUsers.equals(employeeCode)) { | |||||
groups.add(projectGroup); | groups.add(projectGroup); | ||||
} | } | ||||
} else if (verificationUsers.equals(employeeCode)) { | |||||
groups.add(projectGroup); | |||||
} | } | ||||
} | } | ||||
// 当前登录专家没有绩效分组信息 | // 当前登录专家没有绩效分组信息 | ||||
@@ -139,31 +147,28 @@ public class VerifyManage { | |||||
/** | /** | ||||
* 是否可以核查 | * 是否可以核查 | ||||
* | * | ||||
* @param employeeCode | |||||
* @param projectCode | |||||
* @param appraisalId | |||||
* @return | |||||
* @param userId \ | |||||
* @param projectCode \ | |||||
* @param appraisalId \ | |||||
* @return \ | |||||
*/ | */ | ||||
private Boolean checkCanVerify(String employeeCode, String projectCode, Long appraisalId) { | |||||
private Boolean checkCanVerify(String userId, String projectCode, Long appraisalId) { | |||||
// 首次核查(核查打分信息为空) | // 首次核查(核查打分信息为空) | ||||
// 从绩效评价打分信息表中查询打分类型为专家核查、打分人员为当前登录专家用户的打分信息 | // 从绩效评价打分信息表中查询打分类型为专家核查、打分人员为当前登录专家用户的打分信息 | ||||
// 如果没有相关的打分信息,说明是当前登录复评用户是首次核查 | // 如果没有相关的打分信息,说明是当前登录复评用户是首次核查 | ||||
List<PerformanceAppraisalScoreInfo> scoreInfos = performanceAppraisalScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalScoreInfo.class) | |||||
Wrapper<PerformanceAppraisalScoreInfo> query = Wrappers.lambdaQuery(PerformanceAppraisalScoreInfo.class) | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode()) | .eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode()) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | .eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | .eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | ||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalEmployeeCode, employeeCode)); | |||||
if (CollUtil.isEmpty(scoreInfos)) { | |||||
return true; | |||||
} | |||||
return Boolean.FALSE; | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalUserId, userId) | |||||
.last(BizConst.LIMIT_1); | |||||
return performanceAppraisalScoreInfoService.count(query) == 0; | |||||
} | } | ||||
public PageVo<PerformanceAppraisalProjectVO> groupProjectList(Long groupId, PerformanceAppraisalListReq req) { | public PageVo<PerformanceAppraisalProjectVO> groupProjectList(Long groupId, PerformanceAppraisalListReq req) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String userIdStr = userDetail.getUserIdStr(); | |||||
// 获取分组内的项目信息 | // 获取分组内的项目信息 | ||||
PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | PerformanceAppraisalProjectGroup projectGroup = groupService.getById(groupId); | ||||
@@ -204,10 +209,10 @@ public class VerifyManage { | |||||
BeanUtil.copyProperties(appraisalProject, vo); | BeanUtil.copyProperties(appraisalProject, vo); | ||||
vo.setProjectId(appraisalProject.getProjectId()); | vo.setProjectId(appraisalProject.getProjectId()); | ||||
vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | vo.setProjectTypeName(ProjectTypeNewEnum.getDesc(p.getProjectType())); | ||||
vo.setCanVerify(checkCanVerify(employeeCode, appraisalProject.getProjectCode(), appraisalId)); | |||||
vo.setCanVerify(checkCanVerify(userIdStr, appraisalProject.getProjectCode(), appraisalId)); | |||||
// 如果登录用户是核查组长,该项目可填写整改意见 | // 如果登录用户是核查组长,该项目可填写整改意见 | ||||
String verifyLeader = projectGroup.getVerifyLeader(); | String verifyLeader = projectGroup.getVerifyLeader(); | ||||
if (employeeCode.equals(verifyLeader)) { | |||||
if (userIdStr.equals(verifyLeader)) { | |||||
vo.setCanRectify(Boolean.TRUE); | vo.setCanRectify(Boolean.TRUE); | ||||
} | } | ||||
vo.setGroupId(groupId); | vo.setGroupId(groupId); | ||||
@@ -220,7 +225,7 @@ public class VerifyManage { | |||||
@Transactional(rollbackFor = Exception.class) | @Transactional(rollbackFor = Exception.class) | ||||
public String submitVerify(ProjectAppraisalDTO param) { | public String submitVerify(ProjectAppraisalDTO param) { | ||||
UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | UserInfoDetails userDetail = LoginUserUtil.loginUserDetail(); | ||||
String employeeCode = userDetail.getEmployeeCode(); | |||||
String userIdStr = String.valueOf(userDetail.getUserId()); | |||||
String username = userDetail.getUsername(); | String username = userDetail.getUsername(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
Long appraisalProjectId = param.getAppraisalProjectId(); | Long appraisalProjectId = param.getAppraisalProjectId(); | ||||
@@ -260,8 +265,8 @@ public class VerifyManage { | |||||
scoreInfo.setAppraisalType(AppraisalTypeEnum.EXPERT_VERIFY.getCode()); | scoreInfo.setAppraisalType(AppraisalTypeEnum.EXPERT_VERIFY.getCode()); | ||||
scoreInfo.setTemplateDetailId(templateDetail.getId()); | scoreInfo.setTemplateDetailId(templateDetail.getId()); | ||||
scoreInfo.setTemplateId(templateDetail.getTemplateId()); | scoreInfo.setTemplateId(templateDetail.getTemplateId()); | ||||
scoreInfo.setAppraisalEmployeeCode(employeeCode); | |||||
scoreInfo.setAppraisalEmployeeName(username); | |||||
scoreInfo.setAppraisalUserName(username); | |||||
scoreInfo.setAppraisalUserId(userIdStr); | |||||
scoreInfo.setAppraisalId(appraisalId); | scoreInfo.setAppraisalId(appraisalId); | ||||
scoreInfo.setAppraisalProjectId(appraisalProjectId); | scoreInfo.setAppraisalProjectId(appraisalProjectId); | ||||
scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | scoreInfo.setAppraisalProjectCode(appraisalProjectCode); | ||||
@@ -281,7 +286,7 @@ public class VerifyManage { | |||||
if (Objects.nonNull(appraisalProject.getVerifyTotalScore())) { | if (Objects.nonNull(appraisalProject.getVerifyTotalScore())) { | ||||
// 已经进行了核查,计算两个分值的平均分 | // 已经进行了核查,计算两个分值的平均分 | ||||
BigDecimal add = verifyTotalScore.add(appraisalProject.getReAppraisalTotalScore()); | BigDecimal add = verifyTotalScore.add(appraisalProject.getReAppraisalTotalScore()); | ||||
lastVerifyTotalScore = add.divide(BigDecimal.valueOf(2)); | |||||
lastVerifyTotalScore = add.divide(BigDecimal.valueOf(2), RoundingMode.HALF_UP); | |||||
} else { | } else { | ||||
// 还没有进行过复评 | // 还没有进行过复评 | ||||
lastVerifyTotalScore = verifyTotalScore; | lastVerifyTotalScore = verifyTotalScore; | ||||
@@ -298,7 +303,7 @@ public class VerifyManage { | |||||
StringUtils.isNotBlank(param.getRectifyOpinion())) { | StringUtils.isNotBlank(param.getRectifyOpinion())) { | ||||
appraisalProject.setIsRectify(param.getIsRectify()); | appraisalProject.setIsRectify(param.getIsRectify()); | ||||
appraisalProject.setRectifyOpinion(param.getRectifyOpinion()); | appraisalProject.setRectifyOpinion(param.getRectifyOpinion()); | ||||
appraisalProject.setRectifySubmitEmployeeCode(employeeCode); | |||||
appraisalProject.setRectifySubmitUserId(userIdStr); | |||||
appraisalProject.setRectifySubmitTime(LocalDateTime.now()); | appraisalProject.setRectifySubmitTime(LocalDateTime.now()); | ||||
appraisalProject.setRectifyStatus(RectifyStatusEnum.TO_BE_SUBMITTED.getCode()); | appraisalProject.setRectifyStatus(RectifyStatusEnum.TO_BE_SUBMITTED.getCode()); | ||||
} | } | ||||
@@ -317,7 +322,9 @@ public class VerifyManage { | |||||
// 判断打分人员是否为分组内的核查人员 | // 判断打分人员是否为分组内的核查人员 | ||||
if (CollUtil.isNotEmpty(scoreInfoList)) { | if (CollUtil.isNotEmpty(scoreInfoList)) { | ||||
Set<String> users = scoreInfoList.stream().map(PerformanceAppraisalScoreInfo::getAppraisalEmployeeCode).collect(Collectors.toSet()); | |||||
Set<String> users = scoreInfoList.stream() | |||||
.map(PerformanceAppraisalScoreInfo::getAppraisalUserId) | |||||
.collect(Collectors.toSet()); | |||||
if (CollUtil.isNotEmpty(users)) { | if (CollUtil.isNotEmpty(users)) { | ||||
String verificationUsers = group.getVerificationUsers(); | String verificationUsers = group.getVerificationUsers(); | ||||
String join = String.join(StrPool.COMMA, users); | String join = String.join(StrPool.COMMA, users); | ||||
@@ -330,29 +337,24 @@ public class VerifyManage { | |||||
} | } | ||||
public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | public void exportScore(HttpServletResponse response, PerformanceAppraisalExportReq param) { | ||||
UserInfoDetails user = LoginUserUtil.loginUserDetail(); | |||||
String regionCode = user.getRegionCode(); | |||||
String projectCode = param.getProjectCode(); | String projectCode = param.getProjectCode(); | ||||
Long appraisalId = param.getAppraisalId(); | Long appraisalId = param.getAppraisalId(); | ||||
// 根据项目编码获取最新版本的项目信息 | // 根据项目编码获取最新版本的项目信息 | ||||
Project project = projectService.getProjectByCode(projectCode); | Project project = projectService.getProjectByCode(projectCode); | ||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | |||||
Assert.notNull(project, "项目不存在!"); | |||||
// 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | // 根据项目类型、预算年度、批复金额、项目标签匹配本区域指标模版 | ||||
String projectType = project.getProjectType(); | String projectType = project.getProjectType(); | ||||
Integer projectYear = project.getProjectYear(); | Integer projectYear = project.getProjectYear(); | ||||
BigDecimal approvalAmount = project.getApprovalAmount(); | BigDecimal approvalAmount = project.getApprovalAmount(); | ||||
VUtils.isTrue(Objects.isNull(approvalAmount)).throwMessage("未获取到该项目的立项批复金额"); | |||||
Assert.notNull(approvalAmount, "未获取到该项目的立项批复金额"); | |||||
// 根据项目code获取项目标签ID列表 | // 根据项目code获取项目标签ID列表 | ||||
List<Long> tagIdList = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
String tagIdStr = projectTagService.list(Wrappers.lambdaQuery(ProjectTag.class) | |||||
.eq(ProjectTag::getProjectCode, projectCode)).stream() | .eq(ProjectTag::getProjectCode, projectCode)).stream() | ||||
.map(ProjectTag::getTagId).collect(Collectors.toList()); | |||||
VUtils.isTrue(CollUtil.isEmpty(tagIdList)).throwMessage("当前项目未设置标签,匹配不到指标模板,请至项目库或评价计划编辑页面设置标签!"); | |||||
.map(w -> w.getTagId().toString()).collect(Collectors.joining(",")); | |||||
Assert.notEmpty(tagIdStr, "当前项目未设置标签,请至项目库或评价计划编辑页面设置标签!"); | |||||
List<String> strIdList = tagIdList.stream().map(String::valueOf).collect(Collectors.toList()); | |||||
String projectTagIds = String.join(StrPool.COMMA, strIdList); | |||||
Integer amountRange = null; | |||||
Integer amountRange; | |||||
if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) < 0) { | ||||
amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | amountRange = ProjectBizConst.AMOUNT_RANGE_ONE; | ||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | } else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.FIVE_MILLION)) >= 0 && | ||||
@@ -360,19 +362,20 @@ public class VerifyManage { | |||||
amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | amountRange = ProjectBizConst.AMOUNT_RANGE_TWO; | ||||
} else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0) { | } else if (approvalAmount.compareTo(BigDecimal.valueOf(ProjectBizConst.TWENTY_MILLION)) >= 0) { | ||||
amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | amountRange = ProjectBizConst.AMOUNT_RANGE_THREE; | ||||
} else { | |||||
amountRange = null; | |||||
} | } | ||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | |||||
.eq(PerformanceIndicatorProjectTemplate::getRegionCode, regionCode) | |||||
LambdaQueryWrapper<PerformanceIndicatorProjectTemplate> wrapper = Wrappers | |||||
.lambdaQuery(PerformanceIndicatorProjectTemplate.class) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | .eq(PerformanceIndicatorProjectTemplate::getProjectType, projectType) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | .eq(PerformanceIndicatorProjectTemplate::getProjectYear, projectYear) | ||||
.eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | .eq(PerformanceIndicatorProjectTemplate::getAmountRange, amountRange) | ||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, projectTagIds) | |||||
.eq(PerformanceIndicatorProjectTemplate::getProjectTagIds, tagIdStr) | |||||
.eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | .eq(PerformanceIndicatorProjectTemplate::getStatus, CommonEnum.YES.getCode()) | ||||
.orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | .orderByDesc(PerformanceIndicatorProjectTemplate::getUpdateOn); | ||||
List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | List<PerformanceIndicatorProjectTemplate> templates = indicatorProjectTemplateService.list(wrapper); | ||||
VUtils.isTrue(CollUtil.isEmpty(templates)).throwMessage("该项目匹配不到指标模板,请返回上一页或者刷新重试。"); | |||||
if (templates.size() > 1) { | |||||
throw new BizException("当前项目匹配到多个模板,请返回模板库检查模板配置!"); | |||||
if (templates.size() != 1) { | |||||
throw BizException.wrap("当前项目模版配置错误!"); | |||||
} | } | ||||
PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | PerformanceIndicatorProjectTemplate projectTemplate = templates.get(0); | ||||
// 装配项目指标详情及分数信息 | // 装配项目指标详情及分数信息 | ||||
@@ -384,11 +387,12 @@ public class VerifyManage { | |||||
List<Map<String, Object>> exportDataList = Lists.newArrayList(); | List<Map<String, Object>> exportDataList = Lists.newArrayList(); | ||||
List<Map<String, Object>> exportAdditionalDataList = Lists.newArrayList(); | List<Map<String, Object>> exportAdditionalDataList = Lists.newArrayList(); | ||||
// 构建指标和打分详情 | // 构建指标和打分详情 | ||||
List<PerformanceAppraisalScoreInfo> scoreInfoList = performanceAppraisalScoreInfoService.list(Wrappers.lambdaQuery(PerformanceAppraisalScoreInfo.class) | |||||
List<PerformanceAppraisalScoreInfo> scoreInfoList = performanceAppraisalScoreInfoService.list(Wrappers | |||||
.lambdaQuery(PerformanceAppraisalScoreInfo.class) | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | .eq(PerformanceAppraisalScoreInfo::getAppraisalId, appraisalId) | ||||
.and(wp -> wp.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.SELF_APPRAISAL.getCode()).or() | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode()).or() | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode())) | |||||
.and(wp -> wp.eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.SELF_APPRAISAL.getCode()) | |||||
.or().eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.RE_APPRAISAL.getCode()) | |||||
.or().eq(PerformanceAppraisalScoreInfo::getAppraisalType, AppraisalTypeEnum.EXPERT_VERIFY.getCode())) | |||||
.eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | .eq(PerformanceAppraisalScoreInfo::getAppraisalProjectCode, projectCode) | ||||
.orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalScoreInfo::getTemplateDetailId)); | .orderBy(Boolean.TRUE, Boolean.TRUE, PerformanceAppraisalScoreInfo::getTemplateDetailId)); | ||||
Map<Long, PerformanceAppraisalScoreInfo> scoreInfoMap = scoreInfoList.stream() | Map<Long, PerformanceAppraisalScoreInfo> scoreInfoMap = scoreInfoList.stream() | ||||
@@ -399,7 +403,7 @@ public class VerifyManage { | |||||
.filter(s -> AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(s.getAppraisalType())) | .filter(s -> AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(s.getAppraisalType())) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
List<String> reUserList = reScoreInfoList.stream() | List<String> reUserList = reScoreInfoList.stream() | ||||
.map(PerformanceAppraisalScoreInfo::getAppraisalEmployeeName) | |||||
.map(PerformanceAppraisalScoreInfo::getAppraisalUserName) | |||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
// 获取核查打分人员信息 | // 获取核查打分人员信息 | ||||
@@ -407,12 +411,12 @@ public class VerifyManage { | |||||
.filter(s -> AppraisalTypeEnum.EXPERT_VERIFY.getCode().equals(s.getAppraisalType())) | .filter(s -> AppraisalTypeEnum.EXPERT_VERIFY.getCode().equals(s.getAppraisalType())) | ||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
List<String> verifyUserList = verifyScoreInfoList.stream() | List<String> verifyUserList = verifyScoreInfoList.stream() | ||||
.map(PerformanceAppraisalScoreInfo::getAppraisalEmployeeName) | |||||
.map(PerformanceAppraisalScoreInfo::getAppraisalUserName) | |||||
.collect(Collectors.toList()); | .collect(Collectors.toList()); | ||||
// 筛选出所有打分的三级指标模板详情ID | // 筛选出所有打分的三级指标模板详情ID | ||||
for (PerformanceAppraisalScoreInfo scoreInfo : scoreInfoList) { | for (PerformanceAppraisalScoreInfo scoreInfo : scoreInfoList) { | ||||
HashMap<String, Object> scoreMap = MapUtil.newHashMap(); | |||||
Map<String, Object> scoreMap = MapUtil.newHashMap(); | |||||
Long detailId = scoreInfo.getTemplateDetailId(); | Long detailId = scoreInfo.getTemplateDetailId(); | ||||
PerformanceIndicatorProjectTemplateDetail thirdTemplateDetail = templateDetailMap.get(detailId); | PerformanceIndicatorProjectTemplateDetail thirdTemplateDetail = templateDetailMap.get(detailId); | ||||
@@ -444,11 +448,11 @@ public class VerifyManage { | |||||
scoreMap.put(ProjectBizConst.SELF_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | scoreMap.put(ProjectBizConst.SELF_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | ||||
scoreMap.put(ProjectBizConst.SELF_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | scoreMap.put(ProjectBizConst.SELF_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | ||||
} else if (AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | } else if (AppraisalTypeEnum.RE_APPRAISAL.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | ||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.RE_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.RE_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.RE_APPRAISAL_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.RE_APPRAISAL_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
} else if (AppraisalTypeEnum.EXPERT_VERIFY.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | } else if (AppraisalTypeEnum.EXPERT_VERIFY.getCode().equals(appraisalScoreInfo.getAppraisalType())) { | ||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.VERIFY_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalEmployeeName() + ProjectBizConst.VERIFY_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.VERIFY_BASIS, appraisalScoreInfo.getAppraisalBasis()); | |||||
scoreMap.put(appraisalScoreInfo.getAppraisalUserName() + ProjectBizConst.VERIFY_SCORE, appraisalScoreInfo.getAppraisalScore()); | |||||
} | } | ||||
if (Boolean.TRUE.equals(thirdTemplateDetail.getIsAdditional())) { | if (Boolean.TRUE.equals(thirdTemplateDetail.getIsAdditional())) { | ||||
@@ -469,26 +473,26 @@ public class VerifyManage { | |||||
// 需要从第几行开始合并 | // 需要从第几行开始合并 | ||||
int mergeRowIndex = 2; | int mergeRowIndex = 2; | ||||
List<ExcelHead> headList = Lists.newArrayList(); | |||||
headList.add(new ExcelHead(ProjectBizConst.FIRST_INDEX_NAME, ProjectBizConst.FIRST_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SECOND_INDEX_NAME, ProjectBizConst.SECOND_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.THIRD_INDEX_NAME, ProjectBizConst.THIRD_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.INDEX_SCORE, ProjectBizConst.INDEX_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.INDEX_DETAIL, ProjectBizConst.INDEX_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.GRADE_DETAIL, ProjectBizConst.GRADE_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SUPPORT_MATERIAL, ProjectBizConst.SUPPORT_MATERIAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SELF_APPRAISAL_BASIS, ProjectBizConst.SELF_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(ProjectBizConst.SELF_APPRAISAL_SCORE, ProjectBizConst.SELF_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
List<ExcelHead<Object>> headList = Lists.newArrayList(); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.FIRST_INDEX_NAME, ProjectBizConst.FIRST_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SECOND_INDEX_NAME, ProjectBizConst.SECOND_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.THIRD_INDEX_NAME, ProjectBizConst.THIRD_INDEX_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.INDEX_SCORE, ProjectBizConst.INDEX_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.INDEX_DETAIL, ProjectBizConst.INDEX_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.GRADE_DETAIL, ProjectBizConst.GRADE_DETAIL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SUPPORT_MATERIAL, ProjectBizConst.SUPPORT_MATERIAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SELF_APPRAISAL_BASIS, ProjectBizConst.SELF_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.SELF_APPRAISAL_SCORE, ProjectBizConst.SELF_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
for (String reUser : reUserList) { | for (String reUser : reUserList) { | ||||
headList.add(new ExcelHead(reUser + ProjectBizConst.RE_APPRAISAL_BASIS, ProjectBizConst.RE_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(reUser + ProjectBizConst.RE_APPRAISAL_SCORE, ProjectBizConst.RE_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(reUser + ProjectBizConst.RE_APPRAISAL_BASIS, ProjectBizConst.RE_APPRAISAL_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(reUser + ProjectBizConst.RE_APPRAISAL_SCORE, ProjectBizConst.RE_APPRAISAL_SCORE_TITLE, StrPool.EMPTY)); | |||||
} | } | ||||
for (String verifyUser : verifyUserList) { | for (String verifyUser : verifyUserList) { | ||||
headList.add(new ExcelHead(verifyUser + ProjectBizConst.VERIFY_BASIS, ProjectBizConst.VERIFY_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead(verifyUser + ProjectBizConst.VERIFY_SCORE, ProjectBizConst.VERIFY_SCORE_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(verifyUser + ProjectBizConst.VERIFY_BASIS, ProjectBizConst.VERIFY_BASIS_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(verifyUser + ProjectBizConst.VERIFY_SCORE, ProjectBizConst.VERIFY_SCORE_TITLE, StrPool.EMPTY)); | |||||
} | } | ||||
headList.add(new ExcelHead(ProjectBizConst.IS_ADDITIONAL, ProjectBizConst.IS_ADDITIONAL_TITLE, StrPool.EMPTY)); | |||||
headList.add(new ExcelHead<>(ProjectBizConst.IS_ADDITIONAL, ProjectBizConst.IS_ADDITIONAL_TITLE, StrPool.EMPTY)); | |||||
// 数据导出处理函数 | // 数据导出处理函数 | ||||
try { | try { | ||||
@@ -25,9 +25,6 @@ public class PerformanceIndicatorProjectTemplateSaveDTO implements Serializable | |||||
@ApiModelProperty("模板名称") | @ApiModelProperty("模板名称") | ||||
private String name; | private String name; | ||||
@ApiModelProperty("丽水 区域code") | |||||
private String regionCode; | |||||
@ApiModelProperty("项目年度") | @ApiModelProperty("项目年度") | ||||
private Integer projectYear; | private Integer projectYear; | ||||