From bc5ce255b21c6c15df20c24cab375beba3a03e4a Mon Sep 17 00:00:00 2001 From: hezhiqiang Date: Thu, 8 Jan 2026 09:09:47 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=96=B0=E5=A2=9E=E4=BC=81=E4=B8=9A?= =?UTF-8?q?=E8=AF=81=E7=85=A7=E7=AE=A1=E7=90=86=202=E3=80=81=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E8=AF=81=E7=85=A7=E7=AE=A1=E7=90=86=203=E3=80=81?= =?UTF-8?q?=E8=82=A1=E4=BB=BD=E7=AB=AF=E7=9A=84=E4=BA=BA=E5=91=98=E8=AF=81?= =?UTF-8?q?=E7=85=A7=E3=80=81=E4=BC=81=E4=B8=9A=E8=AF=81=E7=85=A7=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 + .../web/CorpCertificateController.java | 13 +- .../web/UserCertificateController.java | 87 +++++++++++ .../command/CorpCertificateAddExe.java | 12 ++ .../command/CorpCertificateUpdateExe.java | 5 + .../command/UserCertificateAddExe.java | 47 ++++++ .../command/UserCertificateRemoveExe.java | 40 +++++ .../command/UserCertificateUpdateExe.java | 42 ++++++ .../CorpCertificateStatCoConvertor.java | 13 ++ .../convertor/UserCertificateCoConvertor.java | 30 ++++ .../query/CorpCertificateQueryExe.java | 25 ++++ .../query/UserCertificateQueryExe.java | 108 ++++++++++++++ .../service/CorpCertificateServiceImpl.java | 11 +- .../service/UserCertificateServiceImpl.java | 71 +++++++++ .../api/CorpCertificateServiceI.java | 11 +- .../api/UserCertificateServiceI.java | 36 +++++ .../dto/CorpCertificateAddCmd.java | 5 +- .../dto/CorpCertificatePageQry.java | 16 ++ .../dto/CorpCertificateStatPageQry.java | 15 ++ .../dto/CorpCertificateUpdateCmd.java | 6 +- .../dto/UserCertificateAddCmd.java | 105 +++++++++++++ .../dto/UserCertificatePageQry.java | 57 +++++++ .../dto/UserCertificateUpdateCmd.java | 92 ++++++++++++ .../clientobject/CertificateStatisticsCO.java | 21 +++ .../dto/clientobject/UserCertificateCO.java | 140 ++++++++++++++++++ .../clientobject/UserCertificateStatCO.java | 26 ++++ .../gateway/CorpCertificateGateway.java | 5 + .../gateway/UserCertificateGateway.java | 33 +++++ .../domain/model/CorpCertificateE.java | 5 +- .../domain/model/UserCertificateE.java | 59 ++++++++ .../CorpCertificateGatewayImpl.java | 14 +- .../UserCertificateGatewayImpl.java | 59 ++++++++ .../dataobject/CorpCertificateDO.java | 5 +- .../persistence/dataobject/CorpInfoDO.java | 31 ++++ .../dataobject/UserCertificateDO.java | 95 ++++++++++++ .../dataobject/UserCertificateStatDO.java | 28 ++++ .../persistence/dataobject/UserDO.java | 27 ++++ .../mapper/CorpCertificateMapper.java | 6 + .../mapper/UserCertificateMapper.java | 40 +++++ .../repository/CorpCertificateRepository.java | 3 + .../repository/UserCertificateRepository.java | 40 +++++ .../impl/CorpCertificateRepositoryImpl.java | 14 ++ .../impl/UserCertificateRepositoryImpl.java | 57 +++++++ .../mapper/CorpCertificateMapper.xml | 39 ++++- .../mapper/UserCertificateMapper.xml | 132 +++++++++++++++++ 45 files changed, 1705 insertions(+), 23 deletions(-) create mode 100644 web-adapter/src/main/java/com/zcloud/certificate/web/UserCertificateController.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/UserCertificateAddExe.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/UserCertificateRemoveExe.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/UserCertificateUpdateExe.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/convertor/CorpCertificateStatCoConvertor.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/convertor/UserCertificateCoConvertor.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java create mode 100644 web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateStatPageQry.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateAddCmd.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/UserCertificatePageQry.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateUpdateCmd.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/clientobject/CertificateStatisticsCO.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateCO.java create mode 100644 web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateStatCO.java create mode 100644 web-domain/src/main/java/com/zcloud/certificate/domain/gateway/UserCertificateGateway.java create mode 100644 web-domain/src/main/java/com/zcloud/certificate/domain/model/UserCertificateE.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/UserCertificateGatewayImpl.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpInfoDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateStatDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserDO.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java create mode 100644 web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java create mode 100644 web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml diff --git a/pom.xml b/pom.xml index 6cd0c83..c81a3f2 100644 --- a/pom.xml +++ b/pom.xml @@ -13,6 +13,8 @@ UTF-8 UTF-8 + 1.8 + 1.8 diff --git a/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java b/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java index 20adfdb..e255995 100644 --- a/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java +++ b/web-adapter/src/main/java/com/zcloud/certificate/web/CorpCertificateController.java @@ -2,11 +2,8 @@ package com.zcloud.certificate.web; import com.zcloud.certificate.api.CorpCertificateServiceI; -import com.zcloud.certificate.dto.CorpCertificateAddCmd; -import com.zcloud.certificate.dto.CorpCertificatePageQry; -import com.zcloud.certificate.dto.CorpCertificateListQry; -import com.zcloud.certificate.dto.CorpCertificateUpdateCmd; -import com.zcloud.certificate.dto.CorpCertificateRemoveCmd; +import com.zcloud.certificate.dto.*; +import com.zcloud.certificate.dto.clientobject.CertificateStatisticsCO; import com.zcloud.certificate.dto.clientobject.CorpCertificateCO; import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; @@ -79,5 +76,11 @@ public class CorpCertificateController { return SingleResponse.buildSuccess(); } + @ApiOperation("股份端查看分公司/相关方证照统计信息分页") + @PostMapping("/statPage") + public PageResponse statPage(@RequestBody CorpCertificateStatPageQry qry) { + return corpCertificateService.statPage(qry); + } + } diff --git a/web-adapter/src/main/java/com/zcloud/certificate/web/UserCertificateController.java b/web-adapter/src/main/java/com/zcloud/certificate/web/UserCertificateController.java new file mode 100644 index 0000000..02f3533 --- /dev/null +++ b/web-adapter/src/main/java/com/zcloud/certificate/web/UserCertificateController.java @@ -0,0 +1,87 @@ +package com.zcloud.certificate.web; + + +import com.zcloud.certificate.api.UserCertificateServiceI; +import com.zcloud.certificate.dto.CorpCertificateStatPageQry; +import com.zcloud.certificate.dto.UserCertificateAddCmd; +import com.zcloud.certificate.dto.UserCertificatePageQry; +import com.zcloud.certificate.dto.UserCertificateUpdateCmd; +import com.zcloud.certificate.dto.clientobject.UserCertificateCO; +import com.alibaba.cola.dto.MultiResponse; +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.Response; +import com.alibaba.cola.dto.SingleResponse; +import com.jjb.saas.framework.auth.model.SSOUser; +import com.jjb.saas.framework.auth.utils.AuthContext; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +/** +* web-adapter +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Api(tags = "个人证照管理") +@RequestMapping("/${application.gateway}/userCertificate") +@RestController +@AllArgsConstructor +public class UserCertificateController { + private final UserCertificateServiceI userCertificateService; + + @ApiOperation("新增") + @PostMapping("/save") + public SingleResponse add(@Validated @RequestBody UserCertificateAddCmd cmd) { + SSOUser ssoUser = AuthContext.getCurrentUser(); + return userCertificateService.add(cmd); + } + + @ApiOperation("分页") + @PostMapping("/list") + public PageResponse page(@RequestBody UserCertificatePageQry qry) { + return userCertificateService.listPage(qry); + } + + @ApiOperation("所有数据") + @GetMapping("/listAll") + public MultiResponse listAll() { + return MultiResponse.of(new ArrayList()); + } + + @ApiOperation("详情") + @GetMapping("/getInfoById/{id}") + public SingleResponse getInfoById(@PathVariable("id") Long id) { + return SingleResponse.of(userCertificateService.queryById(id)); + } + + @ApiOperation("删除") + @DeleteMapping("/delete/{id}") + public Response remove(@PathVariable("id") Long id) { + userCertificateService.remove(id); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("删除多个") + @DeleteMapping("/deleteBatch/{ids}") + public Response removeBatch(@RequestParam Long[] ids) { + userCertificateService.removeBatch(ids); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("修改") + @PutMapping("/edit") + public SingleResponse edit(@Validated @RequestBody UserCertificateUpdateCmd userCertificateUpdateCmd) { + userCertificateService.edit(userCertificateUpdateCmd); + return SingleResponse.buildSuccess(); + } + + @ApiOperation("股份端查询企业/相关方各类人员证书数量分页") + @PostMapping("/corpCertificateStatPage") + public PageResponse corpCertificateStatPage(@RequestBody CorpCertificateStatPageQry qry) { + return userCertificateService.corpCertificateStatPage(qry); + } +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java index e17a549..7918aa0 100644 --- a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java +++ b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateAddExe.java @@ -1,9 +1,12 @@ package com.zcloud.certificate.command; +import cn.hutool.core.lang.UUID; +import cn.hutool.core.util.IdUtil; import com.zcloud.certificate.domain.gateway.CorpCertificateGateway; import com.zcloud.certificate.domain.model.CorpCertificateE; import com.zcloud.certificate.dto.CorpCertificateAddCmd; import com.alibaba.cola.exception.BizException; +import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Component; @@ -25,8 +28,17 @@ public class CorpCertificateAddExe { public boolean execute(CorpCertificateAddCmd cmd) { CorpCertificateE corpCertificateE = new CorpCertificateE(); BeanUtils.copyProperties(cmd, corpCertificateE); + + Boolean certificate = corpCertificateGateway.checkCertificateExist(corpCertificateE); + if (!certificate) { + throw new BizException("证照编号已存在"); + } + boolean res = false; try { + if (corpCertificateE.getCorpCertificateId() == null) { + corpCertificateE.setCorpCertificateId(IdUtil.simpleUUID()); + } res = corpCertificateGateway.add(corpCertificateE); } catch (Exception e) { throw new RuntimeException(e); diff --git a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateUpdateExe.java b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateUpdateExe.java index 0432ad6..f913f50 100644 --- a/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/certificate/command/CorpCertificateUpdateExe.java @@ -25,6 +25,11 @@ public class CorpCertificateUpdateExe { public void execute(CorpCertificateUpdateCmd cmd) { CorpCertificateE corpCertificateE = new CorpCertificateE(); BeanUtils.copyProperties(cmd, corpCertificateE); + + Boolean certificate = corpCertificateGateway.checkCertificateExist(corpCertificateE); + if (!certificate) { + throw new BizException("证照编号已存在"); + } boolean res = corpCertificateGateway.update(corpCertificateE); if (!res) { throw new BizException("修改失败"); diff --git a/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateAddExe.java b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateAddExe.java new file mode 100644 index 0000000..af624db --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateAddExe.java @@ -0,0 +1,47 @@ +package com.zcloud.certificate.command; + +import com.zcloud.certificate.domain.gateway.UserCertificateGateway; +import com.zcloud.certificate.domain.model.UserCertificateE; +import com.zcloud.certificate.dto.UserCertificateAddCmd; +import com.alibaba.cola.exception.BizException; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + + + + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Component +@AllArgsConstructor +public class UserCertificateAddExe { + private final UserCertificateGateway userCertificateGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(UserCertificateAddCmd cmd) { + UserCertificateE userCertificateE = new UserCertificateE(); + BeanUtils.copyProperties(cmd, userCertificateE); + + Boolean certificate = userCertificateGateway.checkCertificateExist(userCertificateE); + if (certificate) { + throw new BizException("证书编号已存在"); + } + + boolean res = false; + try { + res = userCertificateGateway.add(userCertificateE); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (!res) { + throw new BizException("保存失败"); + } + return true; + } +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateRemoveExe.java b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateRemoveExe.java new file mode 100644 index 0000000..9081f97 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateRemoveExe.java @@ -0,0 +1,40 @@ +package com.zcloud.certificate.command; + +import com.zcloud.certificate.domain.gateway.UserCertificateGateway; +import com.alibaba.cola.exception.BizException; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + + + + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Component +@AllArgsConstructor +public class UserCertificateRemoveExe { + private final UserCertificateGateway userCertificateGateway; + + @Transactional(rollbackFor = Exception.class) + public boolean execute(Long id) { + boolean res = userCertificateGateway.deletedUserCertificateById(id); + if(!res){ + throw new BizException("删除失败"); + } + return true; + } + + @Transactional(rollbackFor = Exception.class) + public boolean execute(Long[] ids) { + boolean res = userCertificateGateway.deletedUserCertificateByIds(ids); + if(!res){ + throw new BizException("删除失败"); + } + return true; + } +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateUpdateExe.java b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateUpdateExe.java new file mode 100644 index 0000000..254855a --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/UserCertificateUpdateExe.java @@ -0,0 +1,42 @@ +package com.zcloud.certificate.command; + +import com.alibaba.cola.exception.BizException; +import com.zcloud.certificate.domain.gateway.UserCertificateGateway; +import com.zcloud.certificate.domain.model.UserCertificateE; +import com.zcloud.certificate.dto.UserCertificateUpdateCmd; +import lombok.AllArgsConstructor; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + + + + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Component +@AllArgsConstructor +public class UserCertificateUpdateExe { + private final UserCertificateGateway userCertificateGateway; + + @Transactional(rollbackFor = Exception.class) + public void execute(UserCertificateUpdateCmd userCertificateUpdateCmd) { + UserCertificateE userCertificateE = new UserCertificateE(); + BeanUtils.copyProperties(userCertificateUpdateCmd, userCertificateE); + + Boolean certificate = userCertificateGateway.checkCertificateExist(userCertificateE); + if (certificate) { + throw new BizException("证书编号已存在"); + } + + + boolean res = userCertificateGateway.update(userCertificateE); + if (!res) { + throw new BizException("修改失败"); + } + } +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/command/convertor/CorpCertificateStatCoConvertor.java b/web-app/src/main/java/com/zcloud/certificate/command/convertor/CorpCertificateStatCoConvertor.java new file mode 100644 index 0000000..da96b29 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/convertor/CorpCertificateStatCoConvertor.java @@ -0,0 +1,13 @@ +package com.zcloud.certificate.command.convertor; + +import com.zcloud.certificate.dto.clientobject.CertificateStatisticsCO; +import com.zcloud.certificate.persistence.dataobject.CorpInfoDO; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper(componentModel = "spring") +public interface CorpCertificateStatCoConvertor { + + List convertRowsToCOs(List rows); +} diff --git a/web-app/src/main/java/com/zcloud/certificate/command/convertor/UserCertificateCoConvertor.java b/web-app/src/main/java/com/zcloud/certificate/command/convertor/UserCertificateCoConvertor.java new file mode 100644 index 0000000..cc29a02 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/convertor/UserCertificateCoConvertor.java @@ -0,0 +1,30 @@ +package com.zcloud.certificate.command.convertor; + +import com.zcloud.certificate.dto.clientobject.UserCertificateCO; +import com.zcloud.certificate.dto.clientobject.UserCertificateStatCO; +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.zcloud.certificate.persistence.dataobject.UserCertificateStatDO; +import org.mapstruct.Mapper; + +import java.util.List; + + + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Mapper(componentModel = "spring") +public interface UserCertificateCoConvertor { + /** + * @param userCertificateDOs + * @return + */ + List converDOsToCOs(List userCertificateDOs); + + UserCertificateCO converDOToCO(UserCertificateDO userCertificateDO); + + List converStatDOsToStatCOs(List userCertificateStatDOs); +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/command/query/CorpCertificateQueryExe.java b/web-app/src/main/java/com/zcloud/certificate/command/query/CorpCertificateQueryExe.java index 5b2c5b0..cedb381 100644 --- a/web-app/src/main/java/com/zcloud/certificate/command/query/CorpCertificateQueryExe.java +++ b/web-app/src/main/java/com/zcloud/certificate/command/query/CorpCertificateQueryExe.java @@ -2,10 +2,14 @@ package com.zcloud.certificate.command.query; import com.alibaba.cola.dto.MultiResponse; import com.zcloud.certificate.command.convertor.CorpCertificateCoConvertor; +import com.zcloud.certificate.command.convertor.CorpCertificateStatCoConvertor; import com.zcloud.certificate.dto.CorpCertificatePageQry; import com.zcloud.certificate.dto.CorpCertificateListQry; +import com.zcloud.certificate.dto.CorpCertificateStatPageQry; +import com.zcloud.certificate.dto.clientobject.CertificateStatisticsCO; import com.zcloud.certificate.dto.clientobject.CorpCertificateCO; import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; +import com.zcloud.certificate.persistence.dataobject.CorpInfoDO; import com.zcloud.certificate.persistence.repository.CorpCertificateRepository; import com.zcloud.gbscommon.utils.PageQueryHelper; import com.alibaba.cola.dto.PageResponse; @@ -29,6 +33,7 @@ import java.util.Map; public class CorpCertificateQueryExe { private final CorpCertificateRepository corpCertificateRepository; private final CorpCertificateCoConvertor corpCertificateCoConvertor; + private final CorpCertificateStatCoConvertor corpCertificateStatCoConvertor; /** * 分页 @@ -37,6 +42,7 @@ public class CorpCertificateQueryExe { */ public PageResponse execute(CorpCertificatePageQry qry) { Map params = PageQueryHelper.toHashMap(qry); + PageResponse pageResponse = corpCertificateRepository.listPage(params); List examCenterCOS = corpCertificateCoConvertor.converDOsToCOs(pageResponse.getData()); return PageResponse.of(examCenterCOS, pageResponse.getTotalCount(), pageResponse.getPageSize(), pageResponse.getPageIndex()); @@ -56,5 +62,24 @@ public class CorpCertificateQueryExe { return SingleResponse.of(co); } + + public PageResponse statPage(CorpCertificateStatPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + + PageResponse pageResponse = + corpCertificateRepository.statPage(params); + + List cos = + corpCertificateStatCoConvertor.convertRowsToCOs(pageResponse.getData()); + + return PageResponse.of( + cos, + pageResponse.getTotalCount(), + pageResponse.getPageSize(), + pageResponse.getPageIndex() + ); + } + + } diff --git a/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java b/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java new file mode 100644 index 0000000..5aae53e --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/command/query/UserCertificateQueryExe.java @@ -0,0 +1,108 @@ +package com.zcloud.certificate.command.query; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.zcloud.certificate.command.convertor.UserCertificateCoConvertor; +import com.zcloud.certificate.dto.CorpCertificateStatPageQry; +import com.zcloud.certificate.dto.UserCertificatePageQry; +import com.zcloud.certificate.dto.clientobject.UserCertificateCO; +import com.zcloud.certificate.dto.clientobject.UserCertificateStatCO; +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.zcloud.certificate.persistence.dataobject.UserCertificateStatDO; +import com.zcloud.certificate.persistence.dataobject.UserDO; +import com.zcloud.certificate.persistence.repository.UserCertificateRepository; +import com.zcloud.gbscommon.utils.PageQueryHelper; +import com.alibaba.cola.dto.PageResponse; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; + + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Component +@AllArgsConstructor +public class UserCertificateQueryExe { + private final UserCertificateRepository userCertificateRepository; + private final UserCertificateCoConvertor userCertificateCoConvertor; + + /** + * 根据id查询 + * @param id + * @return + */ + public UserCertificateCO queryById(Long id) { + UserCertificateCO userCertificateCO = userCertificateCoConvertor.converDOToCO(userCertificateRepository.getById(id)); + if (userCertificateCO == null) { + return null; + } + // 查询用户名 在职状态并设置 + UserDO userDO = userCertificateRepository.getUserNamesByUserIds(Collections.singletonList(userCertificateCO.getUserId())).stream().findFirst().orElse(null); + if (userDO != null) { + userCertificateCO.setUserName(userDO.getUserName()); + userCertificateCO.setEmploymentStatus(userDO.getEmploymentStatus()); + userCertificateCO.setPostName(userDO.getPostName()); + userCertificateCO.setDepartmentName(userDO.getDepartmentName()); + userCertificateCO.setCorpinfoName(userDO.getCorpinfoName()); + } + return userCertificateCO; + } + /** + * 分页 + * + * @return + */ + public PageResponse execute(UserCertificatePageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + + IPage iPage = userCertificateRepository.listPageWithUser(new Page<>(qry.getPageIndex(), qry.getPageSize()), params); + List cos = Optional.ofNullable(iPage.getRecords()) + .orElse(Collections.emptyList()) + .stream() + .map(userCertificateCoConvertor::converDOToCO) + .collect(Collectors.toList()); + + return PageResponse.of( + cos, + (int) iPage.getTotal(), + (int) iPage.getSize(), + (int) iPage.getCurrent() + ); + } + + /** + * 根据企业/相关方类型查询各企业/相关方各类人员证书数量分页 + */ + public PageResponse execute(CorpCertificateStatPageQry qry) { + Map params = PageQueryHelper.toHashMap(qry); + + IPage page = new Page<>( + qry.getPageIndex(), + qry.getPageSize() + ); + + IPage result = + userCertificateRepository.selectCorpCertificateStatPage(page, params); + + List cos = userCertificateCoConvertor.converStatDOsToStatCOs( + Optional.ofNullable(result.getRecords()).orElse(Collections.emptyList()) + ); + + return PageResponse.of( + cos, + (int)result.getTotal(), + (int) result.getSize(), + (int) result.getCurrent() + ); + } + + + +} + diff --git a/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java b/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java index fa0cbe1..6567630 100644 --- a/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/certificate/service/CorpCertificateServiceImpl.java @@ -6,10 +6,8 @@ import com.zcloud.certificate.command.CorpCertificateAddExe; import com.zcloud.certificate.command.CorpCertificateRemoveExe; import com.zcloud.certificate.command.CorpCertificateUpdateExe; import com.zcloud.certificate.command.query.CorpCertificateQueryExe; -import com.zcloud.certificate.dto.CorpCertificateAddCmd; -import com.zcloud.certificate.dto.CorpCertificatePageQry; -import com.zcloud.certificate.dto.CorpCertificateListQry; -import com.zcloud.certificate.dto.CorpCertificateUpdateCmd; +import com.zcloud.certificate.dto.*; +import com.zcloud.certificate.dto.clientobject.CertificateStatisticsCO; import com.zcloud.certificate.dto.clientobject.CorpCertificateCO; import com.alibaba.cola.dto.PageResponse; @@ -66,5 +64,10 @@ public class CorpCertificateServiceImpl implements CorpCertificateServiceI { public void removeBatch(Long[] ids) { corpCertificateRemoveExe.execute(ids); } + + @Override + public PageResponse statPage(CorpCertificateStatPageQry qry) { + return corpCertificateQueryExe.statPage(qry); + } } diff --git a/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java b/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java new file mode 100644 index 0000000..f470628 --- /dev/null +++ b/web-app/src/main/java/com/zcloud/certificate/service/UserCertificateServiceImpl.java @@ -0,0 +1,71 @@ +package com.zcloud.certificate.service; + +import com.zcloud.certificate.api.UserCertificateServiceI; +import com.zcloud.certificate.command.UserCertificateAddExe; +import com.zcloud.certificate.command.UserCertificateRemoveExe; +import com.zcloud.certificate.command.UserCertificateUpdateExe; +import com.zcloud.certificate.command.query.UserCertificateQueryExe; +import com.zcloud.certificate.dto.CorpCertificateStatPageQry; +import com.zcloud.certificate.dto.UserCertificateAddCmd; +import com.zcloud.certificate.dto.UserCertificatePageQry; +import com.zcloud.certificate.dto.UserCertificateUpdateCmd; +import com.zcloud.certificate.dto.clientobject.UserCertificateCO; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.certificate.dto.clientobject.UserCertificateStatCO; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* web-app +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Service +@AllArgsConstructor +public class UserCertificateServiceImpl implements UserCertificateServiceI { + private final UserCertificateAddExe userCertificateAddExe; + private final UserCertificateUpdateExe userCertificateUpdateExe; + private final UserCertificateRemoveExe userCertificateRemoveExe; + private final UserCertificateQueryExe userCertificateQueryExe; + + @Override + public UserCertificateCO queryById(Long id){ + return userCertificateQueryExe.queryById(id); + } + + @Override + public PageResponse listPage(UserCertificatePageQry qry){ + + return userCertificateQueryExe.execute(qry); + } + + @Override + public SingleResponse add(UserCertificateAddCmd cmd) { + + userCertificateAddExe.execute(cmd); + return SingleResponse.buildSuccess(); + } + + @Override + public void edit(UserCertificateUpdateCmd userCertificateUpdateCmd) { + userCertificateUpdateExe.execute(userCertificateUpdateCmd); + } + + @Override + public void remove(Long id) { + userCertificateRemoveExe.execute(id); + } + + @Override + public void removeBatch(Long[] ids) { + userCertificateRemoveExe.execute(ids); + } + + @Override + public PageResponse corpCertificateStatPage(CorpCertificateStatPageQry qry) { + return userCertificateQueryExe.execute(qry); + } +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java b/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java index 53a0abf..1723345 100644 --- a/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java +++ b/web-client/src/main/java/com/zcloud/certificate/api/CorpCertificateServiceI.java @@ -1,10 +1,8 @@ package com.zcloud.certificate.api; import com.alibaba.cola.dto.MultiResponse; -import com.zcloud.certificate.dto.CorpCertificateAddCmd; -import com.zcloud.certificate.dto.CorpCertificatePageQry; -import com.zcloud.certificate.dto.CorpCertificateListQry; -import com.zcloud.certificate.dto.CorpCertificateUpdateCmd; +import com.zcloud.certificate.dto.*; +import com.zcloud.certificate.dto.clientobject.CertificateStatisticsCO; import com.zcloud.certificate.dto.clientobject.CorpCertificateCO; import com.alibaba.cola.dto.PageResponse; @@ -30,5 +28,10 @@ public interface CorpCertificateServiceI { void remove(Long id); void removeBatch(Long[] ids); + + /** + * 股份端查看分公司证照统计信息 + */ + PageResponse statPage(CorpCertificateStatPageQry qry); } diff --git a/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java b/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java new file mode 100644 index 0000000..1622fe8 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/api/UserCertificateServiceI.java @@ -0,0 +1,36 @@ +package com.zcloud.certificate.api; + +import com.zcloud.certificate.dto.CorpCertificateStatPageQry; +import com.zcloud.certificate.dto.UserCertificateAddCmd; +import com.zcloud.certificate.dto.UserCertificatePageQry; +import com.zcloud.certificate.dto.UserCertificateUpdateCmd; +import com.zcloud.certificate.dto.clientobject.UserCertificateCO; + +import com.alibaba.cola.dto.PageResponse; +import com.alibaba.cola.dto.SingleResponse; +import com.zcloud.certificate.dto.clientobject.UserCertificateStatCO; + +/** +* web-client +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +public interface UserCertificateServiceI { + UserCertificateCO queryById(Long id); + + PageResponse listPage(UserCertificatePageQry qry); + + SingleResponse add(UserCertificateAddCmd cmd); + + void edit(UserCertificateUpdateCmd cmd); + + void remove(Long id); + + void removeBatch(Long[] ids); + + /** + * 根据企业/相关方类型查询各企业/相关方各类人员证书数量 + */ + PageResponse corpCertificateStatPage(CorpCertificateStatPageQry qry); +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateAddCmd.java b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateAddCmd.java index 80404c7..cca5258 100644 --- a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateAddCmd.java +++ b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateAddCmd.java @@ -23,6 +23,10 @@ import java.util.Date; @NoArgsConstructor @AllArgsConstructor public class CorpCertificateAddCmd extends Command { + + @ApiModelProperty(value = "企业业务ID", name = "corpCertificateId", required = true) + private String corpCertificateId; + @ApiModelProperty(value = "企业id", name = "corpinfoId", required = true) @NotNull(message = "企业id不能为空") private Long corpinfoId; @@ -46,7 +50,6 @@ public class CorpCertificateAddCmd extends Command { private Date certificateDateEnd; @ApiModelProperty(value = "备注", name = "remark", required = true) - @NotEmpty(message = "备注不能为空") private String remark; } diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificatePageQry.java b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificatePageQry.java index ad99029..4422f0b 100644 --- a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificatePageQry.java +++ b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificatePageQry.java @@ -1,8 +1,11 @@ package com.zcloud.certificate.dto; import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDate; + /** * web-client @@ -24,5 +27,18 @@ public class CorpCertificatePageQry extends PageQuery { * - `ne`: 不等比较查询,对应SQL的!=操作符 */ private String likeCorpCertificateId; + + @ApiModelProperty(value = "证书名称") + private String likeCertificateName; + + @ApiModelProperty(value = "证书有效期-开始时间") + private LocalDate geCertificateDateStart; + + @ApiModelProperty(value = "证书有效期-结束时间") + private LocalDate leCertificateDateEnd; + + @ApiModelProperty(value = "企业ID") + private Long eqCorpinfoId; + } diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateStatPageQry.java b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateStatPageQry.java new file mode 100644 index 0000000..54a8130 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateStatPageQry.java @@ -0,0 +1,15 @@ +package com.zcloud.certificate.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CorpCertificateStatPageQry extends PageQuery { + + @ApiModelProperty(value = "类型:0企业,1相关方,null全部") + private Integer corpType; + + @ApiModelProperty(value = "企业名称-模糊查询") + private String corpName; +} diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateUpdateCmd.java b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateUpdateCmd.java index e0c0d38..9d7c4c4 100644 --- a/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateUpdateCmd.java +++ b/web-client/src/main/java/com/zcloud/certificate/dto/CorpCertificateUpdateCmd.java @@ -10,6 +10,7 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.*; +import java.time.LocalDate; import java.util.Date; /** @@ -41,13 +42,12 @@ public class CorpCertificateUpdateCmd extends Command { @ApiModelProperty(value = "证书有效期-开始时间", name = "certificateDateStart", required = true) @NotNull(message = "证书有效期-开始时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd") - private Date certificateDateStart; + private LocalDate certificateDateStart; @ApiModelProperty(value = "证书有效期-结束时间", name = "certificateDateEnd", required = true) @NotNull(message = "证书有效期-结束时间不能为空") @JsonFormat(pattern = "yyyy-MM-dd") - private Date certificateDateEnd; + private LocalDate certificateDateEnd; @ApiModelProperty(value = "备注", name = "remark", required = true) - @NotEmpty(message = "备注不能为空") private String remark; } diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateAddCmd.java b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateAddCmd.java new file mode 100644 index 0000000..ea95a80 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateAddCmd.java @@ -0,0 +1,105 @@ +package com.zcloud.certificate.dto; + +import com.alibaba.cola.dto.Command; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import javax.validation.constraints.*; +import java.time.LocalDate; +import java.util.Date; + +/** +* web-client +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserCertificateAddCmd extends Command { + @ApiModelProperty(value = "企业id", name = "corpinfoId", required = true) + @NotNull(message = "企业id不能为空") + private Long corpinfoId; + + @ApiModelProperty(value = "用户id", name = "userId", required = true) + @NotNull(message = "用户id不能为空") + private Long userId; + + @ApiModelProperty(value = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员", name = "type", required = true) + @NotNull(message = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员不能为空") + private Integer type; + + @ApiModelProperty(value = "证书名称", name = "certificateName", required = true) + @NotEmpty(message = "证书名称不能为空") + private String certificateName; + + @ApiModelProperty(value = "证书编号", name = "certificateCode", required = true) + @NotEmpty(message = "证书编号不能为空") + private String certificateCode; + + @ApiModelProperty(value = "发证机构", name = "issuingAuthority", required = true) + @NotEmpty(message = "发证机构不能为空") + private String issuingAuthority; + + @ApiModelProperty(value = "行业类别code-特种作业使用", name = "industryCategoryCode", required = true) +// @NotEmpty(message = "行业类别code-特种作业使用不能为空") + private String industryCategoryCode; + + @ApiModelProperty(value = "行业类别名称-特种作业使用", name = "industryCategoryName", required = true) +// @NotEmpty(message = "行业类别名称-特种作业使用不能为空") + private String industryCategoryName; + + @ApiModelProperty(value = "行业类别-操作项目code-特种作业使用", name = "industryOperatingItemsCode", required = true) +// @NotEmpty(message = "行业类别-操作项目code-特种作业使用不能为空") + private String industryOperatingItemsCode; + + @ApiModelProperty(value = "行业类别-操作项目名称-特种作业使用", name = "industryOperatingItemsName", required = true) +// @NotEmpty(message = "行业类别-操作项目名称-特种作业使用不能为空") + private String industryOperatingItemsName; + + @ApiModelProperty(value = "作业类别code-特种设备使用", name = "assignmentCategoryCode", required = true) +// @NotEmpty(message = "作业类别code-特种设备使用不能为空") + private String assignmentCategoryCode; + + @ApiModelProperty(value = "作业类别名称-特种设备使用", name = "assignmentCategoryName", required = true) +// @NotEmpty(message = "作业类别名称-特种设备使用不能为空") + private String assignmentCategoryName; + + @ApiModelProperty(value = "作业类别-操作项目code-特种设备使用", name = "assignmentOperatingItemsCode", required = true) +// @NotEmpty(message = "作业类别-操作项目code-特种设备使用不能为空") + private String assignmentOperatingItemsCode; + + @ApiModelProperty(value = "作业类别-操作项目名称-特种设备使用", name = "assignmentOperatingItemsName", required = true) +// @NotEmpty(message = "作业类别-操作项目名称-特种设备使用不能为空") + private String assignmentOperatingItemsName; + + @ApiModelProperty(value = "岗位名称(未定)-主要负责人和安全生产使用", name = "postName", required = true) +// @NotEmpty(message = "岗位名称(未定)-主要负责人和安全生产使用不能为空") + private String postName; + + @ApiModelProperty(value = "发证日期", name = "dateIssue", required = true) + @NotNull(message = "发证日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate dateIssue; + + @ApiModelProperty(value = "证书有效期-开始时间", name = "certificateDateStart", required = true) + @NotNull(message = "证书有效期-开始时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateStart; + + @ApiModelProperty(value = "证书有效期-结束时间", name = "certificateDateEnd", required = true) + @NotNull(message = "证书有效期-结束时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateEnd; + + @ApiModelProperty(value = "复审日期", name = "reviewDate", required = true) + @NotNull(message = "复审日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate reviewDate; + +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificatePageQry.java b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificatePageQry.java new file mode 100644 index 0000000..3858e52 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificatePageQry.java @@ -0,0 +1,57 @@ +package com.zcloud.certificate.dto; + +import com.alibaba.cola.dto.PageQuery; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + + +/** +* web-client +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Data +public class UserCertificatePageQry extends PageQuery { + +/** +* 查询条件操作前缀,支持以下几种数据库查询操作: +* - `like`: 模糊匹配查询,对应SQL的LIKE操作符 +* - `eq`: 等值查询,对应SQL的=操作符 +* - `gt`: 大于比较查询 +* - `lt`: 小于比较查询 +* - `ge`: 大于等于比较查询 +* - `le`: 小于等于比较查询 +* - `ne`: 不等比较查询,对应SQL的!=操作符 +*/ + @ApiModelProperty(value = "业务ID", name = "likeUserCertificateId") + private String likeUserCertificateId; + + @ApiModelProperty(value = "姓名", name = "likeUserName") + private String likeUserName; + + /** + * 操作类别 + */ + @ApiModelProperty(value = "操作类别code-特种作业使用", name = "eqIndustryCategoryCode") + private String eqIndustryCategoryCode; + + /** + * 操作项目 + */ + @ApiModelProperty(value = "操作项目code-特种作业使用", name = "eqIndustryOperatingItemsCode") + private String eqIndustryOperatingItemsCode; + + /** + * 人员类型 + */ + @ApiModelProperty(value = "人员类型 1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员", name = "eqType") + private Integer eqType; + + /** + * 企业ID + */ + @ApiModelProperty(value = "企业ID", name = "eqCorpinfoId") + private Long eqCorpinfoId; +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateUpdateCmd.java b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateUpdateCmd.java new file mode 100644 index 0000000..72570fc --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/UserCertificateUpdateCmd.java @@ -0,0 +1,92 @@ +package com.zcloud.certificate.dto; + +import com.alibaba.cola.dto.Command; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import javax.validation.constraints.*; +import java.time.LocalDate; +import java.util.Date; + +/** +* web-client +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserCertificateUpdateCmd extends Command { + @ApiModelProperty(value = "主键id", name = "id", required = true) + @NotNull(message = "主键id不能为空") + private Long id; + @ApiModelProperty(value = "业务主键id", name = "userCertificateId", required = true) + @NotEmpty(message = "业务主键id不能为空") + private String userCertificateId; + @ApiModelProperty(value = "企业id", name = "corpinfoId", required = true) + @NotNull(message = "企业id不能为空") + private Long corpinfoId; + @ApiModelProperty(value = "用户id", name = "userId", required = true) + @NotNull(message = "用户id不能为空") + private Long userId; + @ApiModelProperty(value = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员", name = "type", required = true) + @NotNull(message = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员不能为空") + private Integer type; + @ApiModelProperty(value = "证书名称", name = "certificateName", required = true) + @NotEmpty(message = "证书名称不能为空") + private String certificateName; + @ApiModelProperty(value = "证书编号", name = "certificateCode", required = true) + @NotEmpty(message = "证书编号不能为空") + private String certificateCode; + @ApiModelProperty(value = "发证机构", name = "issuingAuthority", required = true) + @NotEmpty(message = "发证机构不能为空") + private String issuingAuthority; + @ApiModelProperty(value = "行业类别code-特种作业使用", name = "industryCategoryCode", required = true) +// @NotEmpty(message = "行业类别code-特种作业使用不能为空") + private String industryCategoryCode; + @ApiModelProperty(value = "行业类别名称-特种作业使用", name = "industryCategoryName", required = true) +// @NotEmpty(message = "行业类别名称-特种作业使用不能为空") + private String industryCategoryName; + @ApiModelProperty(value = "行业类别-操作项目code-特种作业使用", name = "industryOperatingItemsCode", required = true) +// @NotEmpty(message = "行业类别-操作项目code-特种作业使用不能为空") + private String industryOperatingItemsCode; + @ApiModelProperty(value = "行业类别-操作项目名称-特种作业使用", name = "industryOperatingItemsName", required = true) +// @NotEmpty(message = "行业类别-操作项目名称-特种作业使用不能为空") + private String industryOperatingItemsName; + @ApiModelProperty(value = "作业类别code-特种设备使用", name = "assignmentCategoryCode", required = true) +// @NotEmpty(message = "作业类别code-特种设备使用不能为空") + private String assignmentCategoryCode; + @ApiModelProperty(value = "作业类别名称-特种设备使用", name = "assignmentCategoryName", required = true) +// @NotEmpty(message = "作业类别名称-特种设备使用不能为空") + private String assignmentCategoryName; + @ApiModelProperty(value = "作业类别-操作项目code-特种设备使用", name = "assignmentOperatingItemsCode", required = true) +// @NotEmpty(message = "作业类别-操作项目code-特种设备使用不能为空") + private String assignmentOperatingItemsCode; + @ApiModelProperty(value = "作业类别-操作项目名称-特种设备使用", name = "assignmentOperatingItemsName", required = true) +// @NotEmpty(message = "作业类别-操作项目名称-特种设备使用不能为空") + private String assignmentOperatingItemsName; + @ApiModelProperty(value = "岗位名称(未定)-主要负责人和安全生产使用", name = "postName", required = true) +// @NotEmpty(message = "岗位名称(未定)-主要负责人和安全生产使用不能为空") + private String postName; + @ApiModelProperty(value = "发证日期", name = "dateIssue", required = true) + @NotNull(message = "发证日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate dateIssue; + @ApiModelProperty(value = "证书有效期-开始时间", name = "certificateDateStart", required = true) + @NotNull(message = "证书有效期-开始时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateStart; + @ApiModelProperty(value = "证书有效期-结束时间", name = "certificateDateEnd", required = true) + @NotNull(message = "证书有效期-结束时间不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateEnd; + @ApiModelProperty(value = "复审日期", name = "reviewDate", required = true) + @NotNull(message = "复审日期不能为空") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate reviewDate; +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/CertificateStatisticsCO.java b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/CertificateStatisticsCO.java new file mode 100644 index 0000000..74bf441 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/CertificateStatisticsCO.java @@ -0,0 +1,21 @@ +package com.zcloud.certificate.dto.clientobject; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class CertificateStatisticsCO { + + @ApiModelProperty(value = "企业ID", name = "corpId") + private Long corpId; + + @ApiModelProperty(value = "企业名称", name = "corpName") + private String corpName; + + @ApiModelProperty(value = "企业类型", name = "corpType") + private Integer corpType; + + @ApiModelProperty(value = "证照数量", name = "certCount") + private Long certCount; + +} diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateCO.java b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateCO.java new file mode 100644 index 0000000..6053376 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateCO.java @@ -0,0 +1,140 @@ +package com.zcloud.certificate.dto.clientobject; + +import com.alibaba.cola.dto.ClientObject; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; +import java.util.Date; + + + +/** +* web-client +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Data +public class UserCertificateCO extends ClientObject { + //主键id + @ApiModelProperty(value = "主键id") + private Long id; + //业务主键id + @ApiModelProperty(value = "业务主键id") + private String userCertificateId; + //企业id + @ApiModelProperty(value = "企业id") + private Long corpinfoId; + //用户id + @ApiModelProperty(value = "用户id") + private Long userId; + @ApiModelProperty(value = "用户名称") + private String userName; + @ApiModelProperty(value = "在职状态 0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核") + private Integer employmentStatus; + //1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员 + @ApiModelProperty(value = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员") + private Integer type; + //证书名称 + @ApiModelProperty(value = "证书名称") + private String certificateName; + //证书编号 + @ApiModelProperty(value = "证书编号") + private String certificateCode; + //发证机构 + @ApiModelProperty(value = "发证机构") + private String issuingAuthority; + //行业类别code-特种作业使用 + @ApiModelProperty(value = "行业类别code-特种作业使用") + private String industryCategoryCode; + //行业类别名称-特种作业使用 + @ApiModelProperty(value = "行业类别名称-特种作业使用") + private String industryCategoryName; + //行业类别-操作项目code-特种作业使用 + @ApiModelProperty(value = "行业类别-操作项目code-特种作业使用") + private String industryOperatingItemsCode; + //行业类别-操作项目名称-特种作业使用 + @ApiModelProperty(value = "行业类别-操作项目名称-特种作业使用") + private String industryOperatingItemsName; + //作业类别code-特种设备使用 + @ApiModelProperty(value = "作业类别code-特种设备使用") + private String assignmentCategoryCode; + //作业类别名称-特种设备使用 + @ApiModelProperty(value = "作业类别名称-特种设备使用") + private String assignmentCategoryName; + //作业类别-操作项目code-特种设备使用 + @ApiModelProperty(value = "作业类别-操作项目code-特种设备使用") + private String assignmentOperatingItemsCode; + //作业类别-操作项目名称-特种设备使用 + @ApiModelProperty(value = "作业类别-操作项目名称-特种设备使用") + private String assignmentOperatingItemsName; + //岗位名称(未定)-主要负责人和安全生产使用 + @ApiModelProperty(value = "岗位名称(未定)-主要负责人和安全生产使用") + private String postName; + //发证日期 + @ApiModelProperty(value = "发证日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate dateIssue; + //证书有效期-开始时间 + @ApiModelProperty(value = "证书有效期-开始时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateStart; + //证书有效期-结束时间 + @ApiModelProperty(value = "证书有效期-结束时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate certificateDateEnd; + //复审日期 + @ApiModelProperty(value = "复审日期") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDate reviewDate; + //删除标识true false + @ApiModelProperty(value = "删除标识true false") + private String deleteEnum; + //备注 + @ApiModelProperty(value = "备注") + private String remarks; + //创建人姓名 + @ApiModelProperty(value = "创建人姓名") + private String createName; + //更新人姓名 + @ApiModelProperty(value = "更新人姓名") + private String updateName; + //租户id + @ApiModelProperty(value = "租户id") + private Long tenantId; + //单位id + @ApiModelProperty(value = "单位id") + private Long orgId; + //版本 + @ApiModelProperty(value = "版本") + private Integer version; + //创建时间 + @ApiModelProperty(value = "创建时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createTime; + //修改时间 + @ApiModelProperty(value = "修改时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private Date updateTime; + //创建人id + @ApiModelProperty(value = "创建人id") + private Long createId; + //修改人id + @ApiModelProperty(value = "修改人id") + private Long updateId; + //环境 + @ApiModelProperty(value = "环境") + private String env; + + + + @ApiModelProperty(value = "部门名称") + private String departmentName; + + @ApiModelProperty(value = "企业名称") + private String corpinfoName; + + +} + diff --git a/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateStatCO.java b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateStatCO.java new file mode 100644 index 0000000..f880b70 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/certificate/dto/clientobject/UserCertificateStatCO.java @@ -0,0 +1,26 @@ +package com.zcloud.certificate.dto.clientobject; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserCertificateStatCO { + + @ApiModelProperty(value = "企业/相关方ID") + private Long corpinfoId; + + @ApiModelProperty(value = "企业/相关方名称") + private String corpName; + + @ApiModelProperty(value = "特种作业人员证书数量") + private Integer specialWorkCertCount; + + @ApiModelProperty(value = "特种设备人证书数量") + private Integer specialEquipmentCertCount; + + @ApiModelProperty(value = "主要负责人证书数量") + private Integer principalCertCount; + + @ApiModelProperty(value = "安全管理人员证书数量") + private Integer safetyManagerCertCount; +} diff --git a/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/CorpCertificateGateway.java b/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/CorpCertificateGateway.java index ef679b5..0807b0d 100644 --- a/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/CorpCertificateGateway.java +++ b/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/CorpCertificateGateway.java @@ -26,5 +26,10 @@ public interface CorpCertificateGateway { Boolean deletedCorpCertificateById(Long id); Boolean deletedCorpCertificateByIds(Long[] id); + + /** + * 根据证书编号校验证书是否存在 + */ + Boolean checkCertificateExist(CorpCertificateE corpCertificateE); } diff --git a/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/UserCertificateGateway.java b/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/UserCertificateGateway.java new file mode 100644 index 0000000..580e980 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/certificate/domain/gateway/UserCertificateGateway.java @@ -0,0 +1,33 @@ +package com.zcloud.certificate.domain.gateway; + +import com.zcloud.certificate.domain.model.UserCertificateE; + +/** +* web-domain +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +public interface UserCertificateGateway { + + /** + * 新增 + */ + Boolean add(UserCertificateE userCertificateE) ; + + /** + * 修改 + */ + Boolean update(UserCertificateE userCertificateE); + + /** + * 删除 + */ + Boolean deletedUserCertificateById(Long id); + Boolean deletedUserCertificateByIds(Long[] id); + + /** + * 根据证书编号校验证书是否存在 + */ + Boolean checkCertificateExist(UserCertificateE userCertificateE); +} + diff --git a/web-domain/src/main/java/com/zcloud/certificate/domain/model/CorpCertificateE.java b/web-domain/src/main/java/com/zcloud/certificate/domain/model/CorpCertificateE.java index b30af7c..e62adf9 100644 --- a/web-domain/src/main/java/com/zcloud/certificate/domain/model/CorpCertificateE.java +++ b/web-domain/src/main/java/com/zcloud/certificate/domain/model/CorpCertificateE.java @@ -3,6 +3,7 @@ package com.zcloud.certificate.domain.model; import com.jjb.saas.framework.domain.model.BaseE; import lombok.Data; +import java.time.LocalDate; import java.util.Date; /** @@ -24,9 +25,9 @@ public class CorpCertificateE extends BaseE { //证书编号 private String certificateCode; //证书有效期-开始时间 - private Date certificateDateStart; + private LocalDate certificateDateStart; //证书有效期-结束时间 - private Date certificateDateEnd; + private LocalDate certificateDateEnd; //备注 private String remark; } diff --git a/web-domain/src/main/java/com/zcloud/certificate/domain/model/UserCertificateE.java b/web-domain/src/main/java/com/zcloud/certificate/domain/model/UserCertificateE.java new file mode 100644 index 0000000..d8ef215 --- /dev/null +++ b/web-domain/src/main/java/com/zcloud/certificate/domain/model/UserCertificateE.java @@ -0,0 +1,59 @@ +package com.zcloud.certificate.domain.model; + +import com.alibaba.cola.domain.Entity; +import com.jjb.saas.framework.domain.model.BaseE; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.sql.Date; +import java.time.LocalDate; + +/** +* web-domain +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Data +public class UserCertificateE extends BaseE { + //业务主键id + private String userCertificateId; + //企业id + private Long corpinfoId; + //用户id + private Long userId; + //1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员 + private Integer type; + //证书名称 + private String certificateName; + //证书编号 + private String certificateCode; + //发证机构 + private String issuingAuthority; + //行业类别code-特种作业使用 + private String industryCategoryCode; + //行业类别名称-特种作业使用 + private String industryCategoryName; + //行业类别-操作项目code-特种作业使用 + private String industryOperatingItemsCode; + //行业类别-操作项目名称-特种作业使用 + private String industryOperatingItemsName; + //作业类别code-特种设备使用 + private String assignmentCategoryCode; + //作业类别名称-特种设备使用 + private String assignmentCategoryName; + //作业类别-操作项目code-特种设备使用 + private String assignmentOperatingItemsCode; + //作业类别-操作项目名称-特种设备使用 + private String assignmentOperatingItemsName; + //岗位名称(未定)-主要负责人和安全生产使用 + private String postName; + //发证日期 + private LocalDate dateIssue; + //证书有效期-开始时间 + private LocalDate certificateDateStart; + //证书有效期-结束时间 + private LocalDate certificateDateEnd; + //复审日期 + private LocalDate reviewDate; +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/CorpCertificateGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/CorpCertificateGatewayImpl.java index 39a1de8..a185529 100644 --- a/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/CorpCertificateGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/CorpCertificateGatewayImpl.java @@ -1,5 +1,6 @@ package com.zcloud.certificate.gatewayimpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zcloud.certificate.domain.gateway.CorpCertificateGateway; import com.zcloud.certificate.domain.model.CorpCertificateE; import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; @@ -8,6 +9,7 @@ import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import java.util.Arrays; import java.util.Collections; /** @@ -44,7 +46,17 @@ public class CorpCertificateGatewayImpl implements CorpCertificateGateway { @Override public Boolean deletedCorpCertificateByIds(Long[] ids) { - return corpCertificateRepository.removeByIds(Collections.singletonList(ids)); + return corpCertificateRepository.removeByIds(Arrays.asList(ids)); + } + + @Override + public Boolean checkCertificateExist(CorpCertificateE corpCertificateE) { + CorpCertificateDO d = new CorpCertificateDO(); + BeanUtils.copyProperties(corpCertificateE, d); + CorpCertificateDO queryDO = corpCertificateRepository.getOne(new LambdaQueryWrapper() + .eq(CorpCertificateDO::getCertificateCode, d.getCertificateCode()) + ); + return queryDO == null; } } diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/UserCertificateGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/UserCertificateGatewayImpl.java new file mode 100644 index 0000000..f202c4d --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/gatewayimpl/UserCertificateGatewayImpl.java @@ -0,0 +1,59 @@ +package com.zcloud.certificate.gatewayimpl; + +import com.zcloud.certificate.domain.gateway.UserCertificateGateway; +import com.zcloud.certificate.domain.model.UserCertificateE; +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.zcloud.certificate.persistence.repository.UserCertificateRepository; +import lombok.AllArgsConstructor; +import com.zcloud.gbscommon.utils.Tools; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import java.util.Arrays; + +/** +* web-infrastructure +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Service +@AllArgsConstructor +public class UserCertificateGatewayImpl implements UserCertificateGateway { + private final UserCertificateRepository userCertificateRepository; + + @Override + public Boolean add(UserCertificateE userCertificateE) { + UserCertificateDO d = new UserCertificateDO(Tools.get32UUID()); + BeanUtils.copyProperties(userCertificateE, d,"userCertificateId"); + userCertificateRepository.save(d); + return true; + } + + @Override + public Boolean update(UserCertificateE userCertificateE) { + UserCertificateDO d = new UserCertificateDO(); + BeanUtils.copyProperties(userCertificateE, d); + userCertificateRepository.updateById(d); + return true; + } + + @Override + public Boolean deletedUserCertificateById(Long id) { + return userCertificateRepository.removeById(id); + } + + @Override + public Boolean deletedUserCertificateByIds(Long[] ids) { + return userCertificateRepository.removeByIds(Arrays.asList(ids)); + } + + @Override + public Boolean checkCertificateExist(UserCertificateE userCertificateE) { + Long count = userCertificateRepository.lambdaQuery() + .eq(UserCertificateDO::getCertificateCode, userCertificateE.getCertificateCode()) + .ne(userCertificateE.getUserCertificateId() != null, UserCertificateDO::getUserCertificateId, userCertificateE.getUserCertificateId()) + .count(); + return count > 0; + } +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpCertificateDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpCertificateDO.java index 396a55b..b7645bc 100644 --- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpCertificateDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpCertificateDO.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; +import java.time.LocalDate; import java.util.Date; /** @@ -34,10 +35,10 @@ public class CorpCertificateDO extends BaseDO { private String certificateCode; //证书有效期-开始时间 @ApiModelProperty(value = "证书有效期-开始时间") - private Date certificateDateStart; + private LocalDate certificateDateStart; //证书有效期-结束时间 @ApiModelProperty(value = "证书有效期-结束时间") - private Date certificateDateEnd; + private LocalDate certificateDateEnd; //备注 @ApiModelProperty(value = "备注") private String remark; diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpInfoDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpInfoDO.java new file mode 100644 index 0000000..26f0505 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/CorpInfoDO.java @@ -0,0 +1,31 @@ +package com.zcloud.certificate.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@TableName("corp_info") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class CorpInfoDO extends BaseDO { + + @ApiModelProperty(value = "企业ID") + private Long corpId; + + @ApiModelProperty(value = "企业名称") + private String corpName; + + @ApiModelProperty(value = "企业类型") + private Integer corpType; + + @ApiModelProperty(value = "证照数量") + private Long certCount; + + @ApiModelProperty(value = "总数量") + private Long totalCount; + +} diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java new file mode 100644 index 0000000..7ca4e5c --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateDO.java @@ -0,0 +1,95 @@ +package com.zcloud.certificate.persistence.dataobject; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.jjb.saas.framework.repository.basedo.BaseDO; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import java.time.LocalDate; +import java.util.Date; + +/** +* web-infrastructure +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Data +@TableName("user_certificate") +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class UserCertificateDO extends BaseDO { + //业务主键id + @ApiModelProperty(value = "业务主键id") + private String userCertificateId; + //企业id + @ApiModelProperty(value = "企业id") + private Long corpinfoId; + //用户id + @ApiModelProperty(value = "用户id") + private Long userId; + //1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员 + @ApiModelProperty(value = "1-特种作业,2-特种设备,3-主要负责人,4-安全生产管理人员") + private Integer type; + //证书名称 + @ApiModelProperty(value = "证书名称") + private String certificateName; + //证书编号 + @ApiModelProperty(value = "证书编号") + private String certificateCode; + //发证机构 + @ApiModelProperty(value = "发证机构") + private String issuingAuthority; + //行业类别code-特种作业使用 + @ApiModelProperty(value = "行业类别code-特种作业使用") + private String industryCategoryCode; + //行业类别名称-特种作业使用 + @ApiModelProperty(value = "行业类别名称-特种作业使用") + private String industryCategoryName; + //行业类别-操作项目code-特种作业使用 + @ApiModelProperty(value = "行业类别-操作项目code-特种作业使用") + private String industryOperatingItemsCode; + //行业类别-操作项目名称-特种作业使用 + @ApiModelProperty(value = "行业类别-操作项目名称-特种作业使用") + private String industryOperatingItemsName; + //作业类别code-特种设备使用 + @ApiModelProperty(value = "作业类别code-特种设备使用") + private String assignmentCategoryCode; + //作业类别名称-特种设备使用 + @ApiModelProperty(value = "作业类别名称-特种设备使用") + private String assignmentCategoryName; + //作业类别-操作项目code-特种设备使用 + @ApiModelProperty(value = "作业类别-操作项目code-特种设备使用") + private String assignmentOperatingItemsCode; + //作业类别-操作项目名称-特种设备使用 + @ApiModelProperty(value = "作业类别-操作项目名称-特种设备使用") + private String assignmentOperatingItemsName; + //岗位名称(未定)-主要负责人和安全生产使用 + @ApiModelProperty(value = "岗位名称(未定)-主要负责人和安全生产使用") + private String postName; + //发证日期 + @ApiModelProperty(value = "发证日期") + private LocalDate dateIssue; + //证书有效期-开始时间 + @ApiModelProperty(value = "证书有效期-开始时间") + private LocalDate certificateDateStart; + //证书有效期-结束时间 + @ApiModelProperty(value = "证书有效期-结束时间") + private LocalDate certificateDateEnd; + //复审日期 + @ApiModelProperty(value = "复审日期") + private LocalDate reviewDate; + + @ApiModelProperty(value = "用户名称") + private String userName; + + @ApiModelProperty(value = "在职状态 0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核") + private Integer employmentStatus; + + public UserCertificateDO(String userCertificateId) { + this.userCertificateId = userCertificateId; + } + +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateStatDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateStatDO.java new file mode 100644 index 0000000..1a74681 --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserCertificateStatDO.java @@ -0,0 +1,28 @@ +package com.zcloud.certificate.persistence.dataobject; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserCertificateStatDO { + + @ApiModelProperty(value = "企业/相关方ID") + private Long corpinfoId; + + @ApiModelProperty(value = "企业/相关方名称") + private String corpName; + + @ApiModelProperty(value = "特种作业人员证书数量") + private Integer specialWorkCertCount; + + @ApiModelProperty(value = "特种设备人证书数量") + private Integer specialEquipmentCertCount; + + @ApiModelProperty(value = "主要负责人证书数量") + private Integer principalCertCount; + + @ApiModelProperty(value = "安全管理人员证书数量") + private Integer safetyManagerCertCount; + + +} diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserDO.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserDO.java new file mode 100644 index 0000000..cde65ee --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/dataobject/UserDO.java @@ -0,0 +1,27 @@ +package com.zcloud.certificate.persistence.dataobject; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserDO { + + @ApiModelProperty(value = "用户ID") + private Long userId; + + @ApiModelProperty(value = "用户名称") + private String userName; + + @ApiModelProperty(value = "在职状态 0-离职, 1-在职, 2-信息变更中, 3-未入职, 4-实习生, 5-实习结束, 6-退休, 7-劳务派遣, 8-劳务派遣结束, 11-入职待审核, 10-离职待审核") + private Integer employmentStatus; + + @ApiModelProperty(value = "部门名称") + private String departmentName; + + @ApiModelProperty(value = "企业名称") + private String corpinfoName; + + @ApiModelProperty(value = "岗位名称") + private String postName; + +} diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/CorpCertificateMapper.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/CorpCertificateMapper.java index 4846093..e39d826 100644 --- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/CorpCertificateMapper.java +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/CorpCertificateMapper.java @@ -2,8 +2,12 @@ package com.zcloud.certificate.persistence.mapper; import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zcloud.certificate.persistence.dataobject.CorpInfoDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; +import java.util.Map; + /** * web-infrastructure * @@ -13,5 +17,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface CorpCertificateMapper extends BaseMapper { + List selectCorpCertStatPage(Map params); + } diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java new file mode 100644 index 0000000..99e1e7c --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/mapper/UserCertificateMapper.java @@ -0,0 +1,40 @@ +package com.zcloud.certificate.persistence.mapper; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.zcloud.certificate.persistence.dataobject.UserCertificateStatDO; +import com.zcloud.certificate.persistence.dataobject.UserDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** +* web-infrastructure +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Mapper +public interface UserCertificateMapper extends BaseMapper { + + /** + * 根据批量userId查询用户名称 + */ + List selectUserNamesByUserIds(List userIds); + + /** + * 分页查询用户证书信息,包含用户名称 + */ + IPage selectPageWithUser(IPage page, @Param("params") Map params); + + /** + * 根据企业/相关方类型查询各企业/相关方各类人员证书数量 + */ + IPage selectCorpCertificateStatPage(IPage page, @Param("params") Map params); + + + +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/CorpCertificateRepository.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/CorpCertificateRepository.java index d4d4833..e671bd7 100644 --- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/CorpCertificateRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/CorpCertificateRepository.java @@ -4,6 +4,7 @@ import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; import com.alibaba.cola.dto.SingleResponse; import com.alibaba.cola.dto.PageResponse; import com.jjb.saas.framework.repository.repo.BaseRepository; +import com.zcloud.certificate.persistence.dataobject.CorpInfoDO; import java.util.Map; import java.util.List; @@ -21,5 +22,7 @@ public interface CorpCertificateRepository extends BaseRepository list(Map params); SingleResponse getInfoById(Long id); + + PageResponse statPage(Map params); } diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java new file mode 100644 index 0000000..25afd1d --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/UserCertificateRepository.java @@ -0,0 +1,40 @@ +package com.zcloud.certificate.persistence.repository; + +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.alibaba.cola.dto.PageResponse; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.repository.repo.BaseRepository; +import com.zcloud.certificate.persistence.dataobject.UserCertificateStatDO; +import com.zcloud.certificate.persistence.dataobject.UserDO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** +* web-infrastructure +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +public interface UserCertificateRepository extends BaseRepository { + PageResponse listPage(Map params); + + /** + * 根据批量userId查询用户名称 + */ + List getUserNamesByUserIds(List userIds); + + /** + * 分页查询包含用户信息 + */ + IPage listPageWithUser(IPage page, Map params); + + /** + * 根据企业/相关方类型查询各企业/相关方各类人员证书数量 + */ + IPage selectCorpCertificateStatPage( + IPage page, + @Param("params") Map params + ); +} + diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/CorpCertificateRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/CorpCertificateRepositoryImpl.java index 01db271..dd23421 100644 --- a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/CorpCertificateRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/CorpCertificateRepositoryImpl.java @@ -2,6 +2,7 @@ package com.zcloud.certificate.persistence.repository.impl; import com.jjb.saas.framework.repository.common.PageHelper; import com.zcloud.certificate.persistence.dataobject.CorpCertificateDO; +import com.zcloud.certificate.persistence.dataobject.CorpInfoDO; import com.zcloud.certificate.persistence.mapper.CorpCertificateMapper; import com.zcloud.certificate.persistence.repository.CorpCertificateRepository; import com.alibaba.cola.dto.SingleResponse; @@ -51,5 +52,18 @@ public class CorpCertificateRepositoryImpl extends BaseRepositoryImpl getInfoById(Long id) { return SingleResponse.of(corpCertificateMapper.selectById(id)); } + + @Override + public PageResponse statPage(Map params) { + Integer pageIndex = (Integer) params.get("pageIndex"); + Integer pageSize = (Integer) params.get("pageSize"); + params.put("offset", (pageIndex - 1) * pageSize); + + List rows = corpCertificateMapper.selectCorpCertStatPage(params); + + long total = rows.isEmpty() ? 0 : rows.get(0).getTotalCount(); + + return PageResponse.of(rows, (int)total, pageSize, pageIndex); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java new file mode 100644 index 0000000..51c8c6e --- /dev/null +++ b/web-infrastructure/src/main/java/com/zcloud/certificate/persistence/repository/impl/UserCertificateRepositoryImpl.java @@ -0,0 +1,57 @@ +package com.zcloud.certificate.persistence.repository.impl; + +import com.zcloud.certificate.persistence.dataobject.UserCertificateDO; +import com.zcloud.certificate.persistence.dataobject.UserCertificateStatDO; +import com.zcloud.certificate.persistence.dataobject.UserDO; +import com.zcloud.certificate.persistence.mapper.UserCertificateMapper; +import com.zcloud.certificate.persistence.repository.UserCertificateRepository; +import com.alibaba.cola.dto.PageResponse; +import com.jjb.saas.framework.repository.common.PageHelper; +import com.zcloud.gbscommon.utils.PageQueryHelper; +import com.zcloud.gbscommon.utils.Query; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** +* web-infrastructure +* @Author makejava +* @Date 2026-01-06 08:47:20 +*/ +@Service +@RequiredArgsConstructor +public class UserCertificateRepositoryImpl extends BaseRepositoryImpl implements UserCertificateRepository { + private final UserCertificateMapper userCertificateMapper; + + @Override + public PageResponse listPage(Map params) { + IPage iPage = new Query().getPage(params); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params); + queryWrapper.orderByDesc("create_time"); + IPage result = userCertificateMapper.selectPage(iPage, queryWrapper); + return PageHelper.pageToResponse(result, result.getRecords()); + } + + @Override + public List getUserNamesByUserIds(List userIds) { + return userCertificateMapper.selectUserNamesByUserIds(userIds); + } + + @Override + public IPage listPageWithUser(IPage page, Map params) { + return userCertificateMapper.selectPageWithUser(page, params); + } + + @Override + public IPage selectCorpCertificateStatPage(IPage page, Map params) { + return userCertificateMapper.selectCorpCertificateStatPage(page, params); + } +} + diff --git a/web-infrastructure/src/main/resources/mapper/CorpCertificateMapper.xml b/web-infrastructure/src/main/resources/mapper/CorpCertificateMapper.xml index b057dfd..9117d62 100644 --- a/web-infrastructure/src/main/resources/mapper/CorpCertificateMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/CorpCertificateMapper.xml @@ -3,5 +3,42 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + + + diff --git a/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml b/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml new file mode 100644 index 0000000..1d2a2d9 --- /dev/null +++ b/web-infrastructure/src/main/resources/mapper/UserCertificateMapper.xml @@ -0,0 +1,132 @@ + + + + + + + + + + + + + +