一.新增检查组
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>