计算机毕业设计 SpringBoot的一站式家装服务管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

news2025/1/11 10:03:06

🍊作者:计算机编程-吉哥
🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。
🍊心愿:点赞 👍 收藏 ⭐评论 📝
🍅 文末获取源码联系

👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~
Java毕业设计项目~热门选题推荐《1000套》

目录

1.技术选型

2.数据库表结构

3.开发工具

4.功能

4.1【角色】

4.2【前台功能模块】

4.3【后台功能模块】

5.项目演示截图

5.1 首页

5.2 装修风格

5.3 主材

5.4 个人中心

5.5 预算

5.6 合同

5.7 工程安排

5.8 装修风格收藏

5.9 装修风格管理

5.10 预算管理

6.数据库文件设计

7.核心代码 

7.1 工程安排Controller

7.2 工程安排Service

7.3 工程安排ServiceImpl

7.4 工程安排DAO

8.参考文档


1.技术选型

springboot、mybatisplus、vue、elementui、html、css、js、mysql、jdk1.8

2.数据库表结构

15张 

3.开发工具

idea、navicat

4.功能

4.1【角色】

管理员、用户

4.2【前台功能模块】

  • 登录注册
  • 首页
  • 装修风格
  • 主材
  • 个人中心(个人中心、预约、合同、工程安排、售后服务、装修风格收藏、主材收藏)

4.3【后台功能模块】

  • 登录
  • 首页
  • 个人中心
  • 管理员管理
  • 基础数据管理
  • 装修风格管理
  • 主材管理
  • 用户管理
  • 装修管理
  • 轮播图管理

5.项目演示截图


5.1 首页

5.2 装修风格

 

5.3 主材

 

5.4 个人中心

 

5.5 预算

 

5.6 合同

 

5.7 工程安排

 

5.8 装修风格收藏

 

5.9 装修风格管理

 

5.10 预算管理

 

6.数据库文件设计

CREATE TABLE `config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(100) DEFAULT NULL COMMENT '配置参数名称',
  `value` varchar(100) DEFAULT NULL COMMENT '配置参数值',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='配置文件';


CREATE TABLE `dictionary` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `dic_code` varchar(200) DEFAULT NULL COMMENT '字段',
  `dic_name` varchar(200) DEFAULT NULL COMMENT '字段名',
  `code_index` int(11) DEFAULT NULL COMMENT '编码',
  `index_name` varchar(200) DEFAULT NULL COMMENT '编码名字  Search111 ',
  `super_id` int(11) DEFAULT NULL COMMENT '父字段id',
  `beizhu` varchar(200) DEFAULT NULL COMMENT '备注',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=40 DEFAULT CHARSET=utf8 COMMENT='字典';


CREATE TABLE `hetong` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `hetong_uuid_number` varchar(200) DEFAULT NULL COMMENT '合同编号',
  `hetong_name` varchar(200) DEFAULT NULL COMMENT '合同名称  Search111 ',
  `hetong_file` varchar(200) DEFAULT NULL COMMENT '合同文件',
  `hetong_types` int(11) DEFAULT NULL COMMENT '合同状态 Search111',
  `hetong_huafei` decimal(10,2) DEFAULT NULL COMMENT '合同金额',
  `hetong_weiyuejin` decimal(10,2) DEFAULT NULL COMMENT '违约金',
  `hetong_content` text COMMENT '合同内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '开具时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='合同';


CREATE TABLE `shouhou` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `hetong_id` int(11) DEFAULT NULL COMMENT '合同',
  `shouhou_name` varchar(200) DEFAULT NULL COMMENT '售后服务名称  Search111 ',
  `shouhou_uuid_number` varchar(200) DEFAULT NULL COMMENT '售后服务编号',
  `shouhou_file` varchar(200) DEFAULT NULL COMMENT '售后服务附件',
  `shouhou_types` int(11) DEFAULT NULL COMMENT '服务类型 Search111',
  `fuwu_time` timestamp NULL DEFAULT NULL COMMENT '服务时间',
  `shouhou_content` text COMMENT '售后服务内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show3 listShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='售后服务';


CREATE TABLE `token` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `userid` bigint(20) NOT NULL COMMENT '学生id',
  `username` varchar(100) NOT NULL COMMENT '学生名',
  `tablename` varchar(100) DEFAULT NULL COMMENT '表名',
  `role` varchar(100) DEFAULT NULL COMMENT '角色',
  `token` varchar(200) NOT NULL COMMENT '密码',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  `expiratedtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '过期时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='token表';


