package com.java110.fee.api.z2; import com.alibaba.fastjson.JSONObject; import com.java110.dto.importData.CourtExecutionProcedure; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 法院执行程序接口 * 适配 court_execution_procedure 表 * @author dev * @date 2025-12-24 */ @RestController @RequestMapping(value = "/courtExecutionProcedure") public class CourtExecutionProcedureApi { @Autowired protected SqlSessionTemplate sqlSessionTemplate; /** * 保存法院执行程序信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /courtExecutionProcedure/saveCourtExecutionProcedure * @path /app/courtExecutionProcedure/saveCourtExecutionProcedure */ @RequestMapping(value = "/saveCourtExecutionProcedure", method = RequestMethod.POST) public ResponseEntity saveCourtExecutionProcedure(@RequestBody JSONObject reqJson) { // 必传参数校验(ownerId为非空字段) Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含业主ID ownerId"); // 转换为POJO CourtExecutionProcedure po = BeanConvertUtil.covertBean(reqJson, CourtExecutionProcedure.class); // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("courtExecutionProcedureServiceDaoImpl.saveCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(po)); // 构造响应结果 JSONObject resJson = new JSONObject(); if (insert > 0) { resJson.put("code", "0000"); resJson.put("msg", "保存法院执行程序信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "保存法院执行程序信息失败"); } resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } public ResponseEntity saveCourtExecutionProcedure(CourtExecutionProcedure po) { // 调用Mapper保存方法 int insert = sqlSessionTemplate.insert("courtExecutionProcedureServiceDaoImpl.saveCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(po)); // 构造响应结果 JSONObject resJson = new JSONObject(); if (insert > 0) { resJson.put("code", "0000"); resJson.put("msg", "保存法院执行程序信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "保存法院执行程序信息失败"); } resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } /** * 批量保存法院执行程序信息 * * @param reqJson 请求参数(包含courtExecutionProcedureList数组) * @return 响应结果 * @serviceCode /courtExecutionProcedure/saveCourtExecutionProcedures * @path /app/courtExecutionProcedure/saveCourtExecutionProcedures */ @RequestMapping(value = "/saveCourtExecutionProcedures", method = RequestMethod.POST) public ResponseEntity saveCourtExecutionProcedures(@RequestBody JSONObject reqJson) { Assert.hasKeyAndValue(reqJson, "courtExecutionProcedureList", "请求报文中未包含批量数据列表"); // 转换批量数据 List poList = BeanConvertUtil.covertBeanList( reqJson.getJSONArray("courtExecutionProcedureList"), CourtExecutionProcedure.class); Map param = BeanConvertUtil.beanCovertMap(reqJson); param.put("courtExecutionProcedureList", poList); // 批量插入 int insert = sqlSessionTemplate.insert("courtExecutionProcedureServiceDaoImpl.batchSaveCourtExecutionProcedure", param); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "批量保存法院执行程序信息成功"); resJson.put("count", insert); return ResponseEntity.ok(resJson.toJSONString()); } /** * 修改法院执行程序信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /courtExecutionProcedure/updateCourtExecutionProcedure * @path /app/courtExecutionProcedure/updateCourtExecutionProcedure */ @RequestMapping(value = "/updateCourtExecutionProcedure", method = RequestMethod.POST) public ResponseEntity updateCourtExecutionProcedure(@RequestBody JSONObject reqJson) { // 主键校验 Assert.hasKeyAndValue(reqJson, "id", "请求报文中未包含主键ID"); // 必传业务参数校验(ownerId为非空字段) Assert.hasKeyAndValue(reqJson, "ownerId", "请求报文中未包含业主ID ownerId"); CourtExecutionProcedure po = BeanConvertUtil.covertBean(reqJson, CourtExecutionProcedure.class); // 调用Mapper修改方法 int update = sqlSessionTemplate.update("courtExecutionProcedureServiceDaoImpl.updateCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(po)); JSONObject resJson = new JSONObject(); if (update > 0) { resJson.put("code", "0000"); resJson.put("msg", "修改法院执行程序信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "修改法院执行程序信息失败,未找到对应记录"); } resJson.put("count", update); return ResponseEntity.ok(resJson.toJSONString()); } /** * 删除法院执行程序信息 * * @param reqJson 请求参数 * @return 响应结果 * @serviceCode /courtExecutionProcedure/deleteCourtExecutionProcedure * @path /app/courtExecutionProcedure/deleteCourtExecutionProcedure */ @RequestMapping(value = "/deleteCourtExecutionProcedure", method = RequestMethod.POST) public ResponseEntity deleteCourtExecutionProcedure(@RequestBody JSONObject reqJson) { // 必要参数校验 Assert.hasKeyAndValue(reqJson, "id", "主键ID不能为空"); CourtExecutionProcedure po = BeanConvertUtil.covertBean(reqJson, CourtExecutionProcedure.class); // 调用Mapper删除方法 int delete = sqlSessionTemplate.delete("courtExecutionProcedureServiceDaoImpl.deleteCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(po)); JSONObject resJson = new JSONObject(); if (delete > 0) { resJson.put("code", "0000"); resJson.put("msg", "删除法院执行程序信息成功"); } else { resJson.put("code", "0001"); resJson.put("msg", "删除法院执行程序信息失败,未找到对应记录"); } resJson.put("count", delete); return ResponseEntity.ok(resJson.toJSONString()); } /** * 分页查询法院执行程序信息列表 * * @param ownerId 业主ID(可选) * @param judgmentDocNumber 判决书编号(可选) * @param page 页码(默认1) * @param row 每页条数(默认10) * @param id 主键ID(可选) * @return 响应结果 * @serviceCode /courtExecutionProcedure/queryCourtExecutionProcedure * @path /app/courtExecutionProcedure/queryCourtExecutionProcedure */ @RequestMapping(value = "/queryCourtExecutionProcedure", method = RequestMethod.GET) public ResponseEntity queryCourtExecutionProcedure( @RequestParam(value = "ownerId", required = false) String ownerId, @RequestParam(value = "judgmentDocNumber", required = false) String judgmentDocNumber, @RequestParam(value = "page", defaultValue = "1") int page, @RequestParam(value = "row", defaultValue = "10") int row, @RequestParam(value = "id", required = false) String id) { // 封装查询参数 CourtExecutionProcedure queryPo = new CourtExecutionProcedure(); queryPo.setOwnerId(ownerId); queryPo.setJudgmentDocNumber(judgmentDocNumber); queryPo.setPage((page - 1) * row); // 需确保实体类有page/row字段的getter/setter queryPo.setRow(row); if (id != null && !id.isEmpty()) { queryPo.setId(id); } // 查询列表数据 List> list = sqlSessionTemplate.selectList( "courtExecutionProcedureServiceDaoImpl.getCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(queryPo)); // 查询总数 Object total = ((HashMap) sqlSessionTemplate.selectOne( "courtExecutionProcedureServiceDaoImpl.queryCourtExecutionProcedureCount", BeanConvertUtil.beanCovertMap(queryPo))).get("count"); // 构造分页响应 JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "查询法院执行程序信息成功"); resJson.put("page", page); resJson.put("row", row); resJson.put("total", total); resJson.put("data", list); return ResponseEntity.ok(resJson.toJSONString()); } /** * 根据ID查询单条法院执行程序信息 * * @param id 主键ID * @return 响应结果 * @serviceCode /courtExecutionProcedure/getCourtExecutionProcedureById * @path /app/courtExecutionProcedure/getCourtExecutionProcedureById */ @RequestMapping(value = "/getCourtExecutionProcedureById", method = RequestMethod.GET) public ResponseEntity getCourtExecutionProcedureById(@RequestParam(value = "id") String id) { // 主键校验 Assert.notNull(id, "主键ID不能为空"); CourtExecutionProcedure queryPo = new CourtExecutionProcedure(); queryPo.setId(id); // 查询单条数据 Map result = sqlSessionTemplate.selectOne( "courtExecutionProcedureServiceDaoImpl.getCourtExecutionProcedure", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); if (result != null) { resJson.put("code", "0000"); resJson.put("msg", "查询法院执行程序信息成功"); resJson.put("data", result); } else { resJson.put("code", "0001"); resJson.put("msg", "未找到对应法院执行程序记录"); } return ResponseEntity.ok(resJson.toJSONString()); } /** * 统计法院执行程序信息 * * @param ownerId 业主ID(可选) * @param judgmentDocNumber 判决书编号(可选) * @param startCreateTime 开始创建时间(可选,格式:yyyy-MM-dd HH:mm:ss) * @param endCreateTime 结束创建时间(可选) * @return 响应结果 * @serviceCode /courtExecutionProcedure/queryCourtExecutionProcedureStatistics * @path /app/courtExecutionProcedure/queryCourtExecutionProcedureStatistics */ @RequestMapping(value = "/queryCourtExecutionProcedureStatistics", method = RequestMethod.GET) public ResponseEntity queryCourtExecutionProcedureStatistics( @RequestParam(value = "ownerId", required = false) String ownerId, @RequestParam(value = "judgmentDocNumber", required = false) String judgmentDocNumber, @RequestParam(value = "startCreateTime", required = false) String startCreateTime, @RequestParam(value = "endCreateTime", required = false) String endCreateTime) { CourtExecutionProcedure queryPo = new CourtExecutionProcedure(); queryPo.setOwnerId(ownerId); queryPo.setJudgmentDocNumber(judgmentDocNumber); queryPo.setCreateTime(startCreateTime); // 需根据实际统计逻辑调整字段映射 queryPo.setUpdateTime(endCreateTime); // 统计查询 Map statistics = sqlSessionTemplate.selectOne( "courtExecutionProcedureServiceDaoImpl.queryCourtExecutionProcedureStatistics", BeanConvertUtil.beanCovertMap(queryPo)); JSONObject resJson = new JSONObject(); resJson.put("code", "0000"); resJson.put("msg", "统计法院执行程序信息成功"); resJson.put("data", statistics); return ResponseEntity.ok(resJson.toJSONString()); } /** * 补充分页查询参数(适配实体类分页字段) * 注:需在CourtExecutionProcedure实体类中添加page/row字段的getter/setter,否则需调整参数封装逻辑 */ private void setPageParam(CourtExecutionProcedure po, int page, int row) { try { // 反射设置分页偏移量和每页条数(若实体类未显式定义page/row字段时使用) java.lang.reflect.Field pageField = po.getClass().getDeclaredField("page"); pageField.setAccessible(true); pageField.set(po, (page - 1) * row); java.lang.reflect.Field rowField = po.getClass().getDeclaredField("row"); rowField.setAccessible(true); rowField.set(po, row); } catch (Exception e) { throw new RuntimeException("设置分页参数失败", e); } } }