传智健康项目-----------第二章 检查组的增删改查

一.新增检查组

1.页面:(1)首先点击 新增按钮  弹出新增列表窗口   然后发送ajax请求  查询所有检查项的信息用于列表展示

//发送ajax请求查询所有检查项信息
axios.get("/checkitem/findAll.do").then((res)=> {
if(res.data.flag){
//将检查项列表数据赋值给模型数据用于页面表格展示
this.tableData = res.data.data;
}else{
this.$message.error(res.data.message);
}
});

(2)当点击确认按钮 调用 handAdd()方法 进行操作

//添加
handleAdd () {
//发送ajax请求将模型数据提交到后台处理
axios.post(
"/checkgroup/add.do?checkitemIds=" + this.checkitemIds,
this.formData
)
.then((response)=> {
//关闭新增窗口
this.dialogFormVisible = false;
if(response.data.flag){
//新增成功,弹出成功提示
this.$message({
message: response.data.message,
type: 'success'
});
}else{
//新增失败,弹出错误提示
this.$message.error(response.data.message);
}
}).finally(()=> {
this.findPage();
});
}

2.后台代码

(1)Controller层:

   

/**
* 检查组管理
*/
@RestController
@RequestMapping("/checkgroup")
public class CheckGroupController {
@Reference
private CheckGroupService checkGroupService;
//新增
@RequestMapping("/add")
public Result add(@RequestBody CheckGroup checkGroup,Integer[] checkitemIds)
{
try {
checkGroupService.add(checkGroup,checkitemIds);
}catch (Exception e){
//新增失败
return new Result(false, MessageConstant.ADD_CHECKGROUP_FAIL);
}
//新增成功
return new Result(true,MessageConstant.ADD_CHECKGROUP_SUCCESS);
}
}

(2)Service层:

/**
* 检查组服务接口
*/
public interface CheckGroupService {
void add(CheckGroup checkGroup,Integer[] checkitemIds);
}

(3)服务实现类:

/**
* 检查组服务
*/
@Service(interfaceClass = CheckGroupService.class)
@Transactional
public class CheckGroupServiceImpl implements CheckGroupService {
@Autowired
private CheckGroupDao checkGroupDao;
//添加检查组合,同时需要设置检查组合和检查项的关联关系
public void add(CheckGroup checkGroup, Integer[] checkitemIds) {
checkGroupDao.add(checkGroup);
setCheckGroupAndCheckItem(checkGroup.getId(),checkitemIds);
}
//设置检查组合和检查项的关联关系
public void setCheckGroupAndCheckItem(Integer checkGroupId,Integer[]
checkitemIds){
if(checkitemIds != null && checkitemIds.length > 0){
for (Integer checkitemId : checkitemIds) {
Map<String,Integer> map = new HashMap<>();
map.put("checkgroup_id",checkGroupId);
map.put("checkitem_id",checkitemId);
checkGroupDao.setCheckGroupAndCheckItem(map);
}
}
}
}

(4)Dao接口

/**
* 持久层Dao接口
*/
public interface CheckGroupDao {
void add(CheckGroup checkGroup);
void setCheckGroupAndCheckItem(Map map);
}

(5)Mapper映射文件

