466 lines
17 KiB
Python
466 lines
17 KiB
Python
#!/usr/bin/env python3
|
|
"""Generate P2 gateway impl, query, domain service, client and adapter layers."""
|
|
import os
|
|
import re
|
|
|
|
ROOT = os.path.join(os.path.dirname(__file__), "..")
|
|
|
|
ENTITIES = [
|
|
("EvalRiskAnalysis", "NODE_01", True, None),
|
|
("EvalRiskParticipant", "NODE_01", False, "risk"),
|
|
("EvalContract", "NODE_02", True, None),
|
|
("EvalTeam", "NODE_03", True, None),
|
|
("EvalSurvey", "NODE_04", True, None),
|
|
("EvalSurveyNotice", "NODE_04", False, "survey_unique"),
|
|
("EvalSurveyCheckin", "NODE_04", False, "survey"),
|
|
("EvalSurveyAttach", "NODE_04", False, "survey"),
|
|
("EvalReportDraft", "NODE_05", False, None),
|
|
("EvalInternalReview", "NODE_06", True, None),
|
|
("EvalTechReview", "NODE_07", True, None),
|
|
("EvalProcessControl", "NODE_08", True, None),
|
|
("EvalSignTask", "SIGN", False, None),
|
|
("EvalSignRecord", "SIGN", False, "task"),
|
|
("EvalReport", "NODE_08", False, None),
|
|
]
|
|
|
|
def kebab(name):
|
|
s = re.sub('(.)([A-Z][a-z]+)', r'\1-\2', name)
|
|
return re.sub('([a-z0-9])([A-Z])', r'\1-\2', s).lower().replace('eval-', 'eval-')
|
|
|
|
def resource_path(name):
|
|
mapping = {
|
|
"EvalRiskAnalysis": "eval-risk-analysis",
|
|
"EvalRiskParticipant": "eval-risk-participant",
|
|
"EvalContract": "eval-contract",
|
|
"EvalTeam": "eval-team",
|
|
"EvalSurvey": "eval-survey",
|
|
"EvalSurveyNotice": "eval-survey-notice",
|
|
"EvalSurveyCheckin": "eval-survey-checkin",
|
|
"EvalSurveyAttach": "eval-survey-attach",
|
|
"EvalReportDraft": "eval-report-draft",
|
|
"EvalInternalReview": "eval-internal-review",
|
|
"EvalTechReview": "eval-tech-review",
|
|
"EvalProcessControl": "eval-process-control",
|
|
"EvalSignTask": "eval-sign-task",
|
|
"EvalSignRecord": "eval-sign-record",
|
|
"EvalReport": "eval-report",
|
|
}
|
|
return mapping[name]
|
|
|
|
def write(rel, content):
|
|
full = os.path.join(ROOT, rel.replace("/", os.sep))
|
|
os.makedirs(os.path.dirname(full), exist_ok=True)
|
|
with open(full, "w", encoding="utf-8", newline="\n") as f:
|
|
f.write(content)
|
|
|
|
def gen_query(name):
|
|
content = f"""package org.qinan.safetyeval.domain.query;
|
|
|
|
import lombok.Data;
|
|
|
|
@Data
|
|
public class {name}Query {{
|
|
|
|
private Long pageNum;
|
|
private Long pageSize;
|
|
private Long orgId;
|
|
private Long projectId;
|
|
private Long riskId;
|
|
private Long surveyId;
|
|
private Long signTaskId;
|
|
}}
|
|
"""
|
|
write(f"safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/query/{name}Query.java", content)
|
|
|
|
def gen_gateway(name, by_project, list_by):
|
|
methods = [f" {name}Entity save({name}Entity entity);",
|
|
f" {name}Entity get(Long id);",
|
|
f" {name}Entity modify({name}Entity entity);",
|
|
" void delete(Long id);"]
|
|
if by_project:
|
|
methods.append(f" {name}Entity getByProjectId(Long projectId, Long orgId);")
|
|
if list_by == "risk":
|
|
methods.append(f" java.util.List<{name}Entity> listByRiskId(Long riskId, Long orgId);")
|
|
elif list_by == "survey":
|
|
methods.append(f" java.util.List<{name}Entity> listBySurveyId(Long surveyId, Long orgId);")
|
|
elif list_by == "task":
|
|
methods.append(f" java.util.List<{name}Entity> listBySignTaskId(Long signTaskId, Long orgId);")
|
|
if name == "EvalSurveyNotice":
|
|
methods.append(f" {name}Entity getBySurveyId(Long surveyId, Long orgId);")
|
|
if name in ("EvalReportDraft", "EvalSignTask"):
|
|
methods.append(f" PageResult<{name}Entity> page({name}Query query);")
|
|
if name == "EvalReportDraft":
|
|
methods.append(" int nextDraftVersionNo(Long projectId, Long orgId);")
|
|
if name == "EvalReport":
|
|
methods.append(f" {name}Entity saveInternal({name}Entity entity);")
|
|
body = "\n".join(methods)
|
|
content = f"""package org.qinan.safetyeval.domain.gateway;
|
|
|
|
import org.qinan.safetyeval.domain.entity.{name}Entity;
|
|
import org.qinan.safetyeval.domain.query.{name}Query;
|
|
import org.qinan.safetyeval.domain.query.PageResult;
|
|
|
|
import java.util.List;
|
|
|
|
public interface {name}Gateway {{
|
|
|
|
{body}
|
|
}}
|
|
"""
|
|
write(f"safety-eval-domain/src/main/java/org/qinan/safetyeval/domain/gateway/{name}Gateway.java", content)
|
|
|
|
def gen_gateway_impl(name, by_project, list_by, has_delete_list):
|
|
mapper_var = name[0].lower() + name[1:] + "Mapper"
|
|
extra_methods = ""
|
|
if by_project:
|
|
extra_methods += f"""
|
|
@Override
|
|
public {name}Entity getByProjectId(Long projectId, Long orgId) {{
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
wrapper.eq({name}DO::getProjectId, projectId);
|
|
if (orgId != null) {{
|
|
wrapper.eq({name}DO::getOrgId, orgId);
|
|
}}
|
|
return toEntity({mapper_var}.selectOne(wrapper));
|
|
}}
|
|
"""
|
|
if name == "EvalSurveyNotice":
|
|
extra_methods += f"""
|
|
@Override
|
|
public {name}Entity getBySurveyId(Long surveyId, Long orgId) {{
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
wrapper.eq({name}DO::getSurveyId, surveyId);
|
|
if (orgId != null) {{
|
|
wrapper.eq({name}DO::getOrgId, orgId);
|
|
}}
|
|
return toEntity({mapper_var}.selectOne(wrapper));
|
|
}}
|
|
"""
|
|
if list_by == "risk":
|
|
extra_methods += f"""
|
|
@Override
|
|
public List<{name}Entity> listByRiskId(Long riskId, Long orgId) {{
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
wrapper.eq({name}DO::getRiskId, riskId);
|
|
if (orgId != null) {{
|
|
wrapper.eq({name}DO::getOrgId, orgId);
|
|
}}
|
|
wrapper.orderByAsc({name}DO::getSortOrder);
|
|
return {mapper_var}.selectList(wrapper).stream().map(this::toEntity).collect(Collectors.toList());
|
|
}}
|
|
"""
|
|
elif list_by == "survey":
|
|
extra_methods += f"""
|
|
@Override
|
|
public List<{name}Entity> listBySurveyId(Long surveyId, Long orgId) {{
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
wrapper.eq({name}DO::getSurveyId, surveyId);
|
|
if (orgId != null) {{
|
|
wrapper.eq({name}DO::getOrgId, orgId);
|
|
}}
|
|
wrapper.orderByDesc({name}DO::getCreateTime);
|
|
return {mapper_var}.selectList(wrapper).stream().map(this::toEntity).collect(Collectors.toList());
|
|
}}
|
|
"""
|
|
elif list_by == "task":
|
|
extra_methods += f"""
|
|
@Override
|
|
public List<{name}Entity> listBySignTaskId(Long signTaskId, Long orgId) {{
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
wrapper.eq({name}DO::getSignTaskId, signTaskId);
|
|
if (orgId != null) {{
|
|
wrapper.eq({name}DO::getOrgId, orgId);
|
|
}}
|
|
wrapper.orderByDesc({name}DO::getCreateTime);
|
|
return {mapper_var}.selectList(wrapper).stream().map(this::toEntity).collect(Collectors.toList());
|
|
}}
|
|
"""
|
|
page_method = ""
|
|
if name in ("EvalReportDraft", "EvalSignTask"):
|
|
page_method = f"""
|
|
@Override
|
|
public PageResult<{name}Entity> page({name}Query query) {{
|
|
Page<{name}DO> page = new Page<>(query.getPageNum(), query.getPageSize());
|
|
LambdaQueryWrapper<{name}DO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq({name}DO::getDeleteEnum, "false");
|
|
if (query.getOrgId() != null) {{
|
|
wrapper.eq({name}DO::getOrgId, query.getOrgId());
|
|
}}
|
|
if (query.getProjectId() != null) {{
|
|
wrapper.eq({name}DO::getProjectId, query.getProjectId());
|
|
}}
|
|
wrapper.orderByDesc({name}DO::getCreateTime);
|
|
IPage<{name}DO> result = {mapper_var}.selectPage(page, wrapper);
|
|
List<{name}Entity> records = result.getRecords().stream().map(this::toEntity).collect(Collectors.toList());
|
|
return PageResult.of(records, result.getTotal(), result.getCurrent(), result.getSize());
|
|
}}
|
|
"""
|
|
version_method = ""
|
|
if name == "EvalReportDraft":
|
|
version_method = """
|
|
@Override
|
|
public int nextDraftVersionNo(Long projectId, Long orgId) {
|
|
LambdaQueryWrapper<EvalReportDraftDO> wrapper = new LambdaQueryWrapper<>();
|
|
wrapper.eq(EvalReportDraftDO::getDeleteEnum, "false");
|
|
wrapper.eq(EvalReportDraftDO::getProjectId, projectId);
|
|
if (orgId != null) {
|
|
wrapper.eq(EvalReportDraftDO::getOrgId, orgId);
|
|
}
|
|
wrapper.orderByDesc(EvalReportDraftDO::getDraftVersionNo);
|
|
wrapper.last("LIMIT 1");
|
|
EvalReportDraftDO latest = evalReportDraftMapper.selectOne(wrapper);
|
|
return latest == null || latest.getDraftVersionNo() == null ? 1 : latest.getDraftVersionNo() + 1;
|
|
}
|
|
"""
|
|
internal_save = ""
|
|
if name == "EvalReport":
|
|
internal_save = f"""
|
|
@Override
|
|
public {name}Entity saveInternal({name}Entity entity) {{
|
|
return save(entity);
|
|
}}
|
|
"""
|
|
content = f"""package org.qinan.safetyeval.infrastructure.gatewayimpl;
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import org.qinan.safetyeval.domain.entity.{name}Entity;
|
|
import org.qinan.safetyeval.domain.gateway.{name}Gateway;
|
|
import org.qinan.safetyeval.domain.query.{name}Query;
|
|
import org.qinan.safetyeval.domain.query.PageResult;
|
|
import org.qinan.safetyeval.infrastructure.dataobject.{name}DO;
|
|
import org.qinan.safetyeval.infrastructure.mapper.{name}Mapper;
|
|
import org.qinan.safetyeval.infrastructure.support.EvalBeanCopy;
|
|
import org.qinan.safetyeval.infrastructure.support.InsertFieldDefaults;
|
|
import org.qinan.safetyeval.infrastructure.support.OrgContextResolver;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.util.List;
|
|
import java.util.stream.Collectors;
|
|
|
|
@Component
|
|
public class {name}GatewayImpl implements {name}Gateway {{
|
|
|
|
@Resource
|
|
private {name}Mapper {mapper_var};
|
|
|
|
@Resource
|
|
private OrgContextResolver orgContextResolver;
|
|
|
|
@Override
|
|
public {name}Entity save({name}Entity entity) {{
|
|
{name}DO dataObject = toDO(entity);
|
|
InsertFieldDefaults.apply(dataObject);
|
|
{mapper_var}.insert(dataObject);
|
|
entity.setId(dataObject.getId());
|
|
return entity;
|
|
}}
|
|
|
|
@Override
|
|
public {name}Entity get(Long id) {{
|
|
{name}DO dataObject = {mapper_var}.selectById(id);
|
|
if (dataObject == null || !"false".equals(dataObject.getDeleteEnum())) {{
|
|
return null;
|
|
}}
|
|
return toEntity(dataObject);
|
|
}}
|
|
|
|
@Override
|
|
public {name}Entity modify({name}Entity entity) {{
|
|
{name}DO dataObject = toDO(entity);
|
|
dataObject.setId(entity.getId());
|
|
InsertFieldDefaults.applyForUpdate(dataObject);
|
|
{mapper_var}.updateById(dataObject);
|
|
return get(entity.getId());
|
|
}}
|
|
|
|
@Override
|
|
public void delete(Long id) {{
|
|
{mapper_var}.deleteById(id);
|
|
}}
|
|
{extra_methods}{page_method}{version_method}{internal_save}
|
|
private {name}DO toDO({name}Entity entity) {{
|
|
{name}DO dataObject = EvalBeanCopy.toNew(entity, {name}DO.class);
|
|
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));
|
|
return dataObject;
|
|
}}
|
|
|
|
private {name}Entity toEntity({name}DO dataObject) {{
|
|
if (dataObject == null) {{
|
|
return null;
|
|
}}
|
|
return EvalBeanCopy.toNew(dataObject, {name}Entity.class);
|
|
}}
|
|
}}
|
|
"""
|
|
write(f"safety-eval-infrastructure/src/main/java/org/qinan/safetyeval/infrastructure/gatewayimpl/{name}GatewayImpl.java", content)
|
|
|
|
def gen_co(name):
|
|
content = f"""package org.qinan.safetyeval.client.co.institution;
|
|
|
|
import lombok.Data;
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
|
|
@Data
|
|
public class {name}CO {{
|
|
|
|
private String id;
|
|
private String orgId;
|
|
private String projectId;
|
|
private String riskId;
|
|
private String surveyId;
|
|
private String signTaskId;
|
|
private LocalDate analysisDate;
|
|
private String evalTypeCode;
|
|
private String evalTypeName;
|
|
private String industryCode;
|
|
private String industryName;
|
|
private String evalScope;
|
|
private Integer inBizScopeFlag;
|
|
private String unitOverview;
|
|
private String industryRiskDesc;
|
|
private Integer staffMatchCode;
|
|
private Integer needExpertCode;
|
|
private Integer capabilityCode;
|
|
private Integer feasibleCode;
|
|
private Integer economicCode;
|
|
private Integer riskLevelCode;
|
|
private String riskLevelName;
|
|
private Integer signContractCode;
|
|
private String conclusionContent;
|
|
private String approverName;
|
|
private Integer approvalOpinionCode;
|
|
private String approvalOpinionName;
|
|
private LocalDate approvalDate;
|
|
private Integer statusCode;
|
|
private String statusName;
|
|
private String personnelId;
|
|
private String personnelName;
|
|
private String deptName;
|
|
private Integer signStatusCode;
|
|
private String signStatusName;
|
|
private String signFileUrl;
|
|
private Integer sortOrder;
|
|
private String orgName;
|
|
private String contractNo;
|
|
private String projectName;
|
|
private String projectIntro;
|
|
private Long amountFen;
|
|
private String projectTypeCode;
|
|
private String projectTypeName;
|
|
private String riskSummary;
|
|
private String projectRegion;
|
|
private String projectAddress;
|
|
private LocalDate contractStartDate;
|
|
private LocalDate contractEndDate;
|
|
private Integer toxicFlag;
|
|
private Integer precursorFlag;
|
|
private Integer crossProvinceFlag;
|
|
private String businessScope;
|
|
private String enterpriseName;
|
|
private String industryCategory;
|
|
private String officeAddress;
|
|
private String creditCode;
|
|
private String postCode;
|
|
private String enterprisePhone;
|
|
private String fax;
|
|
private String legalPerson;
|
|
private String contactName;
|
|
private Integer staffCount;
|
|
private String scanFileUrl;
|
|
private String leaderPersonnelId;
|
|
private String leaderName;
|
|
private String controlPersonnelId;
|
|
private String controlName;
|
|
private Integer memberCount;
|
|
private LocalDateTime finishTime;
|
|
private LocalDate planSurveyDate;
|
|
private String surveyPlace;
|
|
private Integer noticeDoneFlag;
|
|
private Integer inspectDoneFlag;
|
|
private Integer rectifyDoneFlag;
|
|
private Integer enterpriseDoneFlag;
|
|
private Integer reviewDoneFlag;
|
|
private String noticeContent;
|
|
private String memberSnapshot;
|
|
private String stampFileUrl;
|
|
private Integer taskStatusCode;
|
|
private String taskStatusName;
|
|
private LocalDateTime planTime;
|
|
private Integer checkinTypeCode;
|
|
private String checkinTypeName;
|
|
private LocalDateTime checkinTime;
|
|
private java.math.BigDecimal longitude;
|
|
private java.math.BigDecimal latitude;
|
|
private String address;
|
|
private Integer facePassFlag;
|
|
private String photoUrls;
|
|
private String signImageUrl;
|
|
private String attachTypeCode;
|
|
private String attachTypeName;
|
|
private String fileName;
|
|
private String fileUrl;
|
|
private Integer reviewResultCode;
|
|
private String reviewResultName;
|
|
private String reviewContent;
|
|
private Integer draftVersionNo;
|
|
private String templateCode;
|
|
private String templateName;
|
|
private String contentUrl;
|
|
private String hintContent;
|
|
private String draftId;
|
|
private String reviewerPersonnelId;
|
|
private String reviewerName;
|
|
private Integer resultCode;
|
|
private String resultName;
|
|
private String opinionContent;
|
|
private LocalDateTime reviewTime;
|
|
private String controllerPersonnelId;
|
|
private String controllerName;
|
|
private Integer precheckPassFlag;
|
|
private Integer archiveFlag;
|
|
private LocalDateTime controlTime;
|
|
private String nodeCode;
|
|
private String nodeName;
|
|
private String bizTypeCode;
|
|
private String bizTypeName;
|
|
private String bizRefId;
|
|
private String signerPersonnelId;
|
|
private String signerName;
|
|
private String taskTitle;
|
|
private LocalDateTime expireTime;
|
|
private LocalDateTime signTime;
|
|
private Integer clientTypeCode;
|
|
private String clientTypeName;
|
|
private String customerId;
|
|
private String reportNo;
|
|
private String reportName;
|
|
private Integer reportYear;
|
|
private Integer publicFlag;
|
|
private Integer completeFlag;
|
|
private Integer reportStatusCode;
|
|
private String reportStatusName;
|
|
private LocalDateTime archiveTime;
|
|
}}
|
|
"""
|
|
write(f"safety-eval-client/src/main/java/org/qinan/safetyeval/client/co/institution/{name}CO.java", content)
|
|
|
|
for e in ENTITIES:
|
|
name, node, by_project, list_by = e
|
|
gen_query(name)
|
|
gen_gateway(name, by_project, list_by)
|
|
gen_gateway_impl(name, by_project, list_by if list_by not in ("survey_unique",) else "survey", False)
|
|
gen_co(name)
|
|
print(name)
|
|
|
|
print("done")
|