ssm化妆品配方及工艺管理系统源码和论文

news2024/12/24 8:16:26

ssm化妆品配方及工艺管理系统源码和论文083

 开发工具:idea 
 数据库mysql5.7+
 数据库链接工具:navcat,小海豚等
  技术:ssm

    1. 课题的目的和意义

进入21世纪后我国的经济增长在全球脱颖而出,人们的生活质量也在不断地提高,从而带来化妆品行业的高速发展,美妆行业的研发更新速度迫切需要开发化妆品配方及工艺管理系统,然而传统的纯手工或简单的计算工具,已经不适应现代经济高速发展和信息快速增长的要求,因此必须运用现代化管理手段,配备完善的自动化设备,采用全新的计算机软件管理系统,来提高化妆品配方及工艺的研发水平与质量,最大限度地发挥准确、快捷、高效等作用,从而获得好效益。化妆品企业需要应对多元化市场需求的变化,需要更系统地对繁多的配方版本进行管理,以及需要多部门的良好协作,因此需要一个信息化的系统协助企业达到更高层次的配方以及工艺管理;其次,根据系统中的化妆品配方及工艺的数据,可以对化妆品制作的整体过程进行风险评估;随着科学技术和检验水平的不断提高,化妆品原料中的风险物质逐渐被识别出来,企业对化妆品原料风险物质评估也处于不断更新的状态,这样可以持续监控风险,并分析化妆品原料风险物质带来的风险等级,并对风险进行分级管控,预防化妆品开发上市后的风险发生,同时可以对已上市的化妆品的做好风险预判,设定相应的应对处理预案。

最后,化妆品配方及工艺管理系统,避免了研发过程中数据散乱,难以追溯,掌控困难的问题,由系统进行原料,需求,配方,报价的统一管理,系统化地进行流程控制和数据管理。系统不仅可以快速计算配方的各项数据,也可以按规范生成导出成各类文档,节约研发时间,提高合规性,和数据计算结果的准确性。

建立配方系统后,可避免由于人员流动造成知识成果流失,同时系统具备严格的权限和加密机制,确保知识成果不被外泄和非法访问。大大降低了人力管理成本,也大大增加了生产的安全性,可靠性,同时也增强了消费者对化妆品企业的信任感;

 

package com.controller;


import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.HuazhuangpinEntity;

import com.service.HuazhuangpinService;
import com.entity.view.HuazhuangpinView;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 化妆品
 * 后端接口
 * @author
 * @email
 * @date 2021-03-25
*/
@RestController
@Controller
@RequestMapping("/huazhuangpin")
public class HuazhuangpinController {
    private static final Logger logger = LoggerFactory.getLogger(HuazhuangpinController.class);

    @Autowired
    private HuazhuangpinService huazhuangpinService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;


    //级联表service


    /**
    * 后端列表
    */
    @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(StringUtil.isNotEmpty(role) && "用户".equals(role)){
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        }
        PageUtils page = huazhuangpinService.queryPage(params);

