基于springboot layui疫苗接种信息管理系统源码

news2025/1/25 4:47:24

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

开发技术:springboot layui

伴随着社会的迅速发展,电子计算机对世界的作用影响是全面并且长久的。人们日常生活消费综合应用水平的持续增高,生活中人们对生活公共社区疫情防范全面控制综合管理方面的各项需求也能够在持续提升,伴随着生活公共社区疫情防范全面控制受到广大公民的重视,促使生活公共社区疫情防范全面控制综合管理应用体系的研发,逐渐发展成为必需并且危急的具体事务。生活公共社区疫病防护综合治理,通常都是经过电子计算机网络,经过对社会疫病防护综合治理要求的数据信息进一步集合和综合管理,增长用户的数据信息,与此同时也便捷了对所有客户数据信息的及时迅速查找、修整以及对客户数据信息的及时、全面、深入地了解和掌握。该应用操作体系用户供应了更多的简洁便利,该应用操作体系将和数据信息资料库综合管理操控应用软件合作,以服务好客户的要求。计算机技术在现代社会各个邻域管理中的广泛应用,也使得计算机技术成为了我们现在日常使用的现代信息技术必不可少手段。可以高效快捷的实现信息精细化、全面化的技术难题,提高生产管理的效率。

 

 

演示视频:

【java毕业设计】基于springboot layui疫苗接种信息管理系统源码

 

 

 

package com.vaccination.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vaccination.entity.InoculationRecord;
import com.vaccination.entity.User;
import com.vaccination.service.InoculationRecordService;
import com.vaccination.service.UserService;
import com.vaccination.util.PageRequest;
import com.vaccination.util.PageResponse;
import com.vaccination.util.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

@RestController
public class InoculationController {

    @Autowired
    private InoculationRecordService inoculationRecordService;

    @Autowired
    private UserService userService;

