Merge branch 'dev' into dev_1.0.1

dev_1.0.1
luotaiqian 2026-07-15 10:01:19 +08:00
commit d73d0de775
14 changed files with 260 additions and 37 deletions

View File

@ -22,6 +22,7 @@ public enum ErrorCode {
// ---- 人员信息 ----
ORG_PERSONNEL_NOT_FOUND("01-05-001", "人员信息不存在"),
ORG_PERSONNEL_ACCOUNT_EXISTS("01-05-002", "账号已存在"),
ORG_PERSONNEL_IDCARDNO_EXISTS("01-05-003", "身份证已存在"),
// ---- 人员证书 ----
ORG_PERSONNEL_CERT_NOT_FOUND("01-06-001", "人员证书不存在"),

View File

@ -28,4 +28,6 @@ public interface OrgPersonnelGateway {
void delete(Long id);
PageResult<OrgPersonnelEntity> page(OrgPersonnelQuery query);
OrgPersonnelEntity findAnyByIdCardNo(String idCardNo);
}

View File

@ -30,6 +30,14 @@ public class OrgPersonnelDomainService {
entity.setId(existing.getId());
return orgPersonnelGateway.restore(entity);
}
OrgPersonnelEntity existingIdCardNo = orgPersonnelGateway.findAnyByIdCardNo(entity.getIdCardNo());
if (existingIdCardNo != null) {
if (!isSoftDeleted(existingIdCardNo)) {
throw new BizException(ErrorCode.ORG_PERSONNEL_IDCARDNO_EXISTS);
}
entity.setId(existingIdCardNo.getId());
return orgPersonnelGateway.restore(entity);
}
return orgPersonnelGateway.save(entity);
}
@ -43,11 +51,23 @@ public class OrgPersonnelDomainService {
throw new BizException(ErrorCode.ORG_PERSONNEL_NOT_FOUND);
}
assertAccountUnique(entity.getAccount(), entity.getId());
assertIdcarNoUnique(entity.getIdCardNo(), entity.getId());
mergeForModify(existing, entity);
existing.setJoinWorkDate(entity.getJoinWorkDate());
return orgPersonnelGateway.modify(existing);
}
private void assertIdcarNoUnique(String idCardNo, Long excludeId) {
if (!StringUtils.hasText(idCardNo)) {
return;
}
OrgPersonnelEntity found = orgPersonnelGateway.findAnyByIdCardNo(idCardNo);
if (found != null && !isSoftDeleted(found)
&& (excludeId == null || !found.getId().equals(excludeId))) {
throw new BizException(ErrorCode.ORG_PERSONNEL_IDCARDNO_EXISTS);
}
}
private void mergeForModify(OrgPersonnelEntity target, OrgPersonnelEntity patch) {
if (StringUtils.hasText(patch.getUserName())) {
target.setUserName(patch.getUserName());

View File

@ -153,7 +153,7 @@ public class OrgPersonnelGatewayImpl implements OrgPersonnelGateway {
wrapper.in(OrgPersonnelDO::getId, query.getPersonnelIds());
}
}
wrapper.orderByDesc(OrgPersonnelDO::getId);
Page<OrgPersonnelDO> page = new Page<>(query.getPageNum(), query.getPageSize());
IPage<OrgPersonnelDO> result = orgPersonnelMapper.selectPage(page, wrapper);
@ -164,6 +164,15 @@ public class OrgPersonnelGatewayImpl implements OrgPersonnelGateway {
return PageResult.of(entities, result.getTotal(), result.getCurrent(), result.getSize());
}
@Override
public OrgPersonnelEntity findAnyByIdCardNo(String idCardNo) {
OrgPersonnelDO orgPersonnelDO = orgPersonnelMapper.selectOne(new LambdaQueryWrapper<OrgPersonnelDO>().eq(OrgPersonnelDO::getIdCardNo, idCardNo));
if (orgPersonnelDO != null) {
return toEntity(orgPersonnelDO);
}
return null;
}
private OrgPersonnelDO toDO(OrgPersonnelEntity entity) {
OrgPersonnelDO dataObject = new OrgPersonnelDO();
dataObject.setOrgId(orgContextResolver.resolveOrgId(entity.getOrgId()));

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/13 17:09:39] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>大屏</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/14 16:52:04] App_Identifier[safetyEval-h5]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><meta charset="UTF-8" name="referrer" content="strict-origin-when-cross-origin"/><title>大屏</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -126,4 +126,4 @@
}
mergeParams();
})();
})();</script><script defer="defer" src="/safetyEval-h5/static/js/548.ac3036a0ff72bbda.js"></script><script defer="defer" src="/safetyEval-h5/static/js/551.40cd16b83ccef834.js"></script><script defer="defer" src="/safetyEval-h5/static/js/485.cc16547839dceff2.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.4d60e7ad2f43eae5.js"></script><link href="/safetyEval-h5/static/css/main.d529a13088ceae37.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/13 17:09:39] App_Identifier[safetyEval-h5] Frontend_Branch[dev] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>
})();</script><script defer="defer" src="/safetyEval-h5/static/js/548.ac3036a0ff72bbda.js"></script><script defer="defer" src="/safetyEval-h5/static/js/551.40cd16b83ccef834.js"></script><script defer="defer" src="/safetyEval-h5/static/js/485.cc16547839dceff2.js"></script><script defer="defer" src="/safetyEval-h5/static/js/main.acbe16f096b75fe9.js"></script><link href="/safetyEval-h5/static/css/main.82ee4667fd2973b4.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto;"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.2 Frontend_Env[production] Build_Date[2026/7/14 16:52:04] App_Identifier[safetyEval-h5] Frontend_Branch[dev] Backend_Branch[<branch-name>]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body><script src="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Cesium.js"></script><link href="https://cesium.com/downloads/cesiumjs/releases/1.91/Build/Cesium/Widgets/widgets.css" rel="stylesheet"></html>

