From 45c3b7aacf3d20e1915e597152ad30a3b40377a2 Mon Sep 17 00:00:00 2001 From: “djh” <“3298565835@qq.com”> Date: 星期一, 28 七月 2025 13:11:34 +0800 Subject: [PATCH] 修改小程序考试,新增项目管理 --- multi-system/src/main/java/com/gkhy/exam/system/service/impl/ItemServiceImpl.java | 84 ++++++++++ multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java | 12 - multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java | 1 multi-system/src/main/java/com/gkhy/exam/system/service/ItemService.java | 19 ++ multi-system/src/main/java/com/gkhy/exam/system/mapper/ItemMapper.java | 23 ++ multi-system/src/main/java/com/gkhy/exam/system/domain/ItemUser.java | 37 ++++ multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml | 5 multi-system/src/main/resources/mapper/system/ProductItemMapper.xml | 16 + multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java | 22 ++ multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java | 8 + multi-system/src/main/resources/mapper/system/ItemMapper.xml | 71 ++++++++ multi-system/src/main/java/com/gkhy/exam/system/domain/Item.java | 54 ++++++ multi-system/src/main/java/com/gkhy/exam/system/domain/req/ItemReq.java | 9 + multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java | 59 +++++++ multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml | 2 15 files changed, 407 insertions(+), 15 deletions(-) diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java index 2f6dde6..e3bf6c3 100644 --- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java +++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/QualityController.java @@ -37,6 +37,9 @@ @Autowired private ProductItemService productItemService; + @Autowired + private ItemService itemService; + /** * 质量目标列表 @@ -394,6 +397,62 @@ return productItemService.deletedProductItem(itemId); } + /** + * 项目列表 + * @param item + * @return + */ + @ApiOperation(value = "项目列表(分页)") + @ApiImplicitParams({ + @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"), + @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"), + }) + @GetMapping("/item/list") + public CommonResult listitem(Item item){ + return CommonResult.success(itemService.selectItemList(item)); + } + + + @ApiOperation(value = "项目列表") + @GetMapping("/item/listAll") + public CommonResult allListItem(ItemReq itemReq){ + return itemService.selectItemListAll(itemReq); + } + + + /** + * 项目新增 + * @param item + * @return + */ + @ApiOperation(value = "项目新增") + @PostMapping("/item/insert") + public CommonResult insertItem(@RequestBody Item item){ + return itemService.insertItem(item); + } + + /** + * 项目修改 + * @param item + * @return + */ + @ApiOperation(value = "项目修改") + @PostMapping("/item/update") + public CommonResult updateItem(@RequestBody Item item){ + return itemService.updateItem(item); + } + + /** + * 项目删除 + * @param itemId + * @return + */ + @ApiOperation(value = "项目删除") + @GetMapping("/item/deleted") + public CommonResult deletedItem(@RequestParam("itemId") Integer itemId){ + return itemService.deletedItem(itemId); + } + } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java index 5e58c40..a9e40ea 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ExExamRecord.java @@ -46,7 +46,7 @@ @NotNull(message = "学员id不能为空") @ApiModelProperty(value = "学员id",required = true) @TableField("student_id") - private Long studentId; + private String studentId; @NotBlank(message = "计划名称不能为空") @ApiModelProperty(value = "计划名称",required = true) @@ -63,22 +63,18 @@ @TableField("level") private Integer level; - @NotNull(message = "要求课时不能为空") - @ApiModelProperty(value = "要求课时(分)",required = true) + @ApiModelProperty(value = "要求课时(分)") @TableField("period") private Integer period; - @NotNull(message = "实际课时不能为空") - @ApiModelProperty(value = "实际课时(分)",required = true) + @ApiModelProperty(value = "实际课时(分)") @TableField("actual_period") private Integer actualPeriod; - @NotNull(message = "考试成绩不能为空") @ApiModelProperty("考试成绩") @TableField("score") private Integer score; - @NotNull(message = "是否合格不能为空") @ApiModelProperty("是否合格,0不合格 1合格 默认0") @TableField("passed") private Integer passed; @@ -110,7 +106,7 @@ @ApiModelProperty("学生对象") @TableField(exist = false) - private ExStudent student; + private List<ExStudent> students; @ApiModelProperty("培训记录文件") diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/Item.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/Item.java new file mode 100644 index 0000000..b298981 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/Item.java @@ -0,0 +1,54 @@ +package com.gkhy.exam.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.gkhy.exam.common.domain.entity.SysUser; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + + +@Data +@TableName("item") +@ApiModel(value = "Item对象", description = "项目类") +public class Item implements Serializable { + + @ApiModelProperty("主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "企业id") + @TableField("company_id") + private Long companyId; + + @ApiModelProperty(value = "项目名称") + @TableField("item_name") + private String itemName; + + @TableField("del_flag") + private Integer delFlag; + + @TableField("create_by") + private String createBy; + + @TableField("create_time") + private LocalDateTime createTime; + + @TableField("update_by") + private String updateBy; + + @TableField("update_time") + private LocalDateTime updateTime; + + @TableField(exist = false) + private List<ItemUser> users; + + + +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ItemUser.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ItemUser.java new file mode 100644 index 0000000..a2ca65a --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ItemUser.java @@ -0,0 +1,37 @@ +package com.gkhy.exam.system.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; + +@Data +@TableName("item_user") +@ApiModel(value = "ItemUser对象", description = "项目类") +public class ItemUser implements Serializable { + + + @ApiModelProperty("主键") + @TableId(value = "id", type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "项目id") + @TableField("item_id") + private Integer itemId; + + @ApiModelProperty(value = "用户id") + @TableField("user_id") + private Long userId; + + @ApiModelProperty(value = "用户姓名") + @TableField("user_name") + private String userName; + + @TableField("del_flag") + private Integer delFlag; +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java index 69d1714..8a77d27 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/ProductItem.java @@ -31,6 +31,14 @@ @TableField(exist = false) private String companyName; + @ApiModelProperty(value = "项目id") + @TableField("item_id") + private Integer itemId; + @TableField(exist = false) + private String itemName; + @TableField(exist = false) + private Long userId; + @ApiModelProperty(value = "文件编号") @TableField("number") private String number; diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/req/ItemReq.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/req/ItemReq.java new file mode 100644 index 0000000..de4a898 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/req/ItemReq.java @@ -0,0 +1,9 @@ +package com.gkhy.exam.system.domain.req; + +import lombok.Data; + +@Data +public class ItemReq { + private Integer companyId; + private Integer userId; +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/ItemMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ItemMapper.java new file mode 100644 index 0000000..cee1506 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/ItemMapper.java @@ -0,0 +1,23 @@ +package com.gkhy.exam.system.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.gkhy.exam.system.domain.Item; +import com.gkhy.exam.system.domain.ItemUser; +import com.gkhy.exam.system.domain.req.ItemReq; +import org.apache.ibatis.annotations.Param; +import org.mapstruct.Mapper; + +import java.util.List; + +@Mapper +public interface ItemMapper extends BaseMapper<Item> { + List<Item> selectItemList(Item item); + + void insertItemUser(@Param("users") List<ItemUser> users); + + void deleteItemUser(@Param("id") Integer id); + + List<Item> selectItemListAll(ItemReq itemReq); + + List<ItemUser> selectItemUser(@Param("itemId") Integer id); +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/ItemService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/ItemService.java new file mode 100644 index 0000000..0c00839 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/ItemService.java @@ -0,0 +1,19 @@ +package com.gkhy.exam.system.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.gkhy.exam.common.api.CommonPage; +import com.gkhy.exam.common.api.CommonResult; +import com.gkhy.exam.system.domain.Item; +import com.gkhy.exam.system.domain.req.ItemReq; + +public interface ItemService extends IService<Item> { + CommonPage selectItemList(Item item); + + CommonResult insertItem(Item item); + + CommonResult updateItem(Item item); + + CommonResult deletedItem(Integer itemId); + + CommonResult selectItemListAll(ItemReq itemReq); +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java index 114bc30..a95b013 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ExExamRecordServiceImpl.java @@ -8,13 +8,17 @@ import com.gkhy.exam.common.utils.PageUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.system.domain.ExExamRecord; +import com.gkhy.exam.system.domain.ExStudent; import com.gkhy.exam.system.domain.RecordFile; import com.gkhy.exam.system.mapper.ExExamRecordMapper; +import com.gkhy.exam.system.mapper.ExStudentMapper; import com.gkhy.exam.system.service.ExExamRecordService; import org.ehcache.core.util.CollectionUtil; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.util.ArrayList; import java.util.List; /** @@ -29,6 +33,10 @@ public class ExExamRecordServiceImpl extends ServiceImpl<ExExamRecordMapper, ExExamRecord> implements ExExamRecordService { + @Autowired + private ExStudentMapper studentMapper; + + @Override public CommonPage selectExamRecordList(ExExamRecord examRecord) { SysUser user= SecurityUtils.getLoginUser().getUser(); @@ -40,6 +48,13 @@ for (ExExamRecord exExamRecord : recordList) { List<RecordFile> recordFiles = baseMapper.selectFiles(exExamRecord.getId()); exExamRecord.setFiles(recordFiles); + List<ExStudent> exStudents = new ArrayList<>(); + String[] split = exExamRecord.getStudentId().split(","); + for (String studentId : split) { + ExStudent exStudent = studentMapper.selectStudentById(Long.valueOf(studentId)); + exStudents.add(exStudent); + } + exExamRecord.setStudents(exStudents); } return CommonPage.restPage(recordList); } @@ -49,6 +64,13 @@ ExExamRecord exExamRecord = baseMapper.selectExamRecordById(recordId); List<RecordFile> recordFiles = baseMapper.selectFiles(exExamRecord.getId()); exExamRecord.setFiles(recordFiles); + List<ExStudent> exStudents = new ArrayList<>(); + String[] split = exExamRecord.getStudentId().split(","); + for (String studentId : split) { + ExStudent exStudent = studentMapper.selectStudentById(Long.valueOf(studentId)); + exStudents.add(exStudent); + } + exExamRecord.setStudents(exStudents); return exExamRecord; } diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ItemServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ItemServiceImpl.java new file mode 100644 index 0000000..6262a91 --- /dev/null +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ItemServiceImpl.java @@ -0,0 +1,84 @@ +package com.gkhy.exam.system.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.gkhy.exam.common.api.CommonPage; +import com.gkhy.exam.common.api.CommonResult; +import com.gkhy.exam.common.domain.entity.SysUser; +import com.gkhy.exam.common.utils.PageUtils; +import com.gkhy.exam.common.utils.SecurityUtils; +import com.gkhy.exam.system.domain.Item; +import com.gkhy.exam.system.domain.ItemUser; +import com.gkhy.exam.system.domain.req.ItemReq; +import com.gkhy.exam.system.mapper.ItemMapper; +import com.gkhy.exam.system.service.ItemService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.time.LocalDateTime; +import java.util.List; + + +@Service +public class ItemServiceImpl extends ServiceImpl<ItemMapper, Item> implements ItemService { + @Autowired + private ItemMapper itemMapper; + + @Override + public CommonPage selectItemList(Item item) { + PageUtils.startPage(); + List<Item> items = itemMapper.selectItemList(item); + for (Item item1 : items) { + List<ItemUser> itemUsers = itemMapper.selectItemUser(item1.getId()); + item1.setUsers(itemUsers); + } + return CommonPage.restPage(items); + } + + @Override + public CommonResult insertItem(Item item) { + item.setCreateBy(SecurityUtils.getUsername()); + item.setCreateTime(LocalDateTime.now()); + itemMapper.insert(item); + List<ItemUser> users = item.getUsers(); + for (ItemUser user : users) { + user.setItemId(item.getId()); + } + itemMapper.insertItemUser(users); + return CommonResult.success(); + } + + @Override + public CommonResult updateItem(Item item) { + item.setUpdateBy(SecurityUtils.getUsername()); + item.setUpdateTime(LocalDateTime.now()); + itemMapper.updateById(item); + List<ItemUser> users = item.getUsers(); + itemMapper.deleteItemUser(item.getId()); + for (ItemUser user : users) { + user.setItemId(item.getId()); + } + itemMapper.insertItemUser(users); + return CommonResult.success(); + } + + @Override + public CommonResult deletedItem(Integer itemId) { + Item item = new Item(); + item.setId(itemId); + item.setUpdateBy(SecurityUtils.getUsername()); + item.setUpdateTime(LocalDateTime.now()); + item.setDelFlag(2); + itemMapper.updateById(item); + return CommonResult.success(); + } + + @Override + public CommonResult selectItemListAll(ItemReq itemReq) { + List<Item> items = itemMapper.selectItemListAll(itemReq); + for (Item item1 : items) { + List<ItemUser> itemUsers = itemMapper.selectItemUser(item1.getId()); + item1.setUsers(itemUsers); + } + return CommonResult.success(items); + } +} diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java index eaf3996..5aec97b 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/ProductItemServiceImpl.java @@ -27,6 +27,7 @@ if (productItem.getCompanyId()==null){ throw new ApiException("非管理员操作,企业id不可为空"); } + productItem.setUserId(SecurityUtils.getUserId()); } PageUtils.startPage(); List<ProductItem> productItems = productItemMapper.selectProductItemList(productItem); diff --git a/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml b/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml index 4aba8f6..415f199 100644 --- a/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml +++ b/multi-system/src/main/resources/mapper/system/ExExamRecordMapper.xml @@ -19,7 +19,6 @@ <result property="updateTime" column="update_time" /> <result property="remark" column="remark" /> <result property="companyName" column="company_name" /> - <association property="student" javaType="com.gkhy.exam.system.domain.ExStudent" resultMap="exStudentResult" /> </resultMap> <resultMap id="exStudentResult" type="com.gkhy.exam.system.domain.ExStudent"> @@ -31,11 +30,9 @@ <sql id="selectExamRecordVo"> select a.id, a.company_id, a.student_id, a.plan_name, a.course_name,a.level,a.period,a.actual_period,a.score, - a.passed, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,b.name as company_name, - c.name as student_name,c.id_no as student_idno,c.phone as student_phone + a.passed, a.create_by, a.create_time, a.update_by, a.update_time, a.remark,b.name as company_name from ex_exam_record a left join sys_company b on b.id=a.company_id - left join ex_student c on c.id=a.student_id </sql> <insert id="insertFile"> INSERT INTO `record_file` diff --git a/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml b/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml index d38ff0b..6b69ff5 100644 --- a/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml +++ b/multi-system/src/main/resources/mapper/system/ExPaperStudentMapper.xml @@ -123,7 +123,7 @@ </select> <select id="selectPaperStudentList" resultMap="SimplePaperStudentResult"> - select a.*,e.name as create_name,b.phone as student_phone,b.name as student_name,c.name as paper_name,c.code as paper_code,c.limited,c.limit_time,c.deadline,d.name as category_name + select a.*,c.create_by as create_name,b.phone as student_phone,b.name as student_name,c.name as paper_name,c.code as paper_code,c.limited,c.limit_time,c.deadline,d.name as category_name <if test="studentId!=null"> ,(select question_id from ex_student_answer where paper_id=a.paper_id and student_id=#{studentId} order by id desc limit 1) as question_id </if> diff --git a/multi-system/src/main/resources/mapper/system/ItemMapper.xml b/multi-system/src/main/resources/mapper/system/ItemMapper.xml new file mode 100644 index 0000000..3d6341e --- /dev/null +++ b/multi-system/src/main/resources/mapper/system/ItemMapper.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.gkhy.exam.system.mapper.ItemMapper"> + <insert id="insertItemUser"> + INSERT INTO `item_user` ( `item_id`, `user_id`, `user_name`) + VALUES + <foreach collection="users" item="item" separator=","> + ( #{item.itemId}, #{item.userId}, #{item.userName} ) + </foreach> + + </insert> + <delete id="deleteItemUser"> + delete from item_user where item_id =#{id} + </delete> + + + <select id="selectItemList" resultType="com.gkhy.exam.system.domain.Item"> + SELECT + `id`, + `company_id`, + `item_name`, + `del_flag`, + `create_by`, + `create_time`, + `update_by`, + `update_time` + FROM + `item` + where del_flag = 1 + <if test="companyId!=null"> + and company_id = #{companyId} + </if> + </select> + <select id="selectItemListAll" resultType="com.gkhy.exam.system.domain.Item"> + SELECT + i.`id`, + i.`company_id`, + i.`item_name`, + i.`del_flag`, + i.`create_by`, + i.`create_time`, + i.`update_by`, + i.`update_time` + FROM + `item` i + LEFT JOIN item_user iu ON i.id = iu.item_id + WHERE + i.del_flag = 1 + <if test="companyId!=null"> + and i.company_id = #{companyId} + </if> + <if test="userId!=null"> + and iu.user_id = #{userId} + </if> + GROUP BY + i.id + + </select> + <select id="selectItemUser" resultType="com.gkhy.exam.system.domain.ItemUser"> + SELECT + iu.`id`, + iu.`item_id`, + iu.`user_id`, + su.`name` as user_name, + iu.`del_flag` + FROM + `item_user` iu + left join sys_user su on iu.user_id = su.id + where item_id = #{itemId} + </select> +</mapper> diff --git a/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml b/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml index ee68552..a020fd6 100644 --- a/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml +++ b/multi-system/src/main/resources/mapper/system/ProductItemMapper.xml @@ -11,6 +11,8 @@ pi.`catalogue_id`, CONCAT(c.`number`, ' ', c.`mess`) AS catalogue_name, pi.`company_id`, + pi.`item_id`, + i.item_name, sc.`name` as company_name, pi.`number`, pi.`erdact`, @@ -24,16 +26,26 @@ pi.`update_time` FROM product_item pi - LEFT JOIN sys_company sc on pi.company_id = sc.id - left join catalogue c on pi.catalogue_id = c.id + LEFT JOIN sys_company sc on pi.company_id = sc.id + left join catalogue c on pi.catalogue_id = c.id + LEFT JOIN item i ON pi.item_id = i.id + LEFT JOIN item_user iu ON i.id = iu.item_id WHERE pi.del_flag = 1 and pi.type = #{type} <if test="companyId!=null and companyId!=''"> and pi.company_id =#{companyId} </if> + <if test="userId!=null"> + and iu.user_id = #{userId} + </if> + <if test="itemId!=null"> + and pi.item_id = #{itemId} + </if> <if test="catalogueId!=null and catalogueId!=''"> and pi.catalogue_id = #{catalogueId} </if> + GROUP BY + pi.id ORDER BY pi.create_time ASC </select> -- Gitblit v1.9.2