    @PostMapping("/listInoculations")
    public PageResponse listInoculations(HttpServletRequest request, PageRequest page) {
        String loginUser = (String) request.getSession().getAttribute("loginUser");
        User user = JSONObject.parseObject(loginUser, User.class);
        if (user == null) {
            PageResponse pageResponse = new PageResponse();
            pageResponse.setMsg("请登陆");
            return pageResponse;
        }
        if (user.getRole() == 2) {
            user.setId(-1L);
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        IPage<InoculationRecord> iPage = inoculationRecordService.listInoculations(new Page<>(page.getPage(), page.getLimit()), user.getId());
        List<InoculationRecord> records = iPage.getRecords();
        records.forEach(item -> {
            if (StringUtils.isBlank(item.getUsername()) && item.getUserId() != null) {
                User byId = userService.getById(item.getUserId());
                if (byId != null) {
                    item.setUsername(byId.getName());
                    item.setUserIdentity(byId.getIdentityNum());
                }
            }
            if (item.getInoculationTimeOne() != null) {
                item.setInoculationTimeStrOne(dateFormat.format(item.getInoculationTimeOne()));
            }
            if (item.getInoculationTimeTwo() != null) {
                item.setInoculationTimeStrTwo(dateFormat.format(item.getInoculationTimeTwo()));
            }
            if (item.getInoculationTimeThree() != null) {
                item.setInoculationTimeStrThree(dateFormat.format(item.getInoculationTimeThree()));
            }
        });
        return new PageResponse("0", "请求成功", iPage.getTotal(), records);
    }

    @GetMapping("/delInoculation")
    public Result delInoculation(Long id) {
        inoculationRecordService.removeById(id);
        return Result.success("删除成功");
    }

    @PostMapping("/saveInoculation")
    public Result saveInoculation(InoculationRecord record, HttpServletRequest request) throws ParseException {
        String loginUser = (String) request.getSession().getAttribute("loginUser");
        User user = JSONObject.parseObject(loginUser, User.class);
        if (user == null) {
            return Result.error("请登陆");
        }
        if(record.getStatusThree() == 1 && (record.getStatusTwo() == 2 || record.getStatusOne() == 2)) {
            return Result.error("请先接种第一二针");
        }

        if(record.getStatusTwo() == 1 && record.getStatusTwo() == 2) {
            return Result.error("请先接种第一针");
        }
        record.setUserId(user.getId());
        if (StringUtils.isNoneBlank(record.getUsername())){
            User byUsername = userService.getByUsername(record.getUsername());
            if(byUsername == null) {
                User newUser = new User();
                newUser.setUsername(record.getUsername());
                newUser.setName(record.getUsername());
                newUser.setPassword("123456");
                newUser.setRole(1);
                newUser.setStatus(1);
                userService.save(newUser);
                byUsername = newUser;
            }
            record.setUserId(byUsername.getId());
        }
        if (StringUtils.isNoneBlank(record.getInoculationTimeStrOne())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeOne(dateFormat.parse(record.getInoculationTimeStrOne()));
        }
        if (StringUtils.isNoneBlank(record.getInoculationTimeStrTwo())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeTwo(dateFormat.parse(record.getInoculationTimeStrTwo()));
        }
        if (StringUtils.isNoneBlank(record.getInoculationTimeStrThree())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeThree(dateFormat.parse(record.getInoculationTimeStrThree()));
        }
        inoculationRecordService.save(record);
        return Result.success("添加成功");
    }

    @PostMapping("/updateInoculation")
    public Result updateInoculation(InoculationRecord record) throws ParseException {
        if (record.getId() == null) {
            return Result.error("更新失败");
        }

        if(record.getStatusThree() == 1 && (record.getStatusTwo() == 2 || record.getStatusOne() == 2)) {
            return Result.error("请先接种第一二针");
        }

        if(record.getStatusTwo() == 1 && record.getStatusTwo() == 2) {
            return Result.error("请先接种第一针");
        }

        if (StringUtils.isNoneBlank(record.getInoculationTimeStrOne())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeOne(dateFormat.parse(record.getInoculationTimeStrOne()));
        }
        if (StringUtils.isNoneBlank(record.getInoculationTimeStrTwo())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeTwo(dateFormat.parse(record.getInoculationTimeStrTwo()));
        }
        if (StringUtils.isNoneBlank(record.getInoculationTimeStrThree())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setInoculationTimeThree(dateFormat.parse(record.getInoculationTimeStrThree()));
        }
        inoculationRecordService.updateById(record);
        return Result.success("更新成功");
    }
}

 

 

 

package com.vaccination.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vaccination.entity.InoculationRecord;
import com.vaccination.entity.User;
import com.vaccination.service.UserService;
import com.vaccination.util.PageRequest;
import com.vaccination.util.PageResponse;
import com.vaccination.util.Result;
import net.sf.jsqlparser.Model;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @PostMapping("/login")
    public ModelAndView login(User request, ModelAndView mv, HttpServletRequest servletRequest) {
        User user = userService.getOne(new QueryWrapper<User>().eq("username", request.getUsername()).eq("password", request.getPassword()));
        if (user == null){
            mv.addObject("msg", "登陆失败,请检查账号或密码");
            mv.setViewName("login");
            return mv;
        }
        if (user.getStatus() == 2) {
            mv.addObject("msg", "账号被封禁,请联系管理员");
            mv.setViewName("login");
            return mv;
        }
        mv.addObject("username", request.getUsername());
        mv.setViewName("user");
        mv.addObject("isAdmin", user.getRole() == 2);
        servletRequest.getSession().setAttribute("loginUser", JSONObject.toJSONString(user));
        return mv;

    }

    @GetMapping("/logout")
    public ModelAndView logout(ModelAndView mv, HttpServletRequest request) {
        mv.setViewName("login");
        mv.addObject("msg", "退出成功");
        request.getSession().removeAttribute("loginUser");
        return mv;
    }

    @PostMapping("/reg")
    public ModelAndView reg(User request, ModelAndView mv) {
        User user = userService.getOne(new QueryWrapper<User>().eq("username", request.getUsername()));
        if (user != null){
            mv.addObject("msg", "注册失败,用户名已存在");
            mv.setViewName("reg");
            return mv;
        }
        request.setName(request.getUsername());
        mv.addObject("username", request.getUsername());
        mv.addObject("msg", "注册成功,请登陆");
        userService.save(request);
        mv.setViewName("login");
        return mv;

    }

    @GetMapping("/userInfo")
    public ModelAndView userInfo(ModelAndView mv, HttpServletRequest request){
        mv.setViewName("userInfo");
        String user = (String) request.getSession().getAttribute("loginUser");
        User byId = userService.getById(JSONObject.parseObject(user, User.class).getId());
        mv.addObject("user",byId);
        request.getSession().setAttribute("loginUser", JSONObject.toJSONString(byId));
        return mv;
    }

    @PostMapping("/saveUserInfo")
    public Result saveUserInfo(User request, HttpServletRequest servletRequest) {
        User user = JSONObject.parseObject((String) servletRequest.getSession().getAttribute("loginUser"), User.class);
        request.setId(user.getId());
        userService.updateById(request);
        servletRequest.getSession().setAttribute("loginUser", JSONObject.toJSONString(request));
        return Result.success("修改成功");
    }