<?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.itheima.dao.CheckGroupDao">
<!--新增-->
<insert id="add" parameterType="com.itheima.pojo.CheckGroup">
<selectKey resultType="java.lang.Integer" order="AFTER"
keyProperty="id">
SELECT LAST_INSERT_ID()
</selectKey>
insert into t_checkgroup(code,name,sex,helpCode,remark,attention)
values
(#{code},#{name},#{sex},#{helpCode},#{remark},#{attention})
</insert>
<!--设置检查组和检查项的关联关系-->
<insert id="setCheckGroupAndCheckItem" parameterType="hashmap">
insert into t_checkgroup_checkitem(checkgroup_id,checkitem_id)
values
(#{checkgroup_id},#{checkitem_id})
</insert>
</mapper>

二.编辑检查组

  • 1)完善页面 回显数据 此处一共发送三次ajax请求
  • 第一次 通过id 查询所有检查组 用于基本信息回显 
  • 第二次 查询所有检查项的数据 用于检查项数据展示
  • 第三次 根据检查组的id 查询 所关联的检查项的id 用于所选中的检查项数据回显
  • handleUpdate(row) {
    //发送ajax请求根据id查询检查组信息,用于基本信息回显
    axios.get("/checkgroup/findById.do?id=" + row.id).then((res)=>{
    if(res.data.flag){
    //弹出编辑窗口
    this.dialogFormVisible4Edit = true;
    //默认选中第一个标签页
    this.activeName='first';
    //为模型数据赋值,通过VUE数据双向绑定进行信息的回显
    this.formData = res.data.data;
    //发送ajax请求查询所有的检查项信息,用于检查项表格展示
    axios.get("/checkitem/findAll.do").then((res)=> {
    if(res.data.flag){
    //为模型数据赋值,通过VUE数据双向绑定进行信息的回显
    this.tableData = res.data.data;
    //查询当前检查组包含的所有检查项id,用于页面回显
    axios.get("/checkgroup/findCheckItemIdsByCheckGroupId.do?id=" +
    row.id).then((res)=> {
    //为模型数据赋值,通过VUE数据双向绑定进行信息的回显
    if(res.data.flag){
    this.checkitemIds = res.data.data;
    }else{
    this.$message.error(res.data.message);
    }
    });
    }else{
    this.$message.error(res.data.message);
    }
    });
    }else{
    this.$message.error("获取数据失败,请刷新当前页面");
    }
    });
    }
    

    2.当点击确认按钮时  调用edit方法  发送ajax请求 用于提交模型数据

  • //编辑
    handleEdit() {
    //发送ajax请求,提交模型数据
    axios.post("/checkgroup/edit.do?
    checkitemIds="+this.checkitemIds,this.formData).
    then((response)=> {
    //隐藏编辑窗口
    this.dialogFormVisible4Edit = false;
    if(response.data.flag){
    this.$message({
    message: response.data.message,
    type: 'success'
    });
    }else{
    this.$message.error(response.data.message);
    }
    }).finally(()=> {
    this.findPage();
    });
    }
    

    (3)后台代码

1.Controller层:

//根据id查询检查组
    @GetMapping("/findById")
    public Result findById(Integer id){
        try {
            CheckGroup checkGroup = checkGroupService.findById(id);
            //查询成功
            return new Result(true,MessageConstant.QUERY_CHECKGROUP_SUCCESS,checkGroup);
        }catch (Exception e){
            e.printStackTrace();
            //查询失败
            return new Result(false,MessageConstant.QUERY_CHECKGROUP_FAIL);
        }
    }

    //根据检查组id 查询包含的多个检查项id
    @GetMapping("/findCheckItemIdsByCheckGroupId")
    public Result findCheckItemIdsByCheckGroupId(Integer id){
        try {
            List<Integer> checkitemIds = checkGroupService.findCheckItemIdsByCheckGroupId(id);
            //查询成功
            return new Result(true,MessageConstant.QUERY_CHECKITEM_SUCCESS,checkitemIds);
        }catch (Exception e){
            e.printStackTrace();
            //查询失败
            return new Result(false,MessageConstant.QUERY_CHECKITEM_FAIL);
        }
    }

    //编辑检查组
    @PostMapping("/edit")
    public Result edit(@RequestBody CheckGroup checkGroup, Integer[] checkitemIds){
        try {
            checkGroupService.edit(checkGroup,checkitemIds);
        }catch (Exception e){
            e.printStackTrace();
            //修改失败
            return new Result(false,MessageConstant.EDIT_CHECKGROUP_FAIL);
        }
        return new Result(true,MessageConstant.EDIT_CHECKGROUP_SUCCESS);//新增成功
    }

2.Service层:

CheckGroup findById(Integer id);
List<Integer> findCheckItemIdsByCheckGroupId(Integer id);
public void edit(CheckGroup checkGroup,Integer[] checkitemIds);

3.服务实现类:

public CheckGroup findById(Integer id) {
return checkGroupDao.findById(id);
}
public List<Integer> findCheckItemIdsByCheckGroupId(Integer id) {
return checkGroupDao.findCheckItemIdsByCheckGroupId(id);
}
//编辑检查组,同时需要更新和检查项的关联关系
public void edit(CheckGroup checkGroup, Integer[] checkitemIds) {
//根据检查组id删除中间表数据(清理原有关联关系)
checkGroupDao.deleteAssociation(checkGroup.getId());
//向中间表(t_checkgroup_checkitem)插入数据(建立检查组和检查项关联关系)
setCheckGroupAndCheckItem(checkGroup.getId(),checkitemIds);
//更新检查组基本信息
checkGroupDao.edit(checkGroup);
}
//向中间表(t_checkgroup_checkitem)插入数据(建立检查组和检查项关联关系)
public void setCheckGroupAndCheckItem(Integer checkGroupId,Integer[]
checkitemIds){
if(checkitemIds != null && checkitemIds.length > 0){
for (Integer checkitemId : checkitemIds) {
Map<String,Integer> map = new HashMap<>();
map.put("checkgroup_id",checkGroupId);
map.put("checkitem_id",checkitemId);
checkGroupDao.setCheckGroupAndCheckItem(map);
}
}

4.Dao接口:

CheckGroup findById(Integer id);
List<Integer> findCheckItemIdsByCheckGroupId(Integer id);
void setCheckGroupAndCheckItem(Map map);
void deleteAssociation(Integer id);
void edit(CheckGroup checkGroup);

5.Mapper映射文件:

<select id="findById" parameterType="int"
resultType="com.itheima.pojo.CheckGroup">
select * from t_checkgroup where id = #{id}
</select>
<select id="findCheckItemIdsByCheckGroupId" parameterType="int"
resultType="int">
select checkitem_id from t_checkgroup_checkitem where checkgroup_id = #{id}
</select>
<!--向中间表插入数据(建立检查组和检查项关联关系)-->
<insert id="setCheckGroupAndCheckItem" parameterType="hashmap">
insert into t_checkgroup_checkitem(checkgroup_id,checkitem_id)
values
(#{checkgroup_id},#{checkitem_id})
</insert>
<!--根据检查组id删除中间表数据(清理原有关联关系)-->
<delete id="deleteAssociation" parameterType="int">
delete from t_checkgroup_checkitem where checkgroup_id = #{id}
</delete>
<!--编辑-->
<update id="edit" parameterType="com.itheima.pojo.CheckGroup">
update t_checkgroup
<set>
<if test="name != null">
name = #{name},
</if>
<if test="sex != null">
sex = #{sex},
</if>
<if test="code != null">
code = #{code},
</if>
<if test="helpCode != null">
helpCode = #{helpCode},
</if>
<if test="attention != null">
attention = #{attention},
</if>
<if test="remark != null">
remark = #{remark},
</if>
</set>
where id = #{id}
</update>

三.删除检查组

1.页面 

 handleDelete(row) {
               //alert(row.id);
                this.$confirm( "您确定要删除当前数据吗" ,"提示" , {//确认框
                    type: 'warning'
                }).then(()=>{
                    //用户点击了确定按钮  发送ajax请求 将检查项id 提交到Controller进行处理
                    axios.delete("/checkgroup/delete.do?id="+row.id).then((res)=>{
                        if(res.data.flag){
                            //执行成功
                            //弹出提示成功消息
                            this.$message({
                                type:'success',
                                message:res.data.message
                            });
                            //重新查询
                            this.findPage();
                        }else{
                            //执行失败
                            this.$message.error(res.data.message);
                        }
                    }).catch((res)=>{
                        this.showMessage(res);
                    });
                }).catch(()=>{
                    this.$message({
                        type:'info',
                        message:'操作已取消'
                    });
                })

2.后台代码

(1)Controller层:

 /*
    * 删除检查组
    * */
    @DeleteMapping("/delete")
    public Result delete(Integer id){
        try {
            checkGroupService.deleteById(id);
            return new Result(true,MessageConstant.DELETE_CHECKGROUP_SUCCESS);
        } catch (Exception e) {
            e.printStackTrace();
            return new Result(false,MessageConstant.DELETE_CHECKGROUP_FAIL);
        }
    }

(2)Service层:

    //根据id 删除检查组
    public void deleteById(Integer id);

(3)服务实现类:

  

@Override
    //根据id删除检查组 并删除检查项与 检查组之间的多对多关系操作t_check_group_check_item表
    public void deleteById(Integer id) {

        //2.根据id 删除检查项与检查组之间的多对多关系表
        checkGroupDao.deleteAssocication(id);
        //1.根据id 删除检查组的信息
        checkGroupDao.deleteById(id);
    }

(4)Dao接口:

//根据检查组id 删除检查组信息
public void deleteById(Integer id);
 //根据检查组id删除检查组与检查项对应的关系
 public void deleteAssocication(Integer id);

(5).Mapper映射文件:

<!--   根据检查组id 清理关联的检查项信息 操作中间关系表t_checkgroup_checkitem-->
    <delete id="deleteAssocication" parameterType="int">
        delete from t_checkgroup_checkitem
         where checkgroup_id = #{id}
    </delete>
<!--    根据id 删除检查组信息-->
    <delete id="deleteById">
        delete from t_checkgroup
        where id = #{id}
    </delete>

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值