个人网厅——销户
目录
需求文档
公积金销户类
controller层
service层
service层实现类
1.验证 (个人账户)
2.提交(添加)
controller层
service层
service层实现类
3.分页查询
controller层
service层
service层实现类
4. 详情查询
controller层
service层
service层实现类
需求文档
公积金销户流水表提交(添加)、分页、查看(详情查询)、验证(个人账户)
在离职、退休、提前退休的情况下,会将公积金账户注销并取出里面资金
公积金销户类
controller层
@Tag(name = "管理后台-销户-公积金销户")
@RestController
@RequestMapping("/business/tq-gjjxh")
@Validated
public class TqGjjxhlsbController {@Resourceprivate TqGjjxhlsbService tqGjjxhlsbService;...(类中功能方法)}
service层
/*** 个人网上营业厅-公积金销户流水 Service 接口** @author 芋道源码*/
public interface TqGjjxhlsbService {...
}
service层实现类
/*** 个人网上营业厅-公积金销户流水 Service 实现类** @author 芋道源码*/
@Service
@Validated
public class TqGjjxhlsbServiceImpl implements TqGjjxhlsbService {@Resourceprivate TqGjjxhlsbMapper tqGjjxhlsbMapper;...
}
1.验证 (个人账户)
/*** 根据vo中的定义验证参数合法后,验证请求数据合法性* @param createReqVO (暂存、直接保存)请求参数* @return SaveGeneralReturn*/private CommonResult<SaveGeneralReturn> validateData(TqGjjxhlsbCreateReqVO createReqVO){SaveGeneralReturn saveGeneralReturn=new SaveGeneralReturn();List<ErrorCode> errorCodeList=new ArrayList<>();//传入参数不合法/*******判断网厅是否存在未审批记录*************/LambdaQueryWrapper<TqGjjxhlsbDO> queryWrapper = new LambdaQueryWrapper();queryWrapper.eq(TqGjjxhlsbDO::getGrzh,createReqVO.getGrzh());queryWrapper.ne(TqGjjxhlsbDO::getYwzt,"100");List<TqGjjxhlsbDO> tqGjjxhlsbDOList = tqGjjxhlsbService.getSelectList(queryWrapper);if (tqGjjxhlsbDOList != null && tqGjjxhlsbDOList.size() > 0) {errorCodeList.add(GJJXHLSB_WSP);}saveGeneralReturn.setValidate(errorCodeList.size() == 0);saveGeneralReturn.setErrorCount(errorCodeList.size());saveGeneralReturn.setErrorCodes(errorCodeList);//特殊判断return success(saveGeneralReturn);}
通过查询数据库表TqGjjxhlsbDO来判断,具体查询条件是根据createReqVO中的"grzh"属性等于表中的"grzh"并且"ywzt"属性不等于"100"。如果查询结果不为空且数量大于0,将给予错误码GJJXHLSB_WSP(公积金提取流水表未审批)提示。个人账户具有唯一性,相同的个人账户,不予添加。
2.提交(添加)
controller层
/***提交 保存数据 注意业务状态* */@PostMapping("/create")@Operation(summary = "公积金销户_保存")public CommonResult<SaveGeneralReturn> createTqGjjxhlsb(@Valid @RequestBody TqGjjxhlsbCreateReqVO createReqVO){CommonResult<SaveGeneralReturn> validatedReturn=validateData(createReqVO);SaveGeneralReturn validated=validatedReturn.getData();if(validated.getValidate()){createReqVO.setYwzt("0");BigDecimal id = tqGjjxhlsbService.createTqGjjxhlsb(createReqVO);validated.setId(id);validated.setSuccessMsg("暂存成功");return success(validated);}return error(validatedReturn);}
通过判断
validated
对象的validate
属性是否为true来确定是否通过了数据验证。如果通过验证,即为库中不存在相同账户的额数据,将createReqVO
的ywzt
属性设置为"0",调用
tqGjjxhlsbService.createTqGjjxhlsb(createReqVO)
方法保存数据,并将返回的id赋值给validated
对象的id
属性。随后,设置validated
对象的successMsg
属性为"暂存成功",并返回success(validated)
。
service层
/*** 创建个人网上营业厅-公积金销户流水** @param createReqVO 创建信息* @return 编号*/BigDecimal createTqGjjxhlsb(@Valid TqGjjxhlsbCreateReqVO createReqVO);
service层实现类
@Overridepublic BigDecimal createTqGjjxhlsb(TqGjjxhlsbCreateReqVO createReqVO) {// 插入TqGjjxhlsbDO tqGjjxhlsb = TqGjjxhlsbConvert.INSTANCE.convert(createReqVO);tqGjjxhlsbMapper.insert(tqGjjxhlsb);// 返回return tqGjjxhlsb.getId();}
3.分页查询
controller层
/*** @param pageVO 请求参数(包括分页参数)* @return PageResult<TqGjjxhlsbRespVO>*/@GetMapping("/page")@Operation(summary = "公积金销户_分页查询")public CommonResult<PageResult<TqGjjxhlsbRespVO>> getTqGjjxhlsbPage(@Valid TqGjjxhlsbPageReqVO pageVO){PageResult<TqGjjxhlsbDO> pageResult = tqGjjxhlsbService.getTqGjjxhlsbPage(pageVO);return success(TqGjjxhlsbConvert.INSTANCE.convertPage(pageResult));}
service层
/*** 获得个人网上营业厅-公积金销户流水分页** @param pageReqVO 分页查询* @return 个人网上营业厅-公积金销户流水分页*/PageResult<TqGjjxhlsbDO> getTqGjjxhlsbPage(TqGjjxhlsbPageReqVO pageReqVO);
service层实现类
@Overridepublic PageResult<TqGjjxhlsbDO> getTqGjjxhlsbPage(TqGjjxhlsbPageReqVO pageReqVO) {return tqGjjxhlsbMapper.selectPage(pageReqVO);}
4. 详情查询
controller层
/*** 详情* @param id 查询参数* @result TqGjjxhlsbRespVO*/@GetMapping("/get")@Operation(summary = "公积金销户_查看详情")@Parameter(name = "id", description = "编号", required = true, example = "1024")public CommonResult<TqGjjxhlsbRespVO> getTqGjjxhlsb(@RequestParam("id") BigDecimal id){TqGjjxhlsbDO tqGjjxhlsb = tqGjjxhlsbService.getTqGjjxhlsb(id);return success(TqGjjxhlsbConvert.INSTANCE.convert(tqGjjxhlsb));}
service层
/*** 获得个人网上营业厅-公积金销户流水** @param id 编号* @return 个人网上营业厅-公积金销户流水*/TqGjjxhlsbDO getTqGjjxhlsb(BigDecimal id);
service层实现类
@Overridepublic TqGjjxhlsbDO getTqGjjxhlsb(BigDecimal id) {return tqGjjxhlsbMapper.selectById(id);}
相关文章:

个人网厅——销户
目录 需求文档 公积金销户类 controller层 service层 service层实现类 1.验证 (个人账户) 2.提交(添加) controller层 service层 service层实现类 3.分页查询 controller层 service层 service层实现类 4. 详情查询…...

通过创建自定义标签来扩展HTML
使用HTML时,例如,使用<b>标记显示粗体文本。 如果需要列表,则对每个列表项使用<ul>标记及其子标记<li> 。 标签由浏览器解释,并与CSS一起确定网页内容的显示方式以及部分内容的行为。 有时,仅使用一…...

Nacos热更新
Nacos热更新 相比其他注册中心,Nacos的优势之一在于热更新。 热更新,就是不需要重启服务,就能够更新配置。 nacos配置中心 首先,需要搭建 Nacos,详情见: https://www.cnblogs.com/expiator/p/17392549.h…...
CSS3 中 transition 和 animation 的属性分别有哪些
Transition 属性: transition 属性用于定义元素在状态改变时从一个样式转换到另一个样式的过渡效果。它包含以下几个属性: • transition-property:指定过渡效果应用的 CSS 属性名称,多个属性可以用逗号分隔。 •…...

【狂神说Java】Nginx详解
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…...

【第六章】软件设计师 之 数据结构与算法基础
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 备考资料导航 软考好处:软考的…...

Git基本概念和使用方式
Git 是一种版本控制系统,用于管理文件版本的变化。以下是其基本概念和使用方式: 仓库(repository):Git 存储代码的地方,可以理解为一个项目的文件夹。提交(commit):Git …...
Falcon构建轻量级的REST API服务
Falcon构建轻量级的REST API服务 文章目录 Falcon构建轻量级的REST API服务安装falcon构建falcon项目应用托管(Hosting Your App)简单示例内容服务(Serving Text)JSON请求和响应处理路由和 URI 参数中间件异常处理 图像服务(Serving Images)创建图像资源关联资源请求和响应对象…...

【Python】python读取,显示,保存图像的几种方法
一、PIL:Python Imaging Library(pillow) PIL读取图片不直接返回numpy对象,可以用numpy提供的函数np.array()进行转换,亦可用Image.fromarray()再从numpy对象转换为原来的Image对象,读取,显示&…...

k8s系列-kuboard 该操作平台的使用操作
文章目录 一、相关平台,以及账号和密码镜像打包服务器仓库地址K8s平台数据库mysql 二、平台概述1.集群导入2.集群管理3.名称空间4.访问控制授权5.集群用户操作审计 三、kuboard平台操作手册一、部署服务操作1.名称空间部署2.工作负载部署 一、相关平台,以…...

基于讯飞星火大语言模型开发的智能插件:小策问答
星火大语言模型是一种基于深度学习的自然语言处理技术,它能够理解和生成人类语言。这种模型的训练过程涉及到大量的数据和复杂的算法,但最终的目标是让机器能够像人一样理解和使用语言。 小策问答是一款基于星火大语言模型的定制化GPT插件小工具。它的主…...

笔记:AI量化策略开发流程-基于BigQuant平台(二)
五、模型训练股票预测 完成了数据处理,接下来就可利用平台集成的各算法进行模型训练和模型预测啦。本文将详细介绍“模型训练”、“模型预测”两大模块操作、原理。 模型训练和模型预测是AI策略区别于传统量化策略的核心,我们通过模型训练模块利用训练…...
100127. 给小朋友们分糖果 II
给你两个正整数 n 和 limit 。 请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。 示例 1: 输入:n 5, limit 2 输出:3 解释:总共有 3 种方…...

【2】Spring Boot 3 项目搭建
目录 【2】Spring Boot 3 初始项目搭建项目生成1. 使用IDEA商业版创建2. 使用官方start脚手架创建 配置与启动Git版本控制 个人主页: 【⭐️个人主页】 需要您的【💖 点赞关注】支持 💯 【2】Spring Boot 3 初始项目搭建 项目生成 1. 使用IDEA商业版创…...

【第七章】软件设计师 之 程序设计语言与语言程序处理程序基础
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 1、前言 正规式 2、编译过程 编译型&…...

如何判断一个角是否大于180度(2)
理论计算见上一篇: 如何判断一个角是否大于180度?_kv1830的博客-CSDN博客 此篇为代码实现 一。直接上代码: import cv2 as cv import numpy as np import mathdef get_vector(p_from, p_to):return p_to[0] - p_from[0], p_to[1] - p_from…...

ASAM OpenDRIVE V1.7协议超详解(一)
文章目录 前言一、仿真场景的构成二、openDRIVE框架三、g_additionalData四、openDRIVE-header五、openDRIVE-road1、Road总拓扑结构2、Road-link介绍1)link的拓扑结构2)link链接示例3)link前继后继4)道路link规则 3、road-type介…...

springboot的配置信息的设置和读取(application.properties/application.yml)
springboot提供了两种配置信息的文件格式,application.properties和application.yml,基于直接明了,使用方便和高效的前提下下面的配置均采用yml格式配置, 注意 yml采用缩减方式来排列键后面紧跟冒号,然后空格&#x…...

Deepsort项目详解
一、目标追踪整体代码 代码目录如下图所示: 、 追踪相关代码: 检测相关代码和权重 调用 检测 和 追踪的代码: 首先代码分为三个部分: 目标追踪的相关代码和权重目标检测相关代码和权重,这里用的是yolov5.5目标检…...

C语言证明一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数
完整代码: // 一个偶数总能表示为两个素数之和。输入一个偶数并将其分解为两个素数#include<stdio.h>//判断一个数n是否为素数 int isPrimeNumber(int n){//1不是素数if (n1){return 0;}for (int i 2; i <(n/2); i){//当有n能被整除时,不是素…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...