    @PostMapping("/listUser")
    public PageResponse listUser(PageRequest page, HttpServletRequest request) {
        String loginUser = (String) request.getSession().getAttribute("loginUser");
        User user = JSONObject.parseObject(loginUser, User.class);
        if (user == null) {
            return new PageResponse("500","请登陆",0L,  new ArrayList<>());
        }
        if (user.getRole() == 1) {
            return new PageResponse("500","没有权限",0L,  new ArrayList<>());
        }
        IPage<User> iPage = userService.listPage(new Page<>(page.getPage(), page.getLimit()));
        return new PageResponse("0", "请求成功", iPage.getTotal(), iPage.getRecords());
    }

    @GetMapping("/getUserById/{id}")
    public ModelAndView getUserById(@PathVariable("id") Long userId, ModelAndView mv) {
        User byId = userService.getById(userId);
        mv.addObject("user", byId);
        mv.setViewName("editUser");
        return mv;
    }

    @GetMapping("/enableUser")
    public Result enableUser(Long id) {
        User byId = userService.getById(id);
        byId.setStatus(1);
        userService.updateById(byId);
        return Result.success("启用成功");
    }

    @GetMapping("/disableUser")
    public Result disableUser(Long id) {
        User byId = userService.getById(id);
        byId.setStatus(2);
        userService.updateById(byId);
        return Result.success("禁用成功");
    }

    @GetMapping("delUser")
    public Result delUser(Long id) {
        userService.removeAll(id);
        return Result.success("删除成功");
    }

    @PostMapping("/updateUser")
    public Result updateUser(User user) {
        User username = userService.getOne(new QueryWrapper<User>().eq("username", user.getUsername()));
        if (username != null && !username.getId().equals(user.getId())) {
            return Result.error("用户名已存在");
        }
        userService.updateById(user);
        return Result.success("修改成功");
    }
}

 

 

 

package com.vaccination.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vaccination.entity.Travel;
import com.vaccination.entity.User;
import com.vaccination.service.TravelService;
import com.vaccination.service.UserService;
import com.vaccination.util.PageRequest;
import com.vaccination.util.PageResponse;
import com.vaccination.util.Result;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

@RestController
public class TravelController {

    @Autowired
    private TravelService travelService;
    
    @Autowired
    private UserService userService;

    @PostMapping("/listTravel")
    public PageResponse listTravel(HttpServletRequest request, PageRequest page) {
        String loginUser = (String) request.getSession().getAttribute("loginUser");
        User user = JSONObject.parseObject(loginUser, User.class);
        if (user == null) {
            PageResponse pageResponse = new PageResponse();
            pageResponse.setMsg("请登陆");
            return pageResponse;
        }
        if (user.getRole() == 2) {
            user.setId(-1L);
        }
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        IPage<Travel> iPage = travelService.listTravel(new Page<>(page.getPage(), page.getLimit()), user.getId());
        List<Travel> records = iPage.getRecords();
        records.forEach(item -> {
            if (StringUtils.isBlank(item.getUsername()) && item.getUserId() != null) {
                User byId = userService.getById(item.getUserId());
                if (byId != null) {
                    item.setUsername(byId.getName());
                    item.setUserIdentity(byId.getIdentityNum());
                }
            }
            if (item.getHappenTime() != null) {
                item.setHappenTimeStr(dateFormat.format(item.getHappenTime()));
            }
        });
        return new PageResponse("0", "请求成功", iPage.getTotal(), records);
    }

    @GetMapping("/delTravel")
    public Result delCaseHistory(Long id) {
        travelService.removeById(id);
        return Result.success("删除成功");
    }

    @PostMapping("/saveTravel")
    public Result saveInoculation(Travel record, HttpServletRequest request) throws ParseException {
        String loginUser = (String) request.getSession().getAttribute("loginUser");
        User user = JSONObject.parseObject(loginUser, User.class);
        if (user == null) {
            return Result.error("请登陆");
        }
        record.setUserId(user.getId());
        if (StringUtils.isNoneBlank(record.getUsername())){
            User byUsername = userService.getByUsername(record.getUsername());
            if(byUsername == null) {
                User newUser = new User();
                newUser.setUsername(record.getUsername());
                newUser.setName(record.getUsername());
                newUser.setPassword("123456");
                newUser.setRole(1);
                newUser.setStatus(1);
                userService.save(newUser);
                byUsername = newUser;
            }
            record.setUserId(byUsername.getId());
        }
        if (StringUtils.isNoneBlank(record.getHappenTimeStr())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setHappenTime(dateFormat.parse(record.getHappenTimeStr()));
        }
        travelService.save(record);
        return Result.success("添加成功");
    }

