@@ -1,18 +1,11 @@ | |||||
package com.ningdatech.pmapi.ding.controller; | package com.ningdatech.pmapi.ding.controller; | ||||
import com.alibaba.fastjson.JSON; | |||||
import com.ningdatech.pmapi.common.util.CryptUtils; | |||||
import com.ningdatech.pmapi.common.util.RefreshKeyUtil; | |||||
import com.ningdatech.pmapi.ding.task.EmployeeBatchGetTask; | import com.ningdatech.pmapi.ding.task.EmployeeBatchGetTask; | ||||
import com.ningdatech.pmapi.ding.task.GovBusinessStripsTask; | import com.ningdatech.pmapi.ding.task.GovBusinessStripsTask; | ||||
import com.ningdatech.pmapi.ding.task.OrganizationBatchGetTask; | import com.ningdatech.pmapi.ding.task.OrganizationBatchGetTask; | ||||
import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.http.ResponseEntity; | |||||
import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
import org.springframework.web.client.RestTemplate; | |||||
import java.security.NoSuchAlgorithmException; | |||||
/** | /** | ||||
* <p> | * <p> | ||||
@@ -68,46 +61,6 @@ public class DingInfoPullController { | |||||
employeeBatchGetTask.getBatchEmployeeByCode(orgCode); | employeeBatchGetTask.getBatchEmployeeByCode(orgCode); | ||||
} | } | ||||
@GetMapping("/test-app") | |||||
public void testApp() throws NoSuchAlgorithmException { | |||||
long timestamp = System.currentTimeMillis(); | |||||
String areaCode = "331121"; | |||||
String appKey = "A331101453557202109017383"; | |||||
String appScret = "496f0f2a19994f76b4fd9dae087366c7"; | |||||
String requestSecret = RefreshKeyUtil.getRequestSecret(appKey, appScret); | |||||
String capCode = CryptUtils.MD5Encode(timestamp + areaCode); | |||||
String capTime = String.valueOf(timestamp); | |||||
String sign = CryptUtils.MD5Encode(appKey + requestSecret + timestamp); | |||||
String url = "https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm?requestTime=" + timestamp + | |||||
"&sign=" + sign + "&appKey=" + appKey + "&capCode=" + capCode + "&capTime=" + capTime + | |||||
"&baseProjSys=测试应用&areaCode=331121&baseProjName=nsl-丽水演示项目&baseProjId=331100230130112233001" + | |||||
"&isEffective=1&baseProjSysCode=25083657"; | |||||
RestTemplate restTemplate = new RestTemplate(); | |||||
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class); | |||||
log.info("forEntity : {}",JSON.toJSONString(forEntity)); | |||||
} | |||||
@GetMapping("/test-app2") | |||||
public void testApp2() throws NoSuchAlgorithmException { | |||||
long timestamp = System.currentTimeMillis(); | |||||
String areaCode = "331121"; | |||||
String appScret = "496f0f2a19994f76b4fd9dae087366c7"; | |||||
String appKey = "A331101453557202109017383"; | |||||
String appCode = "A331123467587202306014169"; | |||||
String requestSecret = RefreshKeyUtil.getRequestSecret(appKey, appScret); | |||||
String sign = CryptUtils.MD5Encode(appKey + requestSecret + timestamp); | |||||
String url = "https://interface.zjzwfw.gov.cn/gateway/api/001003001029/dataSharing/XS8daav3bcemZ3Ra.htm?" + | |||||
"requestTime=" + timestamp + "&sign=" + sign + "&appKey=" + appKey + "&name=abc&" + | |||||
"pageSize=10&deptCode=abc&areaCode=" + areaCode + "&pageNum=1&appCode=" + appCode; | |||||
RestTemplate restTemplate = new RestTemplate(); | |||||
ResponseEntity<String> forEntity = restTemplate.getForEntity(url, String.class); | |||||
log.info("forEntity : {}",JSON.toJSONString(forEntity)); | |||||
} | |||||
@GetMapping("/getToken") | @GetMapping("/getToken") | ||||
public String getToken() { | public String getToken() { | ||||
return employeeBatchGetTask.getToken(); | return employeeBatchGetTask.getToken(); | ||||
@@ -0,0 +1,40 @@ | |||||
package com.ningdatech.pmapi.irs.controller; | |||||
import com.ningdatech.log.annotation.WebLog; | |||||
import com.ningdatech.pmapi.irs.manage.AppIrsManage; | |||||
import com.ningdatech.pmapi.irs.model.dto.ApiApplyDTO; | |||||
import com.ningdatech.pmapi.irs.model.dto.ApiApplySearchResult; | |||||
import com.ningdatech.pmapi.irs.model.dto.PushProjectAppToIrsDTO; | |||||
import lombok.AllArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.web.bind.annotation.*; | |||||
import javax.validation.Valid; | |||||
import java.security.NoSuchAlgorithmException; | |||||
/** | |||||
* @Classname ApplicationController | |||||
* @Description | |||||
* @Date 2023/7/12 9:26 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@RestController | |||||
@RequestMapping("/api/v1/app") | |||||
@AllArgsConstructor | |||||
@Slf4j | |||||
@Valid | |||||
public class ApplicationController { | |||||
private final AppIrsManage appIrsManage; | |||||
@PostMapping("/push-project-app") | |||||
@WebLog("推送项目和应用关系") | |||||
public Boolean pushProjectApp(@Valid @RequestBody PushProjectAppToIrsDTO dto) throws NoSuchAlgorithmException { | |||||
return appIrsManage.pushProjectApp(dto); | |||||
} | |||||
@GetMapping("/sreach-app") | |||||
public ApiApplySearchResult searchApp(ApiApplyDTO apply) throws NoSuchAlgorithmException { | |||||
return appIrsManage.searchApp(apply); | |||||
} | |||||
} |
@@ -0,0 +1,121 @@ | |||||
package com.ningdatech.pmapi.irs.manage; | |||||
import cn.hutool.core.collection.CollUtil; | |||||
import com.alibaba.fastjson.JSON; | |||||
import com.ningdatech.basic.function.VUtils; | |||||
import com.ningdatech.pmapi.common.util.CryptUtils; | |||||
import com.ningdatech.pmapi.common.util.RefreshKeyUtil; | |||||
import com.ningdatech.pmapi.irs.model.dto.ApiApplyDTO; | |||||
import com.ningdatech.pmapi.irs.model.dto.ApiApplySearchResult; | |||||
import com.ningdatech.pmapi.irs.model.dto.ApiSearchResult; | |||||
import com.ningdatech.pmapi.irs.model.dto.PushProjectAppToIrsDTO; | |||||
import com.ningdatech.pmapi.irs.model.res.ApiResponse; | |||||
import com.ningdatech.pmapi.projectlib.model.entity.Project; | |||||
import com.ningdatech.pmapi.projectlib.service.IProjectService; | |||||
import lombok.RequiredArgsConstructor; | |||||
import lombok.extern.slf4j.Slf4j; | |||||
import org.springframework.beans.factory.annotation.Value; | |||||
import org.springframework.http.ResponseEntity; | |||||
import org.springframework.stereotype.Component; | |||||
import org.springframework.web.client.RestTemplate; | |||||
import java.security.NoSuchAlgorithmException; | |||||
import java.util.Objects; | |||||
/** | |||||
* @Classname AppIrsManage | |||||
* @Description | |||||
* @Date 2023/7/12 11:43 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Component | |||||
@Slf4j | |||||
@RequiredArgsConstructor | |||||
public class AppIrsManage { | |||||
private final IProjectService projectService; | |||||
@Value("${irs.push-app.appKey}") | |||||
private String pushAppKey; | |||||
@Value("${irs.push-app.appScret}") | |||||
private String pushAppScret; | |||||
@Value("${irs.push-app.url}") | |||||
private String pushUrl; | |||||
@Value("${irs.search-app.appKey}") | |||||
private String searchAppKey; | |||||
@Value("${irs.search-app.appScret}") | |||||
private String searchAppScret; | |||||
@Value("${irs.search-app.url}") | |||||
private String searchUrl; | |||||
/** | |||||
* 推送 项目和应用关系 | |||||
* @param dto | |||||
* @return | |||||
* @throws NoSuchAlgorithmException | |||||
*/ | |||||
public Boolean pushProjectApp(PushProjectAppToIrsDTO dto) throws NoSuchAlgorithmException { | |||||
String appCode = dto.getAppCode(); | |||||
String projectCode = dto.getProjectCode(); | |||||
Project project = projectService.getProjectByCode(projectCode); | |||||
VUtils.isTrue(Objects.isNull(project)).throwMessage("项目不存在!"); | |||||
ApiApplyDTO apiApply = new ApiApplyDTO(); | |||||
apiApply.setAppId(appCode); | |||||
ApiApplySearchResult apiApplySearchResult = this.searchApp(apiApply); | |||||
VUtils.isTrue(Objects.isNull(apiApplySearchResult)).throwMessage("应用在IRS不存在!"); | |||||
long timestamp = System.currentTimeMillis(); | |||||
String areaCode = project.getAreaCode(); | |||||
String projectName = project.getProjectName(); | |||||
String requestSecret = RefreshKeyUtil.getRequestSecret(pushAppKey, pushAppScret); | |||||
String capCode = CryptUtils.MD5Encode(timestamp + areaCode); | |||||
String capTime = String.valueOf(timestamp); | |||||
String sign = CryptUtils.MD5Encode(pushAppKey + requestSecret + timestamp); | |||||
String url = pushUrl + "?requestTime=" + timestamp + | |||||
"&sign=" + sign + "&appKey=" + pushAppKey + "&capCode=" + capCode + "&capTime=" + capTime + | |||||
"&baseProjSys=" + apiApplySearchResult.getName() + "&areaCode=" + areaCode + "&baseProjName=" + projectName + | |||||
"&baseProjId=" + project.getProjectCode() + | |||||
"&isEffective=1&baseProjSysCode=" + appCode; | |||||
RestTemplate restTemplate = new RestTemplate(); | |||||
ResponseEntity<ApiResponse> forEntity = restTemplate.getForEntity(url, ApiResponse.class); | |||||
log.info("推送 项目和应用结果 : {}", JSON.toJSONString(forEntity)); | |||||
ApiResponse body = forEntity.getBody(); | |||||
return body.getSuccess(); | |||||
} | |||||
/** | |||||
* 查询app | |||||
* @param apply | |||||
* @return | |||||
* @throws NoSuchAlgorithmException | |||||
*/ | |||||
public ApiApplySearchResult searchApp(ApiApplyDTO apply) throws NoSuchAlgorithmException { | |||||
long timestamp = System.currentTimeMillis(); | |||||
String appCode = apply.getAppId(); | |||||
String requestSecret = RefreshKeyUtil.getRequestSecret(searchAppKey, searchAppScret); | |||||
String sign = CryptUtils.MD5Encode(searchAppKey + requestSecret + timestamp); | |||||
String url = searchUrl + "?requestTime=" + timestamp + "&sign=" + sign + | |||||
"&appKey=" + searchAppKey + "&" + | |||||
"pageSize=10&pageNum=1&appCode=" + appCode; | |||||
RestTemplate restTemplate = new RestTemplate(); | |||||
ResponseEntity<ApiSearchResult> forEntity = restTemplate.getForEntity(url, ApiSearchResult.class); | |||||
log.info("查询应用目录 : {}",JSON.toJSONString(forEntity)); | |||||
if(Objects.nonNull(forEntity.getBody()) && CollUtil.isNotEmpty(forEntity.getBody().getApiApplySearchResult())){ | |||||
return forEntity.getBody().getApiApplySearchResult().get(0); | |||||
} | |||||
return null; | |||||
} | |||||
} |
@@ -0,0 +1,28 @@ | |||||
package com.ningdatech.pmapi.irs.model.dto; | |||||
import lombok.Data; | |||||
@Data | |||||
public class ApiApplyDTO { | |||||
private int id; | |||||
private String orgId; | |||||
private String userId; | |||||
private String isDeleted; | |||||
private String name; | |||||
private String appId; | |||||
private String type; | |||||
private String status; | |||||
private String sysStateTime; | |||||
private String deptName; | |||||
private String deptCode; | |||||
private String fiveAreas; | |||||
private String constructionLevel; | |||||
private String isUnifiedConstruction; | |||||
private String deployType; | |||||
private String principal; | |||||
private String employeeCode; | |||||
private String areaName; | |||||
private String createTime; | |||||
private String modifiedTime; | |||||
} |
@@ -0,0 +1,28 @@ | |||||
package com.ningdatech.pmapi.irs.model.dto; | |||||
import lombok.Data; | |||||
@Data | |||||
public class ApiApplySearchResult { | |||||
private int id; | |||||
private String orgId; | |||||
private String userId; | |||||
private String isDeleted; | |||||
private String name; | |||||
private String appId; | |||||
private String type; | |||||
private String status; | |||||
private String sysStateTime; | |||||
private String deptName; | |||||
private String deptCode; | |||||
private String fiveAreas; | |||||
private String constructionLevel; | |||||
private String isUnifiedConstruction; | |||||
private String deployType; | |||||
private String principal; | |||||
private String employeeCode; | |||||
private String areaName; | |||||
private String createTime; | |||||
private String modifiedTime; | |||||
} |
@@ -0,0 +1,17 @@ | |||||
package com.ningdatech.pmapi.irs.model.dto; | |||||
import lombok.Data; | |||||
import java.util.List; | |||||
@Data | |||||
public class ApiSearchResult { | |||||
private Boolean success; | |||||
private Integer code; | |||||
private String message; | |||||
private Integer totalCount; | |||||
private Integer pageSize; | |||||
private Integer pageNum; | |||||
private List<ApiApplySearchResult> apiApplySearchResult; | |||||
} |
@@ -0,0 +1,26 @@ | |||||
package com.ningdatech.pmapi.irs.model.dto; | |||||
import io.swagger.annotations.ApiModelProperty; | |||||
import lombok.Builder; | |||||
import lombok.Data; | |||||
import javax.validation.constraints.NotBlank; | |||||
/** | |||||
* @Classname PushProjectAppToIrsDto | |||||
* @Description | |||||
* @Date 2023/7/12 11:39 | |||||
* @Author PoffyZhang | |||||
*/ | |||||
@Data | |||||
@Builder | |||||
public class PushProjectAppToIrsDTO { | |||||
@ApiModelProperty("app code") | |||||
@NotBlank(message = "appCode 不能为空") | |||||
private String appCode; | |||||
@ApiModelProperty("项目编码") | |||||
@NotBlank(message = "项目编码 不能为空") | |||||
private String projectCode; | |||||
} |
@@ -0,0 +1,123 @@ | |||||
package com.ningdatech.pmapi.irs.model.res; | |||||
import com.ningdatech.basic.enumeration.Status; | |||||
import com.ningdatech.basic.model.ApiStatus; | |||||
import lombok.Data; | |||||
import lombok.NoArgsConstructor; | |||||
import java.io.Serializable; | |||||
/** | |||||
* <p> | |||||
* ApiResponse - 统一的接口返回值封装 | |||||
* </p> | |||||
* | |||||
* @author WendyYang | |||||
* @since 14:29 2022/9/29 | |||||
*/ | |||||
@Data | |||||
@NoArgsConstructor | |||||
public class ApiResponse<T> implements Serializable { | |||||
private static final long serialVersionUID = 532384723325394156L; | |||||
public static final int SUCCESS_CODE = 200; | |||||
public static final String SUCCESS_MSG = "success"; | |||||
public static final int ERROR_CODE = 500; | |||||
public static final String ERROR_MSG = "Internal server error"; | |||||
/** | |||||
* 状态码 | |||||
*/ | |||||
private Integer code; | |||||
/** | |||||
* 返回内容 | |||||
*/ | |||||
private String message; | |||||
/** | |||||
* 返回数据 | |||||
*/ | |||||
private T data; | |||||
private Boolean success; | |||||
/** | |||||
* 全参构造函数 | |||||
* | |||||
* @param code 状态码 | |||||
* @param message 返回内容 | |||||
* @param data 返回数据 | |||||
*/ | |||||
private ApiResponse(Integer code, String message, T data,Boolean success) { | |||||
this.code = code; | |||||
this.message = message; | |||||
this.data = data; | |||||
this.success = success; | |||||
} | |||||
/** | |||||
* 构造一个自定义的API返回 | |||||
* | |||||
* @param code 状态码 | |||||
* @param message 返回内容 | |||||
* @param data 返回数据 | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> of(Integer code, String message, T data,Boolean success) { | |||||
return new ApiResponse<T>(code, message, data,success); | |||||
} | |||||
/** | |||||
* 构造一个成功且不带数据的API返回 | |||||
* | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> ofSuccess() { | |||||
return ofSuccess(null); | |||||
} | |||||
/** | |||||
* 构造一个成功且带数据的API返回 | |||||
* | |||||
* @param data 返回数据 | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> ofSuccess(T data) { | |||||
return ofStatus(Status.OK, data,Boolean.TRUE); | |||||
} | |||||
/** | |||||
* 构造一个成功且自定义消息的API返回 | |||||
* | |||||
* @param message 返回内容 | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> ofMessage(String message) { | |||||
return of(Status.OK.getCode(), message, null,Boolean.TRUE); | |||||
} | |||||
/** | |||||
* 构造一个有状态的API返回 | |||||
* | |||||
* @param status 状态 {@link Status} | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> ofStatus(ApiStatus status) { | |||||
return ofStatus(status, null,Boolean.TRUE); | |||||
} | |||||
/** | |||||
* 构造一个有状态且带数据的API返回 | |||||
* | |||||
* @param status 状态 {@link Status} | |||||
* @param data 返回数据 | |||||
* @return ApiResponse | |||||
*/ | |||||
public static <T> ApiResponse<T> ofStatus(ApiStatus status, T data,Boolean success) { | |||||
return of(status.getCode(), status.getReasonPhrase(), data,success); | |||||
} | |||||
} |
@@ -178,7 +178,8 @@ public class DefaultDeclaredProjectManage { | |||||
startOrgInfoDto.setOrgModelMap(orgModelsList.stream() | startOrgInfoDto.setOrgModelMap(orgModelsList.stream() | ||||
.filter(v -> v.getOrgCode().equals(startOrgCode) | .filter(v -> v.getOrgCode().equals(startOrgCode) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | |||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType())|| | |||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -189,6 +190,7 @@ public class DefaultDeclaredProjectManage { | |||||
.filter(v -> v.getOrgCode().equals(startOrgParentCode) | .filter(v -> v.getOrgCode().equals(startOrgParentCode) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | && (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | ||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -211,6 +213,7 @@ public class DefaultDeclaredProjectManage { | |||||
.filter(v -> v.getOrgCode().equals(project.getHigherSuperOrgCode()) | .filter(v -> v.getOrgCode().equals(project.getHigherSuperOrgCode()) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | && (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | ||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -246,6 +249,7 @@ public class DefaultDeclaredProjectManage { | |||||
.filter(v -> v.getOrgCode().equals(startOrgCode) | .filter(v -> v.getOrgCode().equals(startOrgCode) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | && (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | ||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -256,6 +260,7 @@ public class DefaultDeclaredProjectManage { | |||||
.filter(v -> v.getOrgCode().equals(startOrgParentCode) | .filter(v -> v.getOrgCode().equals(startOrgParentCode) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | && (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | ||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -278,6 +283,7 @@ public class DefaultDeclaredProjectManage { | |||||
.filter(v -> v.getOrgCode().equals(project.getHigherSuperOrgCode()) | .filter(v -> v.getOrgCode().equals(project.getHigherSuperOrgCode()) | ||||
&& Boolean.FALSE.equals(v.getIsDelete()) | && Boolean.FALSE.equals(v.getIsDelete()) | ||||
&& (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | && (ProcessDefTypeEnum.SEAL.name().equals(v.getType()) || | ||||
ProcessDefTypeEnum.JOINT_REVIEW.name().equals(v.getType()) || | |||||
ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ProcessDefTypeEnum.DEFAULT.name().equals(v.getType()))) | ||||
.collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | .collect(Collectors.toMap(WflowOrgModels::getType, v -> v))); | ||||
@@ -20,4 +20,6 @@ public interface IProjectService extends IService<Project> { | |||||
public List<Long> getAllVersionProjectId(Long projectId); | public List<Long> getAllVersionProjectId(Long projectId); | ||||
Project getNewProject(Long projectId); | Project getNewProject(Long projectId); | ||||
Project getProjectByCode(String projectCode); | |||||
} | } |
@@ -70,4 +70,13 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl | |||||
return newest; | return newest; | ||||
} | } | ||||
@Override | |||||
public Project getProjectByCode(String projectCode) { | |||||
Project project = this.getOne(Wrappers.lambdaQuery(Project.class) | |||||
.eq(Project::getProjectCode, projectCode) | |||||
.eq(Project::getNewest,Boolean.TRUE) | |||||
.last(BizConst.LIMIT_1)); | |||||
return project; | |||||
} | |||||
} | } |
@@ -214,6 +214,14 @@ irs: | |||||
url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | ||||
appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | ||||
appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | ||||
push-app: | |||||
url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm | |||||
appScret: 496f0f2a19994f76b4fd9dae087366c7 | |||||
appKey: A331101453557202109017383 | |||||
search-app: | |||||
url: https://interface.zjzwfw.gov.cn/gateway/api/001003001029/dataSharing/XS8daav3bcemZ3Ra.htm | |||||
appScret: 496f0f2a19994f76b4fd9dae087366c7 | |||||
appKey: A331101453557202109017383 | |||||
hostname: iZbp13nwyvib53j4j1p2xoZ | hostname: iZbp13nwyvib53j4j1p2xoZ | ||||
login: | login: | ||||
@@ -217,6 +217,10 @@ irs: | |||||
url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | url: https://bcdsg.zj.gov.cn:8443/restapi/prod/IC33000020230427000001/irs-res-bill/report/pdfUrl | ||||
appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | appScret: BCDSGS_4ab4235d26a9a357170a39f3a13fd68c | ||||
appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | appKey: BCDSGA_d874c8e46b541eb4e8aac6510fd3351b | ||||
push-app: | |||||
url: https://interface.zjzwfw.gov.cn/gateway/api/proxy/001003001029/dataSharing/94wbaL1I1Pbz0648.htm | |||||
appScret: 496f0f2a19994f76b4fd9dae087366c7 | |||||
appKey: A331101453557202109017383 | |||||
hostname: iZ6mx01gyeodd80imxd2gbZ | hostname: iZ6mx01gyeodd80imxd2gbZ | ||||
login: | login: | ||||
phone-verify-code: | phone-verify-code: | ||||