View File

@ -4420,6 +4420,36 @@
margin-top: 8px;
}
.baidu-map-search {
width: 100%;
height: 36px;
padding: 4px 11px;
border: 1px solid #d9d9d9;
border-radius: 6px;
outline: none;
box-sizing: border-box;
margin-bottom: 12px;
font-size: 14px;
transition: border-color 0.2s;
}
.baidu-map-search:focus {
border-color: #4096ff;
box-shadow: 0 0 0 2px rgba(5, 145, 255, 0.1);
}
.baidu-map-search::placeholder {
color: #bfbfbf;
}
.baidu-map-container {
width: 100%;
height: 480px;
border-radius: 6px;
overflow: hidden;
}
/* 百度地图 Autocomplete 联想面板默认 z-index 过低,被 Modal 遮挡 */
.tangram-suggestion-main {
z-index: 10000 !important;
}
.register-more {
position: relative;
padding-bottom: 20px;

View File

@ -1,4 +1,4 @@
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/13 17:08:28] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
<!doctype html><html lang="zh"><head data-built-info="@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/14 17:06:09] App_Identifier[safetyEval]"><meta charset="UTF-8"/><meta name="renderer" content="webkit"/><meta http-equiv="X-UA-Compatible" content="IE=edge,Chrome=1"/><meta name="viewport" content="width=device-width,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover"><title>--</title><script>(function () {
const APP_ENV = {
antd: {
'ant-prefix': 'micro-temp',
@ -89,4 +89,4 @@
},
}
}</script><script defer="defer" src="/safetyEval/static/js/934.ada55f776be86394.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.f12da2fe2f6ad2ae.js"></script><script defer="defer" src="/safetyEval/static/js/main.131658666272cca6.js"></script><link href="/safetyEval/static/css/main.8811a0ceb6a117dc.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/13 17:08:28] App_Identifier[safetyEval] Frontend_Branch[dev] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>
}</script><script defer="defer" src="/safetyEval/static/js/323.fd0657fd2fffbe7a.js"></script><script defer="defer" src="/safetyEval/static/js/121.ae75e71830bf4ae0.js"></script><script defer="defer" src="/safetyEval/static/js/289.ab5c99a14babc2d4.js"></script><script defer="defer" src="/safetyEval/static/js/main.5a03dc1748bb1352.js"></script><link href="/safetyEval/static/css/main.1d4eeef67f56f89e.css" rel="stylesheet"></head><body><noscript>此网页需要开启JavaScript功能。</noscript><div id="root" style="width: 100%; height: 100%; position: relative;overflow-y: auto"></div><script type="text/javascript">/* @cqsjjb/script 输出当前应用基本信息 */console.log("%c@cqsjjb/scripts@2.0.0-rspack.1 Frontend_Env[production] Build_Date[2026/7/14 17:06:09] App_Identifier[safetyEval] Frontend_Branch[dev] Backend_Branch[dev]", "color: #1890ff; border-radius: 2px; padding: 0 4px; border: 1px solid #1890ff; background: #f9fcff")</script></body></html>

View File

