From dd2b19626cfa7b2d7342e1cfbdedc7ad3285f5d0 Mon Sep 17 00:00:00 2001 From: guoshengxiong <1923636941@qq.com> Date: Fri, 12 Sep 2025 14:29:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/zhgd/mybatis/DataScopeHandler.java | 36 +++++++++++++------ .../basicdata/mapper/CompanyMapper.java | 2 +- .../basicdata/mapper/xml/CompanyMapper.xml | 19 ++++++++-- .../basicdata/service/ICompanyService.java | 2 +- .../service/impl/CompanyServiceImpl.java | 4 +-- .../modules/project/entity/ProjectConfig.java | 2 ++ .../modules/project/mapper/ProjectMapper.java | 1 + .../service/IProjectConfigService.java | 9 +++++ .../impl/ProjectConfigServiceImpl.java | 20 ++++++++--- .../UfaceRecognitionController.java | 19 ++++++++-- 10 files changed, 89 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java index 9512e9406..f15bfba1a 100644 --- a/src/main/java/com/zhgd/mybatis/DataScopeHandler.java +++ b/src/main/java/com/zhgd/mybatis/DataScopeHandler.java @@ -85,10 +85,6 @@ public class DataScopeHandler implements DataPermissionHandler { return null; } - protected String getEngineeringSn() { - return "engineering_sn"; - } - protected String getProjectSn() { return "project_sn"; } @@ -134,6 +130,7 @@ public class DataScopeHandler implements DataPermissionHandler { private HashMap getFieldProjectSnTables() { HashMap tables = new HashMap<>(16); tables.put("notice_remind_sound", getProjectSn()); + tables.put("project", getProjectSn()); return tables; } @@ -168,19 +165,16 @@ public class DataScopeHandler implements DataPermissionHandler { if (!DataScopeInterceptor.findIgnoreDataScope(parameter, ds)) { if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_ADMINISTRATOR_ACCOUNT.getValue())) { filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get1CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem)); + filterProjectForCompany(plainSelect, user, ds); } else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_DISTRICT_ACCOUNT.getValue())) { filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get2CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem)); + filterProjectForCompany(plainSelect, user, ds); } else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_CITY_ACCOUNT.getValue())) { filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get3CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem)); + filterProjectForCompany(plainSelect, user, ds); } else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.ENTERPRISE_SUB_ACCOUNT.getValue())) { filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> get4CompanySql(SecurityUtils.getUser().getUserId(), userFilterItem)); - List projectSns = companyService.getProjectSnsBySn(SecurityUtils.getUser().getSn()); -// List filterProjectItems = getNeedFilterLeftExpression(plainSelect, getFieldProjectSnTables(), ds); -// if (CollUtil.isNotEmpty(filterProjectItems)) { -// for (String item : filterProjectItems) { -// inExpression(item, , plainSelect); -// } -// } + filterProjectForCompany(plainSelect, user, ds); } else if (Objects.equals(user.getAccountType(), SystemUserAccountTypeEnum.PROJECT_ACCOUNT.getValue())) { filterForCompanyOrProject(plainSelect, ds, expressions, SecurityUtils.getUser().getUserId(), (userFilterItem) -> { return StrUtil.format(" \n" + @@ -264,6 +258,26 @@ public class DataScopeHandler implements DataPermissionHandler { return plainSelect; } + /** + * 企业过滤项目sn + * + * @param plainSelect + * @param user + * @param ds + */ + private void filterProjectForCompany(PlainSelect plainSelect, UserInfo user, DataScope ds) { + List projectSns = companyService.getProjectSnsBySn(SecurityUtils.getUser().getSn(), user.getAccountType()); + if (CollUtil.isEmpty(projectSns)) { + projectSns.add("0"); + } + List filterProjectItems = getNeedFilterLeftExpression(plainSelect, getFieldProjectSnTables(), ds); + if (CollUtil.isNotEmpty(filterProjectItems)) { + for (String item : filterProjectItems) { + inExpression(item, projectSns, plainSelect); + } + } + } + /** * 过滤供应商 * diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java index a4c31fcc2..898038ce4 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/CompanyMapper.java @@ -191,6 +191,6 @@ public interface CompanyMapper extends BaseMapper { boolean hasProjectSnAccessBy4(@Param("userId") Long userId, @Param("sn") String sn); - List getProjectSnsBySn(@Param("sn") String sn); + List getProjectSnsBySn(@Param("sn") String sn, @Param("accountType") Integer accountType); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyMapper.xml b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyMapper.xml index af590e637..cb79daa69 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyMapper.xml +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/mapper/xml/CompanyMapper.xml @@ -415,8 +415,21 @@ diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java index 3e394d486..4902f7958 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/ICompanyService.java @@ -212,5 +212,5 @@ public interface ICompanyService extends IService { boolean hasProjectSnAccessBy4(Long userId, String sn); - List getProjectSnsBySn(String sn); + List getProjectSnsBySn(String sn, Integer accountType); } diff --git a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java index e9a2b10a3..834c26a26 100644 --- a/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/basicdata/service/impl/CompanyServiceImpl.java @@ -1015,8 +1015,8 @@ public class CompanyServiceImpl extends ServiceImpl impl } @Override - public List getProjectSnsBySn(String sn) { - return baseMapper.getProjectSnsBySn(sn); + public List getProjectSnsBySn(String sn, Integer accountType) { + return baseMapper.getProjectSnsBySn(sn, accountType); } private void recursionFilterData(Map existSnMap, JSONObject clJo, JSONArray rtJa) { diff --git a/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java b/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java index c9e071e14..295591fbb 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/entity/ProjectConfig.java @@ -74,4 +74,6 @@ public class ProjectConfig implements Serializable { private java.lang.Integer isMobileAttendance; @ApiModelProperty(value = "1作业票需要绑定作业执法仪0不需要") private java.lang.Integer workTicketBindCamera; + @ApiModelProperty(value = "1开启人脸录入时的人脸检测识别功能0不开启") + private java.lang.Integer enableWorkerFaceCheck; } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java b/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java index e6e05ad36..65e02b68f 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/mapper/ProjectMapper.java @@ -22,6 +22,7 @@ import java.util.Map; * @version: V1.0 */ @Mapper +@DataScope public interface ProjectMapper extends BaseMapper { /** * 项目分页查询 diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectConfigService.java b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectConfigService.java index 47c85de4d..0ffee512d 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectConfigService.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/IProjectConfigService.java @@ -20,7 +20,16 @@ public interface IProjectConfigService extends IService { /** * 外部调用修改项目状态 + * * @param map */ void updateProjectAuditStatus(Map map); + + /** + * 不需要检测人脸 + * + * @param projectSn + * @return + */ + boolean doNotNeedCheck(String projectSn); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectConfigServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectConfigServiceImpl.java index b6e9d724c..ffbf10d0e 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectConfigServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProjectConfigServiceImpl.java @@ -1,5 +1,6 @@ package com.zhgd.xmgl.modules.project.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.zhgd.xmgl.modules.project.entity.ProjectConfig; import com.zhgd.xmgl.modules.project.mapper.ProjectConfigMapper; @@ -12,6 +13,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.Map; +import java.util.Objects; /** * @Description: 项目配置 @@ -50,14 +52,24 @@ public class ProjectConfigServiceImpl extends ServiceImpl queryWrapper=new QueryWrapper<>(); queryWrapper.lambda().eq(ProjectConfig::getProjectSn,MapUtils.getString(map,"projectSn")); ProjectConfig tempProjectConfig=projectConfigMapper.selectOne(queryWrapper); - if(tempProjectConfig!=null) { + if (tempProjectConfig != null) { map.put("projectAuditStatus", projectAuditStatus); projectConfigMapper.updateProjectAuditStatus(map); - }else{ - ProjectConfig projectConfig=new ProjectConfig(); - projectConfig.setProjectSn(MapUtils.getString(map,"projectSn")); + } else { + ProjectConfig projectConfig = new ProjectConfig(); + projectConfig.setProjectSn(MapUtils.getString(map, "projectSn")); projectConfig.setProjectAuditStatus(projectAuditStatus); projectConfigMapper.insert(projectConfig); } } + + @Override + public boolean doNotNeedCheck(String projectSn) { + ProjectConfig config = this.getOne(new LambdaQueryWrapper() + .eq(ProjectConfig::getProjectSn, projectSn)); + if (config != null && Objects.equals(config.getEnableWorkerFaceCheck(), 0)) { + return true; + } + return false; + } } diff --git a/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java b/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java index 4620377f2..b374cd1b1 100644 --- a/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java +++ b/src/main/java/com/zhgd/xmgl/modules/worker/controller/UfaceRecognitionController.java @@ -17,8 +17,10 @@ import com.zhgd.xmgl.call.api.WorkerManufacturer; import com.zhgd.xmgl.call.factory.WorkerManufacturerFactory; import com.zhgd.xmgl.modules.project.entity.Project; import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; +import com.zhgd.xmgl.modules.project.service.IProjectConfigService; import com.zhgd.xmgl.modules.worker.entity.WorkerInfo; import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService; +import com.zhgd.xmgl.security.util.SecurityUtils; import com.zhgd.xmgl.util.Base64Util; import com.zhgd.xmgl.util.EnvironmentUtil; import com.zhgd.xmgl.util.MessageUtil; @@ -60,8 +62,6 @@ public class UfaceRecognitionController { public static final String LINUX = "linux"; @Value("${basePath}") private String basePath; - @Value("${enableCheckFace}") - private String enableCheckFace; @Autowired private IWorkerInfoService workerInfoService; @Autowired @@ -75,6 +75,9 @@ public class UfaceRecognitionController { @Lazy @Autowired private WorkerManufacturerFactory workerManufacturerFactory; + @Lazy + @Autowired + private IProjectConfigService projectConfigService; @ApiOperation(value = "检测人脸照片是否有人脸", notes = "列表查询人脸设备信息", httpMethod = "POST") @ApiImplicitParams({ @@ -91,7 +94,7 @@ public class UfaceRecognitionController { String message = "message"; String projectSn = MapUtils.getString(map, "projectSn"); String fileUrl = MapUtils.getString(map, "fileUrl"); - if (Objects.equals(enableCheckFace, "0")) { + if (projectConfigService.doNotNeedCheck(projectSn)) { data.put(checkType, sucType); data.put(message, "成功"); return Result.success(data); @@ -152,10 +155,20 @@ public class UfaceRecognitionController { @ApiImplicitParams({ @ApiImplicitParam(name = "fileUrl", value = "照片路径", paramType = "body", required = true, dataType = "String"), @ApiImplicitParam(name = "type", value = "1url、2base64", paramType = "body", required = false, dataType = "Integer"), + @ApiImplicitParam(name = "projectSn", value = "项目sn", paramType = "body", required = false, dataType = "String"), }) @PostMapping(value = "/checkfaceHikvision") public Result> checkfaceHikvision(@RequestBody Map map) throws Exception { + String projectSn = MapUtils.getString(map, "projectSn"); Map data = new HashMap<>(16); + if (StrUtil.isBlank(projectSn)) { + projectSn = SecurityUtils.getUser().getSn(); + } + if (projectConfigService.doNotNeedCheck(projectSn)) { + data.put("checkType", "1"); + data.put("message", "成功"); + return Result.success(data); + } Project project = projectMapper.selectOne(new LambdaQueryWrapper().eq(Project::getSyncHikvision, 1).last("limit 1")); if (project == null) { data.put("checkType", "0");