    @PostMapping("/updateTravel")
    public Result updateInoculation(Travel record) throws ParseException {
        if (record.getId() == null) {
            return Result.error("更新失败");
        }
        if (StringUtils.isNoneBlank(record.getHappenTimeStr())) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
            record.setHappenTime(dateFormat.parse(record.getHappenTimeStr()));
        }else {
            record.setHappenTime(null);
        }
        travelService.updateById(record);
        return Result.success("更新成功");
    }
}

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

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

相关文章

[ 数据结构 -- 手撕排序算法总结篇 ]

文章目录前言一、常见的排序算法二、测试排序的性能对比随机数排序时间对比有序数排序时间对比三、排序算法的复杂度四、排序算法的稳定性前言 手撕排序算法总结 本篇文章进行总结&#xff0c;我会对比并分析常见的几种排序&#xff0c;例如像插入排序&#xff0c;冒泡排序&am…

【金猿案例展】福特电马——一键五联私域流量运营

‍映盛中国案例本项目案例由映盛中国投递并参与“数据猿年度金猿策划活动——《2022大数据产业年度创新服务企业》榜单/奖项”评选。‍数据智能产业创新服务媒体——聚焦数智 改变商业随着中国电动车市场及消费者对电动汽车的需求的不断变化&#xff0c;汽车市场进入存量竞争时…

如何用VS2010创建并生成动态链接库

1、目的 在某些应用程序场景下&#xff0c;需要将一些类或者方法编译成动态链接库dll&#xff0c;以便别的.exe或者.dll文件可以通过第三方库的方式进行调用&#xff0c;下面就简单介绍一下如何通过VS2010来创建动态链接库。 2、新建动态链接库 1&#xff09; 打开VS2010&…

546103-85-9,PR-AMC,二肽标记肽