CREATE TABLE `users` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(100) NOT NULL COMMENT '学生名',
  `password` varchar(100) NOT NULL COMMENT '密码',
  `role` varchar(100) DEFAULT '管理员' COMMENT '角色',
  `addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '新增时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='管理员';


CREATE TABLE `yonghu` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(200) DEFAULT NULL COMMENT '账户',
  `password` varchar(200) DEFAULT NULL COMMENT '密码',
  `yonghu_name` varchar(200) DEFAULT NULL COMMENT '用户姓名 Search111 ',
  `yonghu_phone` varchar(200) DEFAULT NULL COMMENT '用户手机号',
  `yonghu_id_number` varchar(200) DEFAULT NULL COMMENT '用户身份证号',
  `yonghu_photo` varchar(200) DEFAULT NULL COMMENT '用户头像',
  `sex_types` int(11) DEFAULT NULL COMMENT '性别',
  `fangyuan_types` int(11) DEFAULT NULL COMMENT '房源 Search111 ',
  `huxing_types` int(11) DEFAULT NULL COMMENT '户型 Search111 ',
  `yonghu_email` varchar(200) DEFAULT NULL COMMENT '用户邮箱',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用户';


CREATE TABLE `zhuangxiufengge_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `zhuangxiufengge_id` int(11) DEFAULT NULL COMMENT '装修风格',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhuangxiufengge_collection_types` int(11) DEFAULT NULL COMMENT '类型',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='装修风格收藏';


CREATE TABLE `zhuangxiufengge_liuyan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `zhuangxiufengge_id` int(11) DEFAULT NULL COMMENT '装修风格',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhuangxiufengge_liuyan_text` text COMMENT '留言内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',
  `reply_text` text COMMENT '回复内容',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='装修风格留言';


CREATE TABLE `zhucai` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键 ',
  `zhucai_name` varchar(200) DEFAULT NULL COMMENT '主材名称  Search111 ',
  `zhucai_uuid_number` varchar(200) DEFAULT NULL COMMENT '主材编号',
  `zhucai_photo` varchar(200) DEFAULT NULL COMMENT '主材照片',
  `zhucai_danwei` varchar(200) DEFAULT NULL COMMENT '单位',
  `zhucai_shengchanchangjia` varchar(200) DEFAULT NULL COMMENT '生产厂家',
  `zhucai_types` int(11) DEFAULT NULL COMMENT '主材类型 Search111',
  `pinpai_types` int(11) DEFAULT NULL COMMENT '品牌 Search111 ',
  `zhucai_jiage` decimal(10,2) DEFAULT NULL COMMENT '主材价格',
  `zhucai_clicknum` int(11) DEFAULT NULL COMMENT '主材热度',
  `zhucai_content` text COMMENT '主材详情',
  `shangxia_types` int(11) DEFAULT NULL COMMENT '是否上架 ',
  `zhucai_delete` int(11) DEFAULT NULL COMMENT '逻辑删除',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '录入时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间  show1 show2 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='主材';

CREATE TABLE `zhucai_collection` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `zhucai_id` int(11) DEFAULT NULL COMMENT '主材',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhucai_collection_types` int(11) DEFAULT NULL COMMENT '类型',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '收藏时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间 show3 photoShow',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='主材收藏';


CREATE TABLE `zhucai_liuyan` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `zhucai_id` int(11) DEFAULT NULL COMMENT '主材',
  `yonghu_id` int(11) DEFAULT NULL COMMENT '用户',
  `zhucai_liuyan_text` text COMMENT '留言内容',
  `insert_time` timestamp NULL DEFAULT NULL COMMENT '留言时间',
  `reply_text` text COMMENT '回复内容',
  `update_time` timestamp NULL DEFAULT NULL COMMENT '回复时间',
  `create_time` timestamp NULL DEFAULT NULL COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='主材留言';

7.核心代码 

7.1 工程安排Controller


package com.controller;

/**
 * 工程安排
 * 后端接口
 * @author 计算机编程-吉哥
 * @email
*/
@RestController
@Controller
@RequestMapping("/gongchenganpai")
public class GongchenganpaiController {
    private static final Logger logger = LoggerFactory.getLogger(GongchenganpaiController.class);

    private static final String TABLE_NAME = "gongchenganpai";

    @Autowired
    private GongchenganpaiService gongchenganpaiService;


    @Autowired
    private TokenService tokenService;

