131 lines
6.0 KiB
Python
131 lines
6.0 KiB
Python
|
|
#!/usr/bin/env python3
|
||
|
|
"""Generate remaining P2 Api/Executor/Controller triples."""
|
||
|
|
import os
|
||
|
|
ROOT = os.path.join(os.path.dirname(__file__), "..")
|
||
|
|
|
||
|
|
def w(rel, c):
|
||
|
|
p = os.path.join(ROOT, rel.replace('/', os.sep))
|
||
|
|
os.makedirs(os.path.dirname(p), exist_ok=True)
|
||
|
|
open(p, 'w', encoding='utf-8', newline='\n').write(c)
|
||
|
|
|
||
|
|
GET_OR_SAVE = [
|
||
|
|
("EvalContract", "EvalContract", "NODE_02", "EVAL_CONTRACT_NOT_FOUND", "业务合同", "eval-contract", "toContractCO"),
|
||
|
|
("EvalTeam", "EvalTeam", "NODE_03", "EVAL_TEAM_NOT_FOUND", "项目组成立", "eval-team", "toTeamCO"),
|
||
|
|
("EvalSurvey", "EvalSurvey", "NODE_04", "EVAL_SURVEY_NOT_FOUND", "现场踏勘", "eval-survey", "toSurveyCO"),
|
||
|
|
("EvalInternalReview", "EvalInternalReview", "NODE_06", "EVAL_INTERNAL_REVIEW_NOT_FOUND", "内部审核", "eval-internal-review", "toInternalCO"),
|
||
|
|
("EvalTechReview", "EvalTechReview", "NODE_07", "EVAL_TECH_REVIEW_NOT_FOUND", "技术审核", "eval-tech-review", "toTechCO"),
|
||
|
|
("EvalProcessControl", "EvalProcessControl", "NODE_08", "EVAL_PROCESS_NOT_FOUND", "过程控制", "eval-process-control", "toProcessCO"),
|
||
|
|
]
|
||
|
|
|
||
|
|
for entity, name, node, err, tag, path, conv in GET_OR_SAVE:
|
||
|
|
w(f"safety-eval-client/src/main/java/org/qinan/safetyeval/client/api/institution/{name}Api.java", f"""package org.qinan.safetyeval.client.api.institution;
|
||
|
|
|
||
|
|
import org.qinan.safetyeval.client.co.institution.{name}CO;
|
||
|
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||
|
|
import org.qinan.safetyeval.client.dto.institution.{name}SaveCmd;
|
||
|
|
|
||
|
|
public interface {name}Api {{
|
||
|
|
SingleResponse<{name}CO> getOrSave({name}SaveCmd cmd);
|
||
|
|
SingleResponse<{name}CO> getByProject(String projectId);
|
||
|
|
}}
|
||
|
|
""")
|
||
|
|
w(f"safety-eval-app/src/main/java/org/qinan/safetyeval/app/executor/institution/{name}Executor.java", f"""package org.qinan.safetyeval.app.executor.institution;
|
||
|
|
|
||
|
|
import org.qinan.safetyeval.app.executor.institution.support.EvalCmdCopy;
|
||
|
|
import org.qinan.safetyeval.app.executor.institution.support.EvalNodeCoConverter;
|
||
|
|
import org.qinan.safetyeval.app.executor.institution.support.EvalProjectNodeSupport;
|
||
|
|
import org.qinan.safetyeval.client.api.institution.{name}Api;
|
||
|
|
import org.qinan.safetyeval.client.co.institution.{name}CO;
|
||
|
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||
|
|
import org.qinan.safetyeval.client.dto.institution.{name}SaveCmd;
|
||
|
|
import org.qinan.safetyeval.domain.entity.EvalProjectEntity;
|
||
|
|
import org.qinan.safetyeval.domain.entity.{entity}Entity;
|
||
|
|
import org.qinan.safetyeval.domain.exception.BizException;
|
||
|
|
import org.qinan.safetyeval.domain.exception.ErrorCode;
|
||
|
|
import org.qinan.safetyeval.domain.gateway.{entity}Gateway;
|
||
|
|
import org.qinan.safetyeval.domain.support.EvalNodeCodes;
|
||
|
|
import org.springframework.stereotype.Service;
|
||
|
|
|
||
|
|
import javax.annotation.Resource;
|
||
|
|
|
||
|
|
@Service
|
||
|
|
public class {name}Executor implements {name}Api {{
|
||
|
|
|
||
|
|
@Resource
|
||
|
|
private {entity}Gateway {entity[0].lower() + entity[1:]}Gateway;
|
||
|
|
@Resource
|
||
|
|
private EvalProjectNodeSupport evalProjectNodeSupport;
|
||
|
|
|
||
|
|
@Override
|
||
|
|
public SingleResponse<{name}CO> getOrSave({name}SaveCmd cmd) {{
|
||
|
|
Long projectId = Long.parseLong(cmd.getProjectId());
|
||
|
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(projectId);
|
||
|
|
evalProjectNodeSupport.assertWrite(projectId, EvalNodeCodes.{node});
|
||
|
|
{entity}Entity entity = {entity[0].lower() + entity[1:]}Gateway.getByProjectId(projectId, project.getOrgId());
|
||
|
|
if (entity == null) {{
|
||
|
|
entity = new {entity}Entity();
|
||
|
|
entity.setOrgId(project.getOrgId());
|
||
|
|
entity.setProjectId(projectId);
|
||
|
|
entity.setStatusCode(1);
|
||
|
|
evalProjectNodeSupport.fillNodeStatus(1, entity);
|
||
|
|
entity = {entity[0].lower() + entity[1:]}Gateway.save(entity);
|
||
|
|
}}
|
||
|
|
EvalCmdCopy.apply(cmd, entity);
|
||
|
|
evalProjectNodeSupport.fillNodeStatus(entity.getStatusCode(), entity);
|
||
|
|
entity = {entity[0].lower() + entity[1:]}Gateway.modify(entity);
|
||
|
|
evalProjectNodeSupport.afterNodeSaved(projectId, EvalNodeCodes.{node}, entity.getStatusCode());
|
||
|
|
return SingleResponse.success(EvalNodeCoConverter.{conv}(entity));
|
||
|
|
}}
|
||
|
|
|
||
|
|
@Override
|
||
|
|
public SingleResponse<{name}CO> getByProject(String projectId) {{
|
||
|
|
Long pid = Long.parseLong(projectId);
|
||
|
|
evalProjectNodeSupport.assertRead(pid);
|
||
|
|
EvalProjectEntity project = evalProjectNodeSupport.requireProject(pid);
|
||
|
|
{entity}Entity entity = {entity[0].lower() + entity[1:]}Gateway.getByProjectId(pid, project.getOrgId());
|
||
|
|
if (entity == null) {{
|
||
|
|
throw new BizException(ErrorCode.{err});
|
||
|
|
}}
|
||
|
|
return SingleResponse.success(EvalNodeCoConverter.{conv}(entity));
|
||
|
|
}}
|
||
|
|
}}
|
||
|
|
""")
|
||
|
|
w(f"safety-eval-adapter/src/main/java/org/qinan/safetyeval/adapter/web/institution/{name}Controller.java", f"""package org.qinan.safetyeval.adapter.web.institution;
|
||
|
|
|
||
|
|
import io.swagger.annotations.Api;
|
||
|
|
import io.swagger.annotations.ApiOperation;
|
||
|
|
import io.swagger.annotations.ApiParam;
|
||
|
|
import org.qinan.safetyeval.client.api.institution.{name}Api;
|
||
|
|
import org.qinan.safetyeval.client.co.institution.{name}CO;
|
||
|
|
import org.qinan.safetyeval.client.dto.SingleResponse;
|
||
|
|
import org.qinan.safetyeval.client.dto.institution.{name}SaveCmd;
|
||
|
|
import org.springframework.validation.annotation.Validated;
|
||
|
|
import org.springframework.web.bind.annotation.*;
|
||
|
|
|
||
|
|
import javax.annotation.Resource;
|
||
|
|
|
||
|
|
@Api(tags = "机构端-{tag}")
|
||
|
|
@RestController
|
||
|
|
@RequestMapping("/safetyEval/institution/{path}")
|
||
|
|
public class {name}Controller {{
|
||
|
|
|
||
|
|
@Resource
|
||
|
|
private {name}Api {name[0].lower() + name[1:]}Api;
|
||
|
|
|
||
|
|
@ApiOperation("按项目获取或保存")
|
||
|
|
@PostMapping("/get-or-save")
|
||
|
|
public SingleResponse<{name}CO> getOrSave(@Validated @RequestBody {name}SaveCmd cmd) {{
|
||
|
|
return {name[0].lower() + name[1:]}Api.getOrSave(cmd);
|
||
|
|
}}
|
||
|
|
|
||
|
|
@ApiOperation("按项目查询")
|
||
|
|
@GetMapping("/get")
|
||
|
|
public SingleResponse<{name}CO> get(@ApiParam("项目ID") @RequestParam String projectId) {{
|
||
|
|
return {name[0].lower() + name[1:]}Api.getByProject(projectId);
|
||
|
|
}}
|
||
|
|
}}
|
||
|
|
""")
|
||
|
|
print(name)
|
||
|
|
|
||
|
|
print("get-or-save done")
|