PR-AMC, a fluorogenic Plasmodium falciparum dipeptidyl aminopeptidase 1 (DPAP1, cathepsin C) substrate.一种含氟恶性疟原虫二肽基氨基肽酶1 (DPAP1&#xff0c;组织蛋白酶C)底物。编号: 177167 中文名称: 二肽标记肽PR-7-氨基-4-甲基香豆素2HCl英文名: H-Pro-Arg-AMCCAS…

clickhouse 数据字典使用详解

一、数据字典介绍 数据字典是ClickHouse提供一种非常简单且实用的存储媒介&#xff0c;他以键值和属性映射的形式定义数据。字典中的数据会主动或被动加载到内存并支持动态更新。由于字典数据常驻内存的特性&#xff0c;所以非常适合保存常量或经常使用的维度表数据&#xff0c…

2001-2020年沪深A股上市公司管理者短视主义指标数据

2001-2020年沪深A股上市公司管理者短视主义指标数据 1、时间&#xff1a;2001-2020年 2、包括所有沪深A股所有上市公司 3、指标包括&#xff1a; 证券代码&#xff1a;以上海证券交易所和深圳证券交易所公布的证券代码为准。 证券简称&#xff1a;以上海证券交易所和深圳证…

从搭建到落地,详解证券基金行业数字化运营体系

近年来&#xff0c;金融行业的数字化转型呈现了新的特点&#xff0c;即要做更精准的营销和数字化运营。本文根据神策数据杨雪杉关于《面向落地的证券基金行业运营体系搭建》的主题演讲整理&#xff0c;点击文末“阅读原文”即可观看完整版演讲回放。一、基于 SDAF 数据闭环方法…

ubuntu20.04 设置 rc.local 开机自启动脚本一文配置

前言 系统:ubuntu20.04LTS 本来觉得似乎好像是一件简单的事情 实际运行处理的时候发现还是有点复杂,面对这样的过程中的总结如下: 第一步 终端执行查看开机可以启动的服务, 执行 ls /lib/systemd/system 你可以看到有很多启动脚本, 其中就有我们需要的 rc-local.s…

让你室友、工友、小孩断网 安全风险演示

前提&#xff1a; ① 、你需要 和 你室友处于同一个局域网&#xff0c;互相能ping通 ②、你需要知道你室友的IP ③、您可能需要一个linux 设备&#xff0c;手机也行&#xff08;需要安装termux 来执行命令&#xff09;、linux系统电脑、树莓派等都可以。 -----------------…

【MAX7800羽毛板更新固件及下载bug修复】

【MAX7800羽毛板更新固件及下载bug修复】1. 前言2. 首次固件更新2.1 更新MAX32625PICO&#xff08;“PICO”&#xff09;调试适配器固件2.2 使用eclipse开发3. 下载bug修复3.1 当你的下载口出现Error: Target not examined yet3.2 修复方法5. 小结1. 前言 原理图和BOM可在MAX7…

express再度复习,小白篇

js----后端编程&#xff0c;Express框架,npm包管理工具,- es6模块化,使用express创建web应用,路由拆分&#xff0c;中间件 &#xff0c; 热更新&#xff0c;脚手架_阿 尭的博客-CSDN博客之前学习的时候整理的一篇草率博客&#xff0c;复习的时候混忘了。今天再重新学习一下expr…

【强化学习基础】强化学习的基本概念:状态、动作、智能体、策略、奖励、状态转移、轨迹、回报

文章目录1.状态&#xff08;State&#xff09;2.动作&#xff08;Action&#xff09;3.智能体&#xff08;Agent&#xff09;4.策略&#xff08;Policy&#xff09;5.奖励&#xff08;Reward&#xff09;6.状态转移&#xff08;State transition&#xff09;7.智能体与环境交互…

“margin”外边距的各种奇特现象

我们大家在初学css布局html页面结构的时候&#xff0c;肯定会经常使用到“margin”外边距这个属性&#xff0c;这个属性对我们的页面布局十分有用&#xff0c;也十分方便&#xff0c;但是这个属性在使用的时候经常会出现一些奇特的现象&#xff0c;导致我们的页面布局和想要完成…

开发一个MyBatis通用Mapper的轮子

目录 一、前言 二、需求 三、实现原理 1、基于MyBatis3提供的SqlProvider构建动态Sql 2、基于自定义注解&#xff0c;为实体和数据库表建立对应关系 四、代码实现 1、自定义注解 2、几个pojo&#xff0c;用来保存实体对应的信息 3、定义开头说的BaseMapper 4、SqlPro…

Nginx-负载均衡

负载均衡的意思是在服务器集群中&#xff0c;需要有一台服务器作为调度者&#xff0c;客户端所有的请求都有调度者接收&#xff0c;调度者再根据每台服务器的负载情况&#xff0c;将请求分配给对应的服务器去处理 配置过程 1、需要在nginx.conf配置文件中添加服务组 服务组中…

linux安装stable diffusion2.0完整教程-还不会安装sd2.0?一篇文章教会你AI绘画

以下教程出自飞链云AI技术人员&#xff0c;欢迎使用目前国内顶尖的AI绘画工具&#xff0c;微信小程序搜索&#xff1a;【飞链云版图】 注意&#xff1a;请严格按照以下步骤进行&#xff0c;可非常容易进行安装&#xff0c;其他环境不保证丝滑安装&#xff1b; 安装前准备 ub…

分析GC日志

文章目录1.GC日志格式1.1 GC分类1.2 GC日志结构剖析1.3 GC日志分析工具1.4 人生感悟1.GC日志格式 1.1 GC分类 针对HotSpot VM的实现&#xff0c;它里面的Gc按照回收区域又分为两大种类型: 一种是部分收集&#xff08;Partial GC&#xff09;&#xff0c;一种是整堆收集&#…

三.线程的状态

正常线程的五大状态 &#xff1a;新建状态&#xff0c;就绪状态&#xff0c;运行状态&#xff0c;阻塞状态&#xff0c;死亡状态 初始(NEW)&#xff1a;新创建了一个线程对象&#xff0c;但还没有调用start()方法。 运行(RUNNABLE)&#xff1a;Java线程中将就绪&#xff08;re…

小白想学习python?怎么学?

首先&#xff0c;学习Python编程技术&#xff0c;自学或者参加培训学习都适用&#xff0c;每个人都有自己的学习方式和方法。 一&#xff1a;明确自己的学习目标。 不管我们学习什么样的知识&#xff0c;都要对自己的学习目标有一个明确的认识。只有这样才能朝着目标持续的前…

26岁学历低的我,是如何从工厂转行Python工程师?

本人坐标长沙&#xff0c;专科工程造价专业。 转行Python工程师薪资&#xff1a;13K。 饮水思泉&#xff0c;在转行的过程中&#xff0c;同学跟老师们对我的帮助非常大&#xff0c;自己找到工作以后&#xff0c;也试着写篇文章&#xff0c;将自己的心得经验全部分享出来&#…