    @Autowired
    private DictionaryService dictionaryService;//字典
    @Autowired
    private HetongService hetongService;//合同
    @Autowired
    private ShouhouService shouhouService;//售后服务
    @Autowired
    private YonghuService yonghuService;//用户
    @Autowired
    private YusuanService yusuanService;//预算
    @Autowired
    private ZhuangxiufenggeService zhuangxiufenggeService;//装修风格
    @Autowired
    private ZhuangxiufenggeCollectionService zhuangxiufenggeCollectionService;//装修风格收藏
    @Autowired
    private ZhuangxiufenggeLiuyanService zhuangxiufenggeLiuyanService;//装修风格留言
    @Autowired
    private ZhucaiService zhucaiService;//主材
    @Autowired
    private ZhucaiCollectionService zhucaiCollectionService;//主材收藏
    @Autowired
    private ZhucaiLiuyanService zhucaiLiuyanService;//主材留言
    @Autowired
    private UsersService usersService;//管理员


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        CommonUtil.checkMap(params);
        PageUtils page = gongchenganpaiService.queryPage(params);

        //字典表数据转换
        List<GongchenganpaiView> list =(List<GongchenganpaiView>)page.getList();
        for(GongchenganpaiView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        GongchenganpaiEntity gongchenganpai = gongchenganpaiService.selectById(id);
        if(gongchenganpai !=null){
            //entity转view
            GongchenganpaiView view = new GongchenganpaiView();
            BeanUtils.copyProperties( gongchenganpai , view );//把实体数据重构到view中
            //级联表 用户
            //级联表
            YonghuEntity yonghu = yonghuService.selectById(gongchenganpai.getYonghuId());
            if(yonghu != null){
            BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setYonghuId(yonghu.getId());
            }
            //级联表 合同
            //级联表
            HetongEntity hetong = hetongService.selectById(gongchenganpai.getHetongId());
            if(hetong != null){
            BeanUtils.copyProperties( hetong , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表
            view.setHetongId(hetong.getId());
            }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody GongchenganpaiEntity gongchenganpai, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,gongchenganpai:{}",this.getClass().getName(),gongchenganpai.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            gongchenganpai.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<GongchenganpaiEntity> queryWrapper = new EntityWrapper<GongchenganpaiEntity>()
            .eq("yonghu_id", gongchenganpai.getYonghuId())
            .eq("hetong_id", gongchenganpai.getHetongId())
            .eq("gongchenganpai_name", gongchenganpai.getGongchenganpaiName())
            .eq("gongchenganpai_fuzeren", gongchenganpai.getGongchenganpaiFuzeren())
            .eq("gongchenganpai_lianxifangshi", gongchenganpai.getGongchenganpaiLianxifangshi())
            .eq("gongchenganpai_types", gongchenganpai.getGongchenganpaiTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        GongchenganpaiEntity gongchenganpaiEntity = gongchenganpaiService.selectOne(queryWrapper);
        if(gongchenganpaiEntity==null){
            gongchenganpai.setGongchenganpaiTypes(1);
            gongchenganpai.setInsertTime(new Date());
            gongchenganpai.setCreateTime(new Date());
            gongchenganpaiService.insert(gongchenganpai);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody GongchenganpaiEntity gongchenganpai, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {
        logger.debug("update方法:,,Controller:{},,gongchenganpai:{}",this.getClass().getName(),gongchenganpai.toString());
        GongchenganpaiEntity oldGongchenganpaiEntity = gongchenganpaiService.selectById(gongchenganpai.getId());//查询原先数据

        String role = String.valueOf(request.getSession().getAttribute("role"));
gongchenganpai.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        if("".equals(gongchenganpai.getGongchenganpaiFile()) || "null".equals(gongchenganpai.getGongchenganpaiFile())){
                gongchenganpai.setGongchenganpaiFile(null);
        }

            gongchenganpaiService.updateById(gongchenganpai);//根据id更新
            return R.ok();
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids, HttpServletRequest request){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        List<GongchenganpaiEntity> oldGongchenganpaiList =gongchenganpaiService.selectBatchIds(Arrays.asList(ids));//要删除的数据
        gongchenganpaiService.deleteBatchIds(Arrays.asList(ids));

        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<GongchenganpaiEntity> gongchenganpaiList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("static/upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            GongchenganpaiEntity gongchenganpaiEntity = new GongchenganpaiEntity();
                            gongchenganpaiList.add(gongchenganpaiEntity);

                            //把要查询是否重复的字段放入map中
                                //工程安排编号
                                if(seachFields.containsKey("gongchenganpaiUuidNumber")){
                                    List<String> gongchenganpaiUuidNumber = seachFields.get("gongchenganpaiUuidNumber");
                                    gongchenganpaiUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> gongchenganpaiUuidNumber = new ArrayList<>();
                                    gongchenganpaiUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("gongchenganpaiUuidNumber",gongchenganpaiUuidNumber);
                                }
                        }

                        //查询是否重复
                         //工程安排编号
                        List<GongchenganpaiEntity> gongchenganpaiEntities_gongchenganpaiUuidNumber = gongchenganpaiService.selectList(new EntityWrapper<GongchenganpaiEntity>().in("gongchenganpai_uuid_number", seachFields.get("gongchenganpaiUuidNumber")));
                        if(gongchenganpaiEntities_gongchenganpaiUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(GongchenganpaiEntity s:gongchenganpaiEntities_gongchenganpaiUuidNumber){
                                repeatFields.add(s.getGongchenganpaiUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [工程安排编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        gongchenganpaiService.insertBatch(gongchenganpaiList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }




    /**
    * 前端列表
    */
    @IgnoreAuth
    @RequestMapping("/list")
    public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));

        CommonUtil.checkMap(params);
        PageUtils page = gongchenganpaiService.queryPage(params);

        //字典表数据转换
        List<GongchenganpaiView> list =(List<GongchenganpaiView>)page.getList();
        for(GongchenganpaiView c:list)
            dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段

        return R.ok().put("data", page);
    }

    /**
    * 前端详情
    */
    @RequestMapping("/detail/{id}")
    public R detail(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("detail方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        GongchenganpaiEntity gongchenganpai = gongchenganpaiService.selectById(id);
            if(gongchenganpai !=null){


                //entity转view
                GongchenganpaiView view = new GongchenganpaiView();
                BeanUtils.copyProperties( gongchenganpai , view );//把实体数据重构到view中

                //级联表
                    YonghuEntity yonghu = yonghuService.selectById(gongchenganpai.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //级联表
                    HetongEntity hetong = hetongService.selectById(gongchenganpai.getHetongId());
                if(hetong != null){
                    BeanUtils.copyProperties( hetong , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setHetongId(hetong.getId());
                }
                //修改对应字典表字段
                dictionaryService.dictionaryConvert(view, request);
                return R.ok().put("data", view);
            }else {
                return R.error(511,"查不到数据");
            }
    }


    /**
    * 前端保存
    */
    @RequestMapping("/add")
    public R add(@RequestBody GongchenganpaiEntity gongchenganpai, HttpServletRequest request){
        logger.debug("add方法:,,Controller:{},,gongchenganpai:{}",this.getClass().getName(),gongchenganpai.toString());
        Wrapper<GongchenganpaiEntity> queryWrapper = new EntityWrapper<GongchenganpaiEntity>()
            .eq("yonghu_id", gongchenganpai.getYonghuId())
            .eq("hetong_id", gongchenganpai.getHetongId())
            .eq("gongchenganpai_uuid_number", gongchenganpai.getGongchenganpaiUuidNumber())
            .eq("gongchenganpai_name", gongchenganpai.getGongchenganpaiName())
            .eq("gongchenganpai_fuzeren", gongchenganpai.getGongchenganpaiFuzeren())
            .eq("gongchenganpai_lianxifangshi", gongchenganpai.getGongchenganpaiLianxifangshi())
            .eq("gongchenganpai_types", gongchenganpai.getGongchenganpaiTypes())
//            .notIn("gongchenganpai_types", new Integer[]{102})
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        GongchenganpaiEntity gongchenganpaiEntity = gongchenganpaiService.selectOne(queryWrapper);
        if(gongchenganpaiEntity==null){
            gongchenganpai.setInsertTime(new Date());
            gongchenganpai.setCreateTime(new Date());
        gongchenganpaiService.insert(gongchenganpai);

            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

}

7.2 工程安排Service

package com.service;
/**
 * 工程安排 服务类
 * author 计算机编程-吉哥
 */
public interface GongchenganpaiService extends IService<GongchenganpaiEntity> {

    /**
    * @param params 查询参数
    * @return 带分页的查询出来的数据
    */
     PageUtils queryPage(Map<String, Object> params);

}

7.3 工程安排ServiceImpl

package com.service.impl;

/**
 * 工程安排 服务实现类
 * author 计算机编程-吉哥
 */
@Service("gongchenganpaiService")
@Transactional
public class GongchenganpaiServiceImpl extends ServiceImpl<GongchenganpaiDao, GongchenganpaiEntity> implements GongchenganpaiService {

    @Override
    public PageUtils queryPage(Map<String,Object> params) {
        Page<GongchenganpaiView> page =new Query<GongchenganpaiView>(params).getPage();
        page.setRecords(baseMapper.selectListView(page,params));
        return new PageUtils(page);
    }


}

7.4 工程安排DAO

package com.dao;

/**
 * 工程安排 Dao 接口
 *
 * @author 计算机编程-吉哥
 */
public interface GongchenganpaiDao extends BaseMapper<GongchenganpaiEntity> {

   List<GongchenganpaiView> selectListView(Pagination page,@Param("params")Map<String,Object> params);

}

8.参考文档

 

你可能还有感兴趣的项目👇🏻👇🏻👇🏻

更多项目推荐:计算机毕业设计项目

如果大家有任何疑虑,请在下方咨询或评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1361932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kubernetes】认证授权RBAC (一)

认证授权RBAC 一、k8s安全管理&#xff1a;认证、授权、准入控制概述1.1、简介【1】认证基本介绍【2】授权基本介绍【3】准入控制基本介绍 1.2、认证【1】客户端认证【2】Bearertoken【3】Serviceaccount【4】拓展&#xff1a;kubeconfig文件 1.3、授权【1】什么是RBAC&#xf…

8、VS中Git使用

VS中Git使用 1.基础操作1.1 VS配置Git1.2 操作界面 2.本地库版本管理2.1 创建管理本地库2.2 暂存、存储2.3 提交2.4 版本切换 3.分支操作3.1 分支应用3.2 新建分支3.3 合并分支、解决冲突3.4 删除分支 4.远程库版本管理4.1 新建、克隆4.2 提取、拉取、推送与同步4.3 团队开发 最…

每日一题——LeetCode1051.高度检查器

方法一 sort排序&#xff1a; 创建一个元素和heights一模一样的expect数组 &#xff0c;将expect数组从小到大进行排序&#xff0c;比较heights和expect相同位置不同的元素个数 var heightChecker function(heights) {var expect [],count0for(const n of heights){expect.…

Ubuntu 安装Nginx服务

文章目录 前言一、Nginx安装1. Nginx默认安装2. Nginx指定版本安装3. Nginx验证4. Nginx服务控制4.1 查看服务状态4.2 停止服务4.3 启动服务4.4 重启服务 5. Nginx文件存放目录 二、自己编译Nginx1. 下载源码2. 依赖配置3. 编译 三、Nginx卸载总结 前言 Nginx&#xff08;发音为…

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解

时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解 目录 时序分解 | Matlab实现CPO-VMD基于冠豪猪优化算法(CPO)优化VMD变分模态分解时间序列信号分解效果一览基本介绍程序设计参考资料 效果一览 基本介绍 【原创】CPO-VMD【24年新算法…

LeetCode做题总结 15. 三数之和、18. 四数之和 (Java)

不会做&#xff0c;参考了代码随想录和力扣官方题解&#xff0c;对此题进行整理。 X数之和 15. 三数之和代码思路20240103重写错误1错误2Java语言点总结 18. 四数之和代码思路20240104&#xff08;伪&#xff09;错误1 第一次剪枝错误2 第二次剪枝错误3 溢出 15. 三数之和 代码…

python中parsel模块的css解析

一、爬虫页面分类 1.想要爬取的内容全部在标签中&#xff0c;可以使用xpath去进行解析如下图 2.想要爬取的内容呈现json的数据特征&#xff0c;用.json()转换为字典格式 3.页面不规则&#xff0c;标签中包含大括号&#xff0c;如下面想要获取键值内容怎么做&#xff0c;先用re正…

Hive学习(13)lag和lead函数取偏移量

hive里面lag函数 在数据处理和分析中&#xff0c;窗口函数是一种重要的技术&#xff0c;用于在数据集中执行聚合和分析操作。Hive作为一种大数据处理框架&#xff0c;也提供了窗口函数的支持。在Hive中&#xff0c;Lag函数是一种常用的窗口函数&#xff0c;可以用于计算前一行…

R 批量对多个变量进行单因素方差分析 批量计算均值±标准差

多个变量批量进行单因素方差 R实现 文章目录 一、批量生成均值标准差 P值二、添加协变量单因素方差分析&#xff0c;生成校正P值三、在分层情况下进行单因素方差分析四、添加协变量和交互项的单因素方差分析&#xff0c;生成交互项的P值 一、批量生成均值标准差 P值 数据结构如…

设计模式之单例模式的懒饿汉

懒汉式 说白了就是你不叫我我不动&#xff0c;你叫我我才动。 类初始化模式&#xff0c;也叫延迟占位模式。在单例类的内部由一个私有静态内部类来持有这个单例类的实例。因为在 JVM 中&#xff0c;对类的加载和类初始化&#xff0c;由虚拟机保证线程安全。 public class Singl…

【Proteus仿真】【Arduino单片机】水箱液位监控系统

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器&#xff0c;使用LCD1602液晶、按键、蜂鸣器、液位传感器、ADC转换器、水泵等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示当前水位、上下限阈…

支持 input 函数的在线 python 运行环境 - 基于队列

支持 input 函数的在线 python 运行环境 - 基于队列 思路两次用户输入三次用户输入 实现前端使用 vue element uiWindows 环境的执行器子进程需要执行的代码 代码仓库参考 本文提供了一种方式来实现支持 input 函数&#xff0c;即支持用户输的在线 python 运行环境。效果如下图…

[NAND Flash 5.2] SLC、MLC、TLC、QLC、PLC NAND_闪存颗粒类型

依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解NAND Flash》 <<<< 返回总目录 <<<< 前言 闪存最小物理单位是 Cell, 一个Cell 是一个晶体管。 闪存是通过晶体管储存电子来表示信息的。在晶体管上加入了浮动栅贮存电子…

网络调试 TCP,开发板用静态地址-入门7

用两台电脑&#xff08;无线网络&#xff09;做实验 1.1, 在电脑A上设置为Server如下&#xff1a; 选择TCP Server后&#xff0c;直接跳出用本机IP做为“本地主机地址” 1.2在 电脑B上设置为Client, 远程主机地址设置为Server的 IP 1.3, 在A, B两台电脑上能够互相发送数据 用…

Pyinstaller 打包的文件过大,根本原因在于包含了无用的依赖文件

环境要求&#xff1a;Windows&#xff0c;Pyinstaller 6.3.0 (不是这个版本的话&#xff0c;请逐步校对以下我在运行过程中的截图) 本文所使用代码不开源&#xff0c;觉得本文的思路可行的话&#xff0c;请加 QQ - 1398173074 购买 (&#xffe5;30&#xff0c;注明来意)&…

算力-计算量,关于TOPS和FLOPS,及FLOPs

目录 一、易混淆的三个点 二、芯片算力单位详解 四、模型算力单位详解 五、算力单位量级变换 六、计算机存储单位换算 七、科学计算单位换算 一、易混淆的三个点 关于TOPS和FLOPS&#xff0c;及FLOPs&#xff0c;这里有3个易混淆的点。 1、最大的混淆点&#xff0c…

MybatisPlus—快速入门

目录 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 1.2 定义Mapper 2.MybatisPlus常用注解 2.1 TableName 2.2 TableId 2.3 TableField 2.4 小结 3. 常用配置 4. 总结 1.使用MybatisPlus的基本步骤 1.1引入MybatisPlus的起步依赖 MyBatisPlus官方提…

(04)刻蚀——选择刻蚀材料创建所需图形

01、光“堆叠”可不行 前期我们了解了如何制作“饼干模具”。本期,我们就来讲讲如何采用这个“饼干模具”印出我们想要的“饼干”。这一步骤的重点,在于如何移除不需要的材料,即“刻蚀(Etching)工艺”。 ▲ 图1: 移除饼干中间部分,再倒入巧克力糖浆 让我们再来回想一下…

im6ull学习总结(三-3)freetype

1、Freetype简介 FreeType是一个开源的字体渲染引擎&#xff0c;主要用于将字体文件转换为位图或矢量图形&#xff0c;并在屏幕上渲染出高质量的字体。它提供了一组API&#xff0c;使开发者能够在自己的应用程序中使用和呈现字体。 FreeType最初是作为一个独立项目开发的&…

基于X86的助力智慧船载监控系统

船载综合监控系统结合雷达、AIS、CCTV、GPS等探测技术&#xff0c;以及高度融合的实时态势与认知技术&#xff0c;实现对本船以及范围内船舶的有效监控&#xff0c;延伸岸基监控中心监管范围&#xff0c;保障行船安全&#xff0c;为船舶安全管理部门实现岸基可控的数据通信和动…