赞
踩
✨作者主页:IT研究室✨
个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。
☑文末获取源码☑
精彩专栏推荐⬇⬇⬇
Java项目
Python项目
安卓项目
微信小程序项目
随着医药行业的快速发展,药店的数量和规模都在不断扩大,药店管理面临着越来越多的挑战。传统的手工管理方式已经无法满足药店管理的需要,因此,开发一款药店管理系统变得十分必要。本课题旨在开发一款适用于药店管理的系统,以提高药店管理的效率和质量。
目前,市面上已经存在一些药店管理系统,但是它们存在一些问题。首先,它们的功能比较简单,往往只涵盖了药品管理、进货管理等基础功能,而忽视了其他重要的管理环节,如供应商信息管理、销售管理等。其次,它们的数据管理方式比较落后,往往采用传统的数据库管理方式,操作复杂,效率低下。再次,它们缺乏智能化数据分析功能,无法为药店提供数据支持。
本课题旨在开发一款功能完善、操作简便、智能化程度高的药店管理系统。该系统将涵盖员工、管理人员两个角色,员工可以进行供应商信息管理、药品管理、进货管理、销售管理等操作,管理人员可以进行员工管理、基础数据管理(供应商类型、供应商信用等级类型、商品类型管理)、供应商信息管理、药品管理、进货管理、销售管理、销售数据统计报表等操作。该系统的研究目的在于提高药店管理的效率和质量,为药店的发展提供有力的支持。
本课题的研究意义在于为药店提供一套科学的管理方案,帮助药店更好地进行资源规划和管理。该系统可以实现以下功能:
提高药店管理的效率:通过系统化的管理方式,可以快速地完成各项管理任务,减少人工操作失误和时间成本。
提高药店管理的质量:通过系统化的管理方式,可以更好地掌握药品库存情况、销售情况等数据信息,及时调整经营策略和采购计划。
为药店提供数据支持:通过智能化数据分析功能,可以为药店提供销售数据统计报表等数据支持,帮助药店更好地了解市场需求和竞争情况。
提升药店竞争力:通过科学的管理方式,可以提高药店的服务质量和客户满意度,提升药店的竞争力和市场占有率。
为医药行业发展做出贡献:通过推广和应用本课题研究成果,可以为医药行业的发展做出贡献,提高整个行业的效率和水平。
/** * 药品信息 * * @author ggk-911 * @version 1.0 2023/3/9 12:17 */ @RestController @RequiredArgsConstructor @Slf4j @CrossOrigin @RequestMapping("/drug") @Api(tags = "药品信息控制层") public class DrugInfoController { private final DrugInfoServiceImpl service; private final DrugInfoTypeServiceImpl drugInfoTypeService; private final DrugPriceServiceImpl drugPriceService; //GET查询 @GetMapping("/queryAll") @ApiOperation("查询所有药品信息") public RestResult queryAll(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, @RequestParam(defaultValue = "") @ApiParam("名称,别名关键字") String keyName, @RequestParam(defaultValue = "") @ApiParam("制造商关键字") String manufacturer, @RequestParam(defaultValue = "") @ApiParam("适应症关键字") String indications, @RequestParam(defaultValue = "") @ApiParam("药品国家代码搜索") String nationalCode, @RequestParam(defaultValue = "") @ApiParam("批准文号搜索") String approvalNo, @ApiParam("类型搜索") Integer typeId) { Page<DrugInfo> drugInfoPage = new Page<>(page, size); LambdaQueryWrapper<DrugInfo> wrapper = new LambdaQueryWrapper<>(); //wrapper条件 wrapper.and(!"".equals(keyName), a -> a.like(DrugInfo::getDrugInfoName, keyName).or().like(DrugInfo::getDrugInfoAlias, keyName)); wrapper.like(!"".equals(manufacturer), DrugInfo::getDrugInfoManufacturer, manufacturer); wrapper.like(!"".equals(indications), DrugInfo::getDrugInfoIndications, indications); wrapper.like(!"".equals(nationalCode), DrugInfo::getDrugInfoNationalCode, nationalCode); wrapper.like(!"".equals(approvalNo), DrugInfo::getDrugInfoApprovalNo, approvalNo); wrapper.eq(typeId != null, DrugInfo::getDrugInfoTypeId, typeId); try { service.page(drugInfoPage, wrapper); // drugInfoPage.getRecords().forEach(System.out::println); } catch (Exception e) { log.error(String.valueOf(e)); return RestResult.error("查询错误"); } return RestResult.ok("查询成功", drugInfoPage); } //GET获取所有数据集合 @GetMapping("/list") public RestResult getList(@RequestParam(defaultValue = "") @ApiParam("名称,别名关键字") String keyName, @RequestParam(defaultValue = "") @ApiParam("制造商关键字") String manufacturer, @RequestParam(defaultValue = "") @ApiParam("适应症关键字") String indications, @RequestParam(defaultValue = "") @ApiParam("药品国家代码搜索") String nationalCode, @RequestParam(defaultValue = "") @ApiParam("批准文号搜索") String approvalNo, @ApiParam("类型搜索") Integer typeId) { LambdaQueryWrapper<DrugInfo> wrapper = new LambdaQueryWrapper<>(); //wrapper条件 wrapper.and(!"".equals(keyName), a -> a.like(DrugInfo::getDrugInfoName, keyName).or().like(DrugInfo::getDrugInfoAlias, keyName)); wrapper.like(!"".equals(manufacturer), DrugInfo::getDrugInfoManufacturer, manufacturer); wrapper.like(!"".equals(nationalCode), DrugInfo::getDrugInfoNationalCode, nationalCode); wrapper.like(!"".equals(indications), DrugInfo::getDrugInfoIndications, indications); wrapper.eq(typeId != null, DrugInfo::getDrugInfoTypeId, typeId); wrapper.like(!"".equals(approvalNo), DrugInfo::getDrugInfoApprovalNo, approvalNo); List<DrugInfo> drugInfoList = service.list(wrapper); return RestResult.ok("获取成功", drugInfoList); } //GET获取所有数据集合listExcel @SneakyThrows @GetMapping("/listExcel") public void getListExcel(@RequestParam(defaultValue = "") @ApiParam("名称,别名关键字") String keyName, @RequestParam(defaultValue = "") @ApiParam("制造商关键字") String manufacturer, @RequestParam(defaultValue = "") @ApiParam("适应症关键字") String indications, @RequestParam(defaultValue = "") @ApiParam("药品国家代码搜索") String nationalCode, @RequestParam(defaultValue = "") @ApiParam("批准文号搜索") String approvalNo, @ApiParam("类型搜索") Integer typeId, HttpServletResponse response) { LambdaQueryWrapper<DrugInfo> wrapper = new LambdaQueryWrapper<>(); //wrapper条件 wrapper.and(!"".equals(keyName), a -> a.like(DrugInfo::getDrugInfoName, keyName).or().like(DrugInfo::getDrugInfoAlias, keyName)); wrapper.like(!"".equals(manufacturer), DrugInfo::getDrugInfoManufacturer, manufacturer); wrapper.like(!"".equals(nationalCode), DrugInfo::getDrugInfoNationalCode, nationalCode); wrapper.like(!"".equals(indications), DrugInfo::getDrugInfoIndications, indications); wrapper.eq(typeId != null, DrugInfo::getDrugInfoTypeId, typeId); wrapper.like(!"".equals(approvalNo), DrugInfo::getDrugInfoApprovalNo, approvalNo); List<DrugInfo> drugInfoList = service.list(wrapper); drugInfoList.forEach(System.out::println); //逻辑暂时放在controller // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 设置防止中文名乱码 String filename = URLEncoder.encode("用户列表", "utf-8"); // 文件下载方式(附件下载还是在当前浏览器打开) response.setHeader("Content-disposition", "attachment;filename=" + filename + ".xls"); // 生成excel ExportParams exportParams = new ExportParams(); exportParams.setSheetName("药品信息"); exportParams.setTitle("药品信息"); Workbook sheets = ExcelExportUtil.exportExcel(exportParams, DrugInfo.class, drugInfoList); sheets.write(response.getOutputStream()); sheets.close(); } //POST表格导入 @SneakyThrows @PostMapping("/importExcel") public RestResult importExcel(MultipartFile file) { //逻辑暂时放在controller if (file.isEmpty()) { throw new RuntimeException("上传文件为空"); } ImportParams importParams = new ImportParams(); importParams.setTitleRows(1); importParams.setHeadRows(1); InputStream inputStream = file.getInputStream(); List<DrugInfoDTO> list = ExcelImportUtil.importExcel(inputStream, DrugInfoDTO.class, importParams); //拿到要导入的信息长度 int size1 = list.size(); inputStream.close(); List<DrugInfo> drugInfoList = new ArrayList<>(); list.forEach(item -> { //查询是否重复 DrugInfo drugInfoTest = service.selectByDrugInfoNationalCode(item.getDrugInfoNationalCode()); //类型不能为空 if (item.getDrugInfoTypeName() != null && !"".equals(item.getDrugInfoName()) && drugInfoTest == null) { //通过名称取到类型ID int drugInfoTypeId = 0; try { drugInfoTypeId = drugInfoTypeService.getIdByName(item.getDrugInfoTypeName()); } catch (Exception e) { return; } drugInfoList.add(new DrugInfo(item.getDrugInfoId(), item.getDrugInfoName(), item.getDrugInfoAlias(), drugInfoTypeId, item.getDrugInfoStrength(), item.getDrugInfoIndications(), item.getDrugInfoAdverseReactions(), item.getDrugInfoInteractions(), item.getDrugInfoDosage(), item.getDrugInfoSpecifications(), item.getDrugInfoStorageMethod(), item.getDrugInfoValidTime(), item.getDrugInfoManufacturer(), item.getDrugInfoNationalCode(), item.getDrugInfoApprovalNo(), item.getDrugInfoListingLicenseHolder(), null, null)); } }); //筛选后的长度 int size = drugInfoList.size(); if (size == 0) return RestResult.error("表中无数据或数据重复"); if (service.saveBatch(drugInfoList)) { //批量导入成功后自动生成价格列 drugInfoList.forEach(item -> { drugPriceService.save(new DrugPrice(item.getDrugInfoId(), 0D, null)); log.info("添加价格ID:{}", item.getDrugInfoId()); }); return RestResult.ok("批量导入成功,总:" + size1 + ",成功导入:" + size); } return RestResult.error("批量导入失败"); } //GET查询单个 @GetMapping("/query/{id}") @ApiOperation("查询单个药品信息") public RestResult queryOne(@PathVariable Integer id) { DrugInfo drugInfo = null; try { drugInfo = service.getById(id); } catch (Exception e) { log.error("查询单个药品信息错误" + e); return RestResult.error("查询错误"); } return RestResult.ok("查询成功", drugInfo); } //PUT插入 @PutMapping("/insert") @ApiOperation("插入一条药品信息") public RestResult insert(DrugInfo drugInfo) { try { if (service.save(drugInfo)) { //药品插入成功后,药品价格插入 if (drugPriceService.save(new DrugPrice(drugInfo.getDrugInfoId(), 0D, null))) { return RestResult.ok("插入成功,药品信息编号为:" + drugInfo.getDrugInfoId(), drugInfo.getDrugInfoId()); } } } catch (Exception e) { log.error(String.valueOf(e)); } log.info("插入药品信息:" + drugInfo.toString()); return RestResult.error("插入失败"); } //DELETE删除 @DeleteMapping("/delete") @ApiOperation("批量删除药品信息") public RestResult delete(Integer[] ids) { if (ids == null) return RestResult.error("删除失败,编号为空"); if (!service.removeBatchByIds(Arrays.asList(ids))) return RestResult.error("删除失败"); log.info("删除药品信息,编号为:" + Arrays.toString(ids)); if (!drugPriceService.deleteByDrugInfoId(ids[0])) return RestResult.error("删除失败"); return RestResult.ok("删除成功"); } //POST更新 @PostMapping("/update") @ApiOperation("更新一条药品信息") public RestResult update(DrugInfo drugInfo) { try { if (service.updateById(drugInfo)) return RestResult.ok("更新成功"); } catch (Exception e) { log.error(String.valueOf(e)); } return RestResult.error("更新失败"); } }
/** * 药品种类控制层 * * @author ggk-911 * @version 1.0 2023/3/19 18:39 */ @RestController @RequiredArgsConstructor @Slf4j @CrossOrigin @RequestMapping("/drugInfoType") @Api("药品分类信息控制层") public class DrugInfoTypeController { private final DrugInfoTypeServiceImpl service; //GET查询所有类别 @GetMapping("/queryAll") public RestResult queryAll(@RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer size, @RequestParam(defaultValue = "") String keyName) { Page<DrugInfoType> drugInfoTypePage = new Page<>(page, size); QueryWrapper<DrugInfoType> wrapper = new QueryWrapper<>(); wrapper.like(!"".equals(keyName), "drug_info_type_name", keyName); service.page(drugInfoTypePage, wrapper); return RestResult.ok("查询成功", drugInfoTypePage); } //GET获取所有数据集合 @GetMapping("/list") public RestResult getList(@RequestParam(defaultValue = "") String keyName) { QueryWrapper<DrugInfoType> wrapper = new QueryWrapper<>(); wrapper.like(!"".equals(keyName), "drug_info_type_name", keyName); List<DrugInfoType> drugInfoTypeList = service.list(wrapper); return RestResult.ok("获取成功", drugInfoTypeList); } //PUT添加 @PutMapping("/insert") public RestResult insert(DrugInfoType drugInfoType) { if (service.save(drugInfoType)) { return RestResult.ok("添加成功,返回编号:" + drugInfoType.getDrugInfoTypeId(), drugInfoType.getDrugInfoTypeId()); } return RestResult.error("添加失败"); } //DELETE删除 @DeleteMapping("/delete") public RestResult delete(Integer id) { if (service.removeById(id)) { return RestResult.ok("删除成功"); } return RestResult.error("删除失败"); } //POST更新 @PostMapping("/update") public RestResult update(DrugInfoType drugInfoType) { if (service.updateById(drugInfoType)) { return RestResult.ok("更新成功"); } return RestResult.error("更新失败"); } }
药店管理系统-项目视频:
基于SpringBoot的药店管理系统
计算机毕业设计选题推荐-药店管理系统-Java项目实战
大家可以帮忙点赞、收藏、关注、评论啦~
源码获取:私信我
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。