@ -1516,6 +1516,36 @@
}
}
.baidu-map-search {
width: 100%;
height: 36px;
padding: 4px 11px;
border: 1px solid #d9d9d9;
border-radius: 6px;
outline: none;
box-sizing: border-box;
margin-bottom: 12px;
font-size: 14px;
transition: border-color 0.2s;
}
.baidu-map-search:focus {
border-color: #4096ff;
box-shadow: 0 0 0 2px rgba(5, 145, 255, 0.1);
}
.baidu-map-search::placeholder {
color: #bfbfbf;
}
.baidu-map-container {
width: 100%;
height: 480px;
border-radius: 6px;
overflow: hidden;
}
/* 百度地图 Autocomplete 联想面板默认 z-index 过低,被 Modal 遮挡 */
.tangram-suggestion-main {
z-index: 10000 !important;
}
.qual-confirm-form .summary-card {
background: #fff;
border: 1px solid #d9d9d9;
@ -1602,6 +1632,137 @@
gap: 0.5rem;
}
.qual-monitor .page-desc {
font-size: 0.82rem;
color: #64748b;
margin-bottom: 16px;
padding: 8px 12px;
background: #f8fafc;
border-radius: 8px;
border: 1px solid #e2e8f0;
}
.qual-monitor .stat-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
margin-bottom: 10px;
}
.qual-monitor .stat-card {
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 12px;
display: flex;
justify-content: space-between;
}
.qual-monitor .stat-card .stat-info .stat-label {
font-size: 0.82rem;
color: #64748b;
}
.qual-monitor .stat-card .stat-info .stat-value {
font-size: 1.75rem;
font-weight: 700;
line-height: 1.15;
margin-top: 6px;
}
.qual-monitor .stat-card .stat-info .stat-hint {
font-size: 0.75rem;
color: #64748b;
margin-top: 4px;
}
.qual-monitor .stat-card .stat-icon {
width: 38px;
height: 38px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
flex-shrink: 0;
}
.qual-monitor .source-note {
background: #f8fafc;
border: 1px solid #e2e8f0;
border-radius: 8px;
padding: 8px 14px;
font-size: 0.82rem;
color: #64748b;
margin-bottom: 10px;
}
.qual-monitor .source-note strong {
color: #1e293b;
}
.qual-monitor .org-info .org-name {
font-weight: 500;
}
.qual-monitor .org-info .org-meta {
font-size: 0.72rem;
color: #64748b;
}
.qual-monitor .biz-scope-wrap {
display: flex;
flex-wrap: wrap;
gap: 4px;
}
.qual-monitor .biz-scope-wrap .biz-scope-hint {
font-size: 0.72rem;
color: #64748b;
margin-top: 4px;
}
.qual-monitor .place-status {
font-size: 0.72rem;
}
.qual-monitor .place-ok {
color: #059669;
}
.qual-monitor .place-bad {
color: #dc2626;
}
.qual-monitor .source-pill {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 2px 7px;
border-radius: 999px;
background: #f1f5f9;
color: #475569;
font-size: 0.68rem;
white-space: nowrap;
}
.qual-monitor .check-note {
margin-bottom: 12px;
font-size: 0.86rem;
color: #64748b;
padding: 12px;
border: 1px solid #e2e8f0;
border-radius: 8px;
background: #f8fafc;
}
.qual-monitor .detail-table {
width: 100%;
border-collapse: collapse;
font-size: 0.82rem;
background: #fff;
border: 1px solid #e2e8f0;
border-radius: 8px;
}
.qual-monitor .detail-table th {
padding: 8px 12px;
border-bottom: 1px solid #e2e8f0;
text-align: left;
background: #f8fafc;
}
.qual-monitor .detail-table td {
padding: 8px 12px;
border-bottom: 1px solid #f1f5f9;
}
.qual-monitor .detail-table .cell-source {
font-size: 0.78rem;
}
.qual-monitor .detail-table .cell-label {
font-weight: 500;
}
.qual-review-form .legal-check-bar {
background: #f8fafc;
border: 1px solid #d9d9d9;

View File

@ -1 +1 @@
module.exports={javaGit:"http://47.92.113.182:3000/cq_anquan/safety-eval-service.git",javaGitName:"safety-eval-service",environment:{development:{javaGitBranch:"dev",API_HOST:"https://gbs-gateway.qhdsafety.com"},production:{javaGitBranch:"dev",API_HOST:""}},appIdentifier:"safetyEval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"192.168.0.187",open:!1},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};
module.exports={javaGit:"http://47.92.113.182:3000/cq_anquan/safety-eval-service.git",javaGitName:"safety-eval-service",environment:{development:{javaGitBranch:"dev",API_HOST:"http://192.168.0.150"},production:{javaGitBranch:"dev",API_HOST:""}},appIdentifier:"safetyEval",contextInject:{appKey:"",fileUrl:"https://skqhdg.porthebei.com:9004/file/uploadFiles2/"},windowInject:{title:"微应用模板",links:[],element:{root:{id:"root"}},scripts:[]},server:{port:"8081",host:"192.168.0.187",open:!1},framework:{antd:{"ant-prefix":"micro-temp",fontFamily:"PingFangSC-Regular",colorPrimary:"#1677ff",borderRadius:2}},webpackConfig:{htmlWebpackPluginOption:{inject:!0}}};

File diff suppressed because one or more lines are too long