From 7695debf57d7745421abd37161141a0de1e0dfe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E9=94=A6=E8=B4=A4?= <996842803@qq.com> Date: Thu, 25 Jun 2026 18:28:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=81=9C=E5=B7=A5=E5=81=9C=E4=BA=A7):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=9F=BA=E7=A1=80=E9=A1=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/handler/StringListTypeHandler.java | 63 ++++++++++++ .../controller/ProCheckItemController.java | 84 ++++++++++++++++ .../op/technology/domain/ProCheckItem.java | 36 +++++++ .../technology/mapper/ProCheckItemMapper.java | 59 +++++++++++ .../service/IProCheckItemService.java | 61 ++++++++++++ .../service/impl/ProCheckItemServiceImpl.java | 97 +++++++++++++++++++ .../mapper/technology/ProCheckItemMapper.xml | 87 +++++++++++++++++ 7 files changed, 487 insertions(+) create mode 100644 op-common/op-common-core/src/main/java/com/op/common/core/handler/StringListTypeHandler.java create mode 100644 op-modules/op-technology/src/main/java/com/op/technology/controller/ProCheckItemController.java create mode 100644 op-modules/op-technology/src/main/java/com/op/technology/domain/ProCheckItem.java create mode 100644 op-modules/op-technology/src/main/java/com/op/technology/mapper/ProCheckItemMapper.java create mode 100644 op-modules/op-technology/src/main/java/com/op/technology/service/IProCheckItemService.java create mode 100644 op-modules/op-technology/src/main/java/com/op/technology/service/impl/ProCheckItemServiceImpl.java create mode 100644 op-modules/op-technology/src/main/resources/mapper/technology/ProCheckItemMapper.xml diff --git a/op-common/op-common-core/src/main/java/com/op/common/core/handler/StringListTypeHandler.java b/op-common/op-common-core/src/main/java/com/op/common/core/handler/StringListTypeHandler.java new file mode 100644 index 000000000..ff0ecc1a4 --- /dev/null +++ b/op-common/op-common-core/src/main/java/com/op/common/core/handler/StringListTypeHandler.java @@ -0,0 +1,63 @@ +package com.op.common.core.handler; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.ibatis.type.BaseTypeHandler; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * Description: 数组类型读取写入mybatis转换 + * + * @author : huangjinxian + * @version : 1.0 + * @since : 2026/6/25 + */ +@SuppressWarnings({"JavadocDeclaration", "unused", "SpellCheckingInspection"}) +@MappedTypes(List.class) +@MappedJdbcTypes(JdbcType.VARCHAR) +public class StringListTypeHandler extends BaseTypeHandler> { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + if (parameter == null || parameter.isEmpty()) { + ps.setString(i, null); + } else { + // 将 List 转换为逗号分隔的字符串存储 + ps.setString(i, String.join(",", parameter)); + } + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + String value = rs.getString(columnName); + return parse(value); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + String value = rs.getString(columnIndex); + return parse(value); + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + String value = cs.getString(columnIndex); + return parse(value); + } + + // 解析数据库中的字符串为 List + private List parse(String value) { + if (value == null || value.trim().isEmpty()) { + return Collections.emptyList(); + } + return Arrays.asList(value.split(",")); + } +} diff --git a/op-modules/op-technology/src/main/java/com/op/technology/controller/ProCheckItemController.java b/op-modules/op-technology/src/main/java/com/op/technology/controller/ProCheckItemController.java new file mode 100644 index 000000000..01dc2cd55 --- /dev/null +++ b/op-modules/op-technology/src/main/java/com/op/technology/controller/ProCheckItemController.java @@ -0,0 +1,84 @@ +package com.op.technology.controller; + +import java.util.List; +import javax.annotation.Resource; + +import com.op.common.core.web.domain.AjaxResult; +import com.op.common.core.web.page.TableDataInfo; +import com.op.common.core.web.controller.BaseController; +import com.op.common.log.annotation.Log; +import com.op.common.log.enums.BusinessType; +import com.op.common.security.annotation.RequiresPermissions; +import com.op.technology.domain.ProCheckItem; +import com.op.technology.service.IProCheckItemService; +import org.springframework.web.bind.annotation.*; + +/** + * 检查项目 Controller + * + * @author huangjinxian + * @date 2026-06-25 + */ +@RestController +@RequestMapping("/pro/checkItem") +@RequiresPermissions("mes:pro:procheck:list") +public class ProCheckItemController extends BaseController { + @Resource + private IProCheckItemService proCheckService; + + /** + * 查询检查项目列表 + */ + @GetMapping("/list") + public TableDataInfo list(ProCheckItem proCheck) { + startPage(); + List list = proCheckService.selectProCheckItemList(proCheck); + return getDataTable(list); + } + + /** + * 获取检查项目详细信息 + */ + @GetMapping(value = "/{itemId}") + public AjaxResult getInfo(@PathVariable("itemId") String itemId) { + return AjaxResult.success(proCheckService.selectProCheckItemByItemId(itemId)); + } + + /** + * 新增检查项目 + */ + @Log(title = "检查项目", businessType = BusinessType.INSERT) + //@RequiresPermissions("mes:pro:procheck:add") + @PostMapping + public AjaxResult add(@RequestBody ProCheckItem proCheck) { + if (proCheckService.selectProCheckItemByItemId(proCheck.getItemId()) != null) { + return AjaxResult.error("检查项目已存在!"); + } + return toAjax(proCheckService.insertProCheckItem(proCheck)); + } + + /** + * 修改检查项目 + */ + @Log(title = "检查项目", businessType = BusinessType.UPDATE) + //@RequiresPermissions("mes:pro:procheck:edit") + @PutMapping + public AjaxResult edit(@RequestBody ProCheckItem proCheckItem) { + String itemId = proCheckItem.getItemId(); + ProCheckItem checkItem = proCheckService.selectProCheckItemByItemId(proCheckItem.getItemId()); + if (checkItem != null && !checkItem.getItemId().equals(itemId)) { + return AjaxResult.error("检查项目已存在!"); + } + return toAjax(proCheckService.updateProCheckItem(proCheckItem)); + } + + /** + * 删除检查项目 + */ + @Log(title = "检查项目", businessType = BusinessType.DELETE) + //@RequiresPermissions("mes:pro:procheck:remove") + @DeleteMapping("/{itemIds}") + public AjaxResult remove(@PathVariable String[] itemIds) { + return toAjax(proCheckService.deleteProCheckItemByCheckIds(itemIds)); + } +} diff --git a/op-modules/op-technology/src/main/java/com/op/technology/domain/ProCheckItem.java b/op-modules/op-technology/src/main/java/com/op/technology/domain/ProCheckItem.java new file mode 100644 index 000000000..da394e30d --- /dev/null +++ b/op-modules/op-technology/src/main/java/com/op/technology/domain/ProCheckItem.java @@ -0,0 +1,36 @@ +package com.op.technology.domain; + +import com.op.common.core.annotation.Excel; +import com.op.common.core.web.domain.BaseEntity; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; + + + +import java.util.List; + +/** + * 检查项目对象 pro_check_item + * + * @author huangjinxian + * @date 2026-06-25 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class ProCheckItem extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 检查项目 ID + */ + private String itemId; + //检查项目 + private String itemName; + //检查对象 + private List checkObject; + //排序号 + private Integer sortOrder; + //是否删除 + Boolean isDel; +} diff --git a/op-modules/op-technology/src/main/java/com/op/technology/mapper/ProCheckItemMapper.java b/op-modules/op-technology/src/main/java/com/op/technology/mapper/ProCheckItemMapper.java new file mode 100644 index 000000000..023a3d5a3 --- /dev/null +++ b/op-modules/op-technology/src/main/java/com/op/technology/mapper/ProCheckItemMapper.java @@ -0,0 +1,59 @@ +package com.op.technology.mapper; + +import com.op.technology.domain.ProCheckItem; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 检查项目 Mapper 接口 + * + * @author huangjinxian + * @date 2026-06-25 + */ +@Mapper +public interface ProCheckItemMapper { + + /** + * 根据检查 ID 查询 + * @param checkId 检查 ID + * @return 检查项目 + */ + ProCheckItem selectByItemId(@Param("itemId") String itemId); + + /** + * 查询检查项目列表 + * @param proCheck 检查项目 + * @return 检查项目集合 + */ + List selectList(ProCheckItem proCheck); + + /** + * 新增检查项目 + * @param proCheck 检查项目 + * @return 结果 + */ + int insert(ProCheckItem proCheckItem); + + /** + * 修改检查项目 + * @param proCheck 检查项目 + * @return 结果 + */ + int update(ProCheckItem proCheckItem); + + /** + * 根据检查 ID 删除 + * @param checkId 检查 ID + * @return 结果 + */ + int deleteByItemId(@Param("itemId") String itemId); + + /** + * 批量删除检查项目 + * @param checkIds 需要删除的检查 ID 集合 + * @return 结果 + */ + int deleteByItemIds(@Param("itemIds") String[] itemIds); +} diff --git a/op-modules/op-technology/src/main/java/com/op/technology/service/IProCheckItemService.java b/op-modules/op-technology/src/main/java/com/op/technology/service/IProCheckItemService.java new file mode 100644 index 000000000..9b4e7f44e --- /dev/null +++ b/op-modules/op-technology/src/main/java/com/op/technology/service/IProCheckItemService.java @@ -0,0 +1,61 @@ +package com.op.technology.service; + +import com.op.technology.domain.ProCheckItem; + +import java.util.List; + +/** + * 检查项目 Service 接口 + * + * @author huangjinxian + * @date 2026-06-25 + */ +public interface IProCheckItemService { + /** + * 查询检查项目 + * + * @param checkId 检查项目主键 + * @return 检查项目 + */ + ProCheckItem selectProCheckItemByItemId(String checkId); + + /** + * 查询检查项目列表 + * + * @param proCheck 检查项目 + * @return 检查项目集合 + */ + List selectProCheckItemList(ProCheckItem proCheck); + + /** + * 新增检查项目 + * + * @param proCheck 检查项目 + * @return 结果 + */ + int insertProCheckItem(ProCheckItem proCheck); + + /** + * 修改检查项目 + * + * @param proCheck 检查项目 + * @return 结果 + */ + int updateProCheckItem(ProCheckItem proCheck); + + /** + * 批量删除检查项目 + * + * @param checkIds 需要删除的检查项目主键集合 + * @return 结果 + */ + int deleteProCheckItemByCheckIds(String[] checkIds); + + /** + * 删除检查项目信息 + * + * @param checkId 检查项目主键 + * @return 结果 + */ + int deleteProCheckItemByCheckId(String checkId); +} diff --git a/op-modules/op-technology/src/main/java/com/op/technology/service/impl/ProCheckItemServiceImpl.java b/op-modules/op-technology/src/main/java/com/op/technology/service/impl/ProCheckItemServiceImpl.java new file mode 100644 index 000000000..9f27a8735 --- /dev/null +++ b/op-modules/op-technology/src/main/java/com/op/technology/service/impl/ProCheckItemServiceImpl.java @@ -0,0 +1,97 @@ +package com.op.technology.service.impl; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.op.technology.domain.ProCheckItem; +import com.op.technology.mapper.ProCheckItemMapper; +import com.op.technology.service.IProCheckItemService; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 检查项目 Service 业务层处理 + * + * @author huangjinxian + * @date 2026-06-25 + */ +@Service +@RequiredArgsConstructor +public class ProCheckItemServiceImpl implements IProCheckItemService { + final ProCheckItemMapper proCheckItemMapper; + + /** + * 查询检查项目 + * + * @param itemId 检查项目主键 + * @return 检查项目 + */ + @Override + @DS("#header.poolName") + public ProCheckItem selectProCheckItemByItemId(String itemId) { + return proCheckItemMapper.selectByItemId(itemId); + } + + /** + * 查询检查项目列表 + * + * @param proCheck 检查项目 + * @return 检查项目集合 + */ + @Override + @DS("#header.poolName") + public List selectProCheckItemList(ProCheckItem proCheck) { + return proCheckItemMapper.selectList(proCheck); + } + + /** + * 新增检查项目 + * + * @param proCheck 检查项目 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int insertProCheckItem(ProCheckItem proCheck) { + return proCheckItemMapper.insert(proCheck); + } + + /** + * 修改检查项目 + * + * @param proCheck 检查项目 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int updateProCheckItem(ProCheckItem proCheck) { + if (proCheck.getItemId() == null) { + return -1; + } + return proCheckItemMapper.update(proCheck); + } + + /** + * 批量删除检查项目 + * + * @param itemIds 需要删除的检查项目主键集合 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteProCheckItemByCheckIds(String[] itemIds) { + return proCheckItemMapper.deleteByItemIds(itemIds); + } + + /** + * 删除检查项目信息 + * + * @param itemId 检查项目主键 + * @return 结果 + */ + @Override + @DS("#header.poolName") + public int deleteProCheckItemByCheckId(String itemId) { + return proCheckItemMapper.deleteByItemId(itemId); + } +} diff --git a/op-modules/op-technology/src/main/resources/mapper/technology/ProCheckItemMapper.xml b/op-modules/op-technology/src/main/resources/mapper/technology/ProCheckItemMapper.xml new file mode 100644 index 000000000..9b190fa92 --- /dev/null +++ b/op-modules/op-technology/src/main/resources/mapper/technology/ProCheckItemMapper.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + select item_id, item_name, check_object, sort_order, is_del + from pro_check_item + + + + + + + + insert into pro_check_item + + item_name, + check_object, + sort_order, + is_del, + + + #{itemName}, + #{checkObject}, + #{sortOrder}, + #{isDel}, + + + + + update pro_check_item + + item_name = #{itemName}, + check_object = #{checkObject}, + sort_order = #{sortOrder}, + is_del = #{isDel}, + + where item_id = #{itemId} + + + + update pro_check_item set is_del = 1 where item_id = #{itemId} + + + + update pro_check_item set is_del = 1 where item_id in + + #{itemId} + + +