        //字典表数据转换
        List<HuazhuangpinView> list =(List<HuazhuangpinView>)page.getList();
        for(HuazhuangpinView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        HuazhuangpinEntity huazhuangpin = huazhuangpinService.selectById(id);
        if(huazhuangpin !=null){
            //entity转view
            HuazhuangpinView view = new HuazhuangpinView();
            BeanUtils.copyProperties( huazhuangpin , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody HuazhuangpinEntity huazhuangpin, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,huazhuangpin:{}",this.getClass().getName(),huazhuangpin.toString());
        Wrapper<HuazhuangpinEntity> queryWrapper = new EntityWrapper<HuazhuangpinEntity>()
            .eq("kzpname", huazhuangpin.getKzpname())
            .eq("pinpai_types", huazhuangpin.getPinpaiTypes())
            .eq("leixing_types", huazhuangpin.getLeixingTypes())
            .eq("gongyi_types", huazhuangpin.getGongyiTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        HuazhuangpinEntity huazhuangpinEntity = huazhuangpinService.selectOne(queryWrapper);
        if(huazhuangpinEntity==null){
            huazhuangpin.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      huazhuangpin.set
        //  }
            huazhuangpinService.insert(huazhuangpin);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody HuazhuangpinEntity huazhuangpin, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,huazhuangpin:{}",this.getClass().getName(),huazhuangpin.toString());
        //根据字段查询是否有相同数据
        Wrapper<HuazhuangpinEntity> queryWrapper = new EntityWrapper<HuazhuangpinEntity>()
            .notIn("id",huazhuangpin.getId())
            .andNew()
            .eq("kzpname", huazhuangpin.getKzpname())
            .eq("pinpai_types", huazhuangpin.getPinpaiTypes())
            .eq("leixing_types", huazhuangpin.getLeixingTypes())
            .eq("gongyi_types", huazhuangpin.getGongyiTypes())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        HuazhuangpinEntity huazhuangpinEntity = huazhuangpinService.selectOne(queryWrapper);
        if("".equals(huazhuangpin.getImgPhoto()) || "null".equals(huazhuangpin.getImgPhoto())){
                huazhuangpin.setImgPhoto(null);
        }
        if(huazhuangpinEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      huazhuangpin.set
            //  }
            huazhuangpinService.updateById(huazhuangpin);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        huazhuangpinService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


}

package com.controller;


import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.StringUtil;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;

import com.entity.PeifangEntity;

import com.service.PeifangService;
import com.entity.view.PeifangView;
import com.utils.PageUtils;
import com.utils.R;

/**
 * 配方
 * 后端接口
 * @author
 * @email
 * @date 2021-03-25
*/
@RestController
@Controller
@RequestMapping("/peifang")
public class PeifangController {
    private static final Logger logger = LoggerFactory.getLogger(PeifangController.class);

    @Autowired
    private PeifangService peifangService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;


    //级联表service


    /**
    * 后端列表
    */
    @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(StringUtil.isNotEmpty(role) && "用户".equals(role)){
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        }
        PageUtils page = peifangService.queryPage(params);

        //字典表数据转换
        List<PeifangView> list =(List<PeifangView>)page.getList();
        for(PeifangView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c);
        }
        return R.ok().put("data", page);
    }
    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        PeifangEntity peifang = peifangService.selectById(id);
        if(peifang !=null){
            //entity转view
            PeifangView view = new PeifangView();
            BeanUtils.copyProperties( peifang , view );//把实体数据重构到view中

            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody PeifangEntity peifang, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,peifang:{}",this.getClass().getName(),peifang.toString());
        Wrapper<PeifangEntity> queryWrapper = new EntityWrapper<PeifangEntity>()
            .eq("pfname", peifang.getPfname())
            .eq("gongyi_types", peifang.getGongyiTypes())
            .eq("shifou_types", peifang.getShifouTypes())
            .eq("peifang_content", peifang.getPeifangContent())
            .eq("xiangqing_content", peifang.getXiangqingContent())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        PeifangEntity peifangEntity = peifangService.selectOne(queryWrapper);
        if(peifangEntity==null){
            peifang.setCreateTime(new Date());
        //  String role = String.valueOf(request.getSession().getAttribute("role"));
        //  if("".equals(role)){
        //      peifang.set
        //  }
            peifangService.insert(peifang);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody PeifangEntity peifang, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,peifang:{}",this.getClass().getName(),peifang.toString());
        //根据字段查询是否有相同数据
        Wrapper<PeifangEntity> queryWrapper = new EntityWrapper<PeifangEntity>()
            .notIn("id",peifang.getId())
            .andNew()
            .eq("pfname", peifang.getPfname())
            .eq("gongyi_types", peifang.getGongyiTypes())
            .eq("shifou_types", peifang.getShifouTypes())
            .eq("peifang_content", peifang.getPeifangContent())
            .eq("xiangqing_content", peifang.getXiangqingContent())
            ;
        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        PeifangEntity peifangEntity = peifangService.selectOne(queryWrapper);
        if(peifangEntity==null){
            //  String role = String.valueOf(request.getSession().getAttribute("role"));
            //  if("".equals(role)){
            //      peifang.set
            //  }
            peifangService.updateById(peifang);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }


    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        peifangService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


}

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

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

相关文章

【Java多线程学习7】JMM(Java内存模型)学习

JMM&#xff08;Java内存模型&#xff09;学习 一、什么是Java内存模型&#xff1f; 为什么需要JMM&#xff1f; JMM&#xff08;Java内存模型&#xff09;&#xff0c;可以看作是Java定义的并发编程相关的一组规范&#xff0c;除了抽象了线程和主内存之间的关系之外&#xf…

Vulnhub系列靶机---JIS-CTF-VulnUpload-CTF01靶机

文章目录 1、网卡配置2、信息收集主机发现端口扫描目录扫描 3、漏洞探测4、漏洞利用一句话木马蚁剑 GetShellSSH连接提权 JIS文档说明 JIS-CTF-VulnUpload-CTF01靶机下载地址 该靶机有5个flag 1、网卡配置 开启靶机&#xff0c;看见加载的进度条按shift&#xff0c;看到如下界…

科普宣传片的投放渠道

科普宣传片通常以教育性和娱乐性为主导&#xff0c;力求在观众中引起兴趣和好奇心&#xff0c;以吸引他们主动学习和探索科学。它可以在电视台、网络平台、科普展览、学校教育等场合播放&#xff0c;对各个年龄段的观众都有普及科学知识的作用。接下来由深圳科普宣传片制作公司…

LeetCode——回溯篇(三)

刷题顺序及思路来源于代码随想录&#xff0c;网站地址&#xff1a;https://programmercarl.com 目录 46. 全排列 47. 全排列 II 332. 重新安排行程 51. N 皇后 37. 解数独 46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任…

uni-app实现点击显示隐藏列表,兼容微信小程序

效果&#xff1a; <view class"list-item" v-for"(item,index1) in listData" :key"index1"><view class"item-title" click"item.content.length>0?handleToggle(item,index1):"><view class"&qu…

Ansible学习笔记7

user模块&#xff1a; user模块用于管理用户账户和用户属性。 如果是windows要换一个win_user模块。 创建用户&#xff1a;present&#xff1a; [rootlocalhost ~]# ansible group1 -m user -a "nameaaa statepresent" 192.168.17.106 | CHANGED > {"ansi…

链表(详解)

一、链表 1.1、什么是链表 1、链表是物理存储单元上非连续的、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表的指针地址实现&#xff0c;有一系列结点&#xff08;地址&#xff09;组成&#xff0c;结点可动态的生成。 2、结点包括两个部分&#xff1a;&#x…

骨传导耳机有什么副作用? 骨传导耳机对身体有损伤吗

根据目前的科学研究和经验&#xff0c;骨传导耳机被认为是相对安全的使用设备&#xff0c;不会引起副作用&#xff0c;也不会对身体造成损伤&#xff0c;相比会对我们的耳朵听力起到一定的保护作用。 但是&#xff0c;个体差异和特殊情况可能会影响人们对骨传导耳机的感受与反应…

成集云 | 抖店客户静默下单催付数据同步钉钉 | 解决方案

源系统成集云目标系统 方案介绍 随着各品牌全渠道铺货&#xff0c;主播在平台上直播时客户下了订单后不能及时付款&#xff0c;第一时间客户收不到提醒&#xff0c;不仅造成了客户付款率下降&#xff0c;更大量消耗了企业的人力成本和经济。而成集云与钉钉深度合作&#xff0…

【C++实战】C++实现贪吃蛇(含源代码)—基于easyx图形库

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f340;本文前置知识&#xff1a;C基础 ♈️今日夜电波&#xff1a;toge—あよ 0:36 ━━━━━━️&#x1f49f;──────── 4:03 &a…

springboot整合jquery实现前后端数据交互

一 实施逻辑 1.1 前端 <!doctype html> <html lang"en"><head><meta charset"UTF-8"><meta name"Generator" content"EditPlus"><meta name"Author" content""><meta n…

Centos7 |Canal Admin搭建Canal Server集群|

一: 使用CanalAdmin来搭建一个canal集群 1.1 环境规划 服务名称|主机节点 机器IP 节点 备注 canal admin | docker0 192.168.1.100 192.168.1.100:8888 canal admin 机器 canal server 1 | docker1 192.168.1.101 192.168.1.100:8888 canal se…

Kafka3.0.0版本——Leader Partition自动平衡

目录 一、Leader Partition自动平衡的概述二、Leader Partition自动平衡的相关配置参数三、Leader Partition自动平衡的示例 一、Leader Partition自动平衡的概述 正常情况下&#xff0c;Kafka本身会自动把Leader Partition均匀分散在各个机器上&#xff0c;来保证每台机器的读…

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现&#xff0c;内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外&#xff0c;还有一个“其他文件”的项目磁盘占用比也非常大&#xff0c;想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件&#xff1f;我…

HBuilderX修改manifest.json设置,解决跨域问题(CORS、Cross-Origin)

搭建一个前台uniapp&#xff0c;后台springboot的开发环境时&#xff0c;遇到了跨域问题。 console提示错误信息&#xff1a; Access to XMLHttpRequest at http://10.0.180.203/api/cms/getAdList?apId1 from origin http://localhost:8080 has been blocked by CORS policy…

常用框架分析(7)-Flutter

框架分析&#xff08;7&#xff09;-Flutter 专栏介绍Flutter核心思想Flutter的特点快速开发跨平台高性能美观的用户界面 Flutter的架构框架层引擎层平台层 开发过程使用Dart语言编写代码编译成原生代码热重载工具和插件 优缺点优点跨平台开发高性能美观的用户界面热重载强大的…

pinia——添加插件——基础积累

问题&#xff1a;是否给pinia添加过插件&#xff1f;具体添加的方式是什么&#xff1f; 在pinia中&#xff0c;我们可以为仓库添加插件&#xff0c;通过添加插件能够扩展以下的内容&#xff1a; 为 store 添加新的属性 定义 store 时增加新的选项 为 store 增加新的方法 包装现…

怎么传输大文件跨国,如何跨国快速传输大文件

在当前数字化时代的背景下&#xff0c;跨国传输大文件已经成为企业和个人工作中不可避免的挑战。尽管存在技术障碍和阻碍&#xff0c;但借助先进的技术和服务&#xff0c;我们仍能高效完成跨国大文件传输任务。接下来将介绍几种常见的跨国快速传输大文件的方法。 一、FTP文件传…

固定资产台账怎么管理

固定资产台账是指企业对固定资产进行登记、分类、统计和管理的账簿。固定资产管理系统是一款专业的固定资产管理软件&#xff0c;可以帮助企业实现资产全生命周期管理&#xff0c;包括资产采购、入库、领用、归还、维修、报废等环节。系统具有实时监控、预警提醒、报表分析等功…