Compare commits
3 Commits
8b09ae9d1e
...
d73d0de775
| Author | SHA1 | Date |
|---|---|---|
|
|
d73d0de775 | |
|
|
2dbb1fa5a3 | |
|
|
23f22b6052 |
|
|
@ -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", "人员证书不存在"),
|
||||
|
|
|
|||
|
|
@ -28,4 +28,6 @@ public interface OrgPersonnelGateway {
|
|||
void delete(Long id);
|
||||
|
||||
PageResult<OrgPersonnelEntity> page(OrgPersonnelQuery query);
|
||||
|
||||
OrgPersonnelEntity findAnyByIdCardNo(String idCardNo);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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()));
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
|
|
@ -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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue