From 6467f549e77c9d132841730a339635302a0232a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=81=92?= <3226558941@qq.com> Date: Thu, 21 Sep 2023 11:07:59 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8A=A4=E7=90=86=E8=80=97=E6=9D=90=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=A7=BB=E6=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NurseStationConsumableController.java | 151 ++++++++++++++ .../NurseStationConsumable.java | 110 +++++++++++ .../NurseStationConsumableDTO.java | 23 +++ .../NurseStationConsumableImportlDTO.java | 64 ++++++ .../NurseStationConsumableMapper.java | 73 +++++++ .../INurseStationConsumableService.java | 75 +++++++ .../NurseStationConsumableServiceImpl.java | 180 +++++++++++++++++ .../NurseStationConsumableVO.java | 19 ++ .../NurseStationClassifyRelationMapper.xml | 2 +- .../NurseStationConsumableMapper.xml | 184 ++++++++++++++++++ .../NurseStationLabelMapper.xml | 2 +- .../NurseStationPersonCheckMapper.xml | 168 ++++++++++++++++ 12 files changed, 1049 insertions(+), 2 deletions(-) create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/nursestationconsumable/NurseStationConsumableController.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationconsumable/NurseStationConsumable.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableImportlDTO.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationconsumable/NurseStationConsumableMapper.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/INurseStationConsumableService.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/impl/NurseStationConsumableServiceImpl.java create mode 100644 xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationconsumable/NurseStationConsumableVO.java rename xinelu-nurse-manage/src/main/{java/com/xinelu/manage/mapper => resources/mapper/manage}/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml (98%) create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationconsumable/NurseStationConsumableMapper.xml rename xinelu-nurse-manage/src/main/{java/com/xinelu/manage/mapper => resources/mapper/manage}/nursestationlabel/NurseStationLabelMapper.xml (99%) create mode 100644 xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersoncheck/NurseStationPersonCheckMapper.xml diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/nursestationconsumable/NurseStationConsumableController.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/nursestationconsumable/NurseStationConsumableController.java new file mode 100644 index 0000000..0ad564a --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/controller/nursestationconsumable/NurseStationConsumableController.java @@ -0,0 +1,151 @@ +package com.xinelu.manage.controller.nursestationconsumable; + +import com.xinelu.common.annotation.Log; +import com.xinelu.common.constant.Constants; +import com.xinelu.common.core.controller.BaseController; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.page.TableDataInfo; +import com.xinelu.common.custominterface.Insert; +import com.xinelu.common.custominterface.Update; +import com.xinelu.common.enums.BusinessType; +import com.xinelu.common.utils.poi.ExcelUtil; +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import com.xinelu.manage.dto.nursestationconsumable.NurseStationConsumableDTO; +import com.xinelu.manage.dto.nursestationconsumable.NurseStationConsumableImportlDTO; +import com.xinelu.manage.service.nursestationconsumable.INurseStationConsumableService; +import com.xinelu.manage.vo.nursestationconsumable.NurseStationConsumableVO; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.List; +import java.util.Objects; + +/** + * 护理站耗材信息Controller + * + * @author 纪寒 + * @date 2022-09-05 + */ +@RestController +@RequestMapping("/system/stationConsumable") +public class NurseStationConsumableController extends BaseController { + @Resource + private INurseStationConsumableService nurseStationConsumableService; + + /** + * 查询护理站耗材信息列表 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:list')") + @GetMapping("/list") + public TableDataInfo list(NurseStationConsumable nurseStationConsumable) { + startPage(); + List list = nurseStationConsumableService.selectNurseStationConsumableList(nurseStationConsumable); + return getDataTable(list); + } + + /** + * 导出护理站耗材信息列表 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:export')") + @Log(title = "护理站耗材信息", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, NurseStationConsumable nurseStationConsumable) { + List list = nurseStationConsumableService.selectNurseStationConsumableList(nurseStationConsumable); + ExcelUtil util = new ExcelUtil<>(NurseStationConsumableVO.class); + util.exportExcel(response, list, "护理站耗材信息数据"); + } + + /** + * 导入护理站耗材信息列表 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:importStationConsumable')") + @Log(title = "导入护理站耗材信息", businessType = BusinessType.IMPORT) + @PostMapping("/importData") + public AjaxResult importData(MultipartFile file) throws Exception { + //判断excel里面是否有数据/文件格式 + if (Objects.isNull(file) || StringUtils.isBlank(file.getOriginalFilename())) { + return AjaxResult.error("请选择所需要上传的护理耗材文件信息!"); + } + // 获取文件名 + String orgName = file.getOriginalFilename(); + if (!orgName.endsWith(Constants.XLSX) && !orgName.endsWith(Constants.XLS)) { + return AjaxResult.error("导入文件格式不正确,请导入xlsx或xls格式的文件!"); + } + ExcelUtil util = new ExcelUtil<>(NurseStationConsumableImportlDTO.class); + List list = util.importExcel(file.getInputStream()); + return nurseStationConsumableService.importData(list); + } + + /** + * 获取护理站耗材信息详细信息 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:query')") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(nurseStationConsumableService.selectNurseStationConsumableById(id)); + } + + /** + * 新增护理站耗材信息 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:add')") + @Log(title = "护理站耗材信息", businessType = BusinessType.INSERT) + @PostMapping("/add") + public AjaxResult add(@Validated(Insert.class) @RequestBody NurseStationConsumableDTO nurseStationConsumableDTO) throws Exception { + //校验耗材包价格是为负数 + if (CollectionUtils.isEmpty(nurseStationConsumableDTO.getNurseStationConsumables())) { + return AjaxResult.error("请添加护理站耗材信息!"); + } + NurseStationConsumable nurseStationConsumable = nurseStationConsumableDTO.getNurseStationConsumables().stream().filter(item -> Objects.nonNull(item.getConsumablePrice()) && item.getConsumablePrice().compareTo(BigDecimal.ZERO) < 0).findFirst().orElse(null); + if (Objects.nonNull(nurseStationConsumable)) { + return AjaxResult.error("耗材包价格不能为负数,请重新输入!"); + } + return nurseStationConsumableService.insertNurseStationConsumable(nurseStationConsumableDTO.getNurseStationConsumables()); + } + + /** + * 修改护理站耗材信息 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:edit')") + @Log(title = "护理站耗材信息", businessType = BusinessType.UPDATE) + @PostMapping("/edit") + public AjaxResult edit(@Validated(Update.class) @RequestBody NurseStationConsumable nurseStationConsumable) { + //校验护理站耗材价格 + if (Objects.nonNull(nurseStationConsumable.getConsumablePrice()) && nurseStationConsumable.getConsumablePrice().compareTo(BigDecimal.ZERO) < 0) { + return AjaxResult.error("耗材包价格不能为负数,请重新输入!"); + } + return toAjax(nurseStationConsumableService.updateNurseStationConsumable(nurseStationConsumable)); + } + + /** + * 删除护理站耗材信息 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:remove')") + @Log(title = "护理站耗材信息", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(nurseStationConsumableService.deleteNurseStationConsumableByIds(ids)); + } + + /** + * 根据服务站id查询护理站耗材信息列表(无分页) + * + * @param stationId 护理站id + * @return 护理站列表信息 + */ + @PreAuthorize("@ss.hasPermi('system:stationConsumable:list')") + @GetMapping("/getListByStationId") + public AjaxResult getListByStationId(@RequestParam("stationId") Long stationId) { + NurseStationConsumable nurseStationConsumable = new NurseStationConsumable(); + nurseStationConsumable.setNurseStationId(stationId); + List list = nurseStationConsumableService.selectNurseStationConsumableList(nurseStationConsumable); + return AjaxResult.success(list); + } +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationconsumable/NurseStationConsumable.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationconsumable/NurseStationConsumable.java new file mode 100644 index 0000000..2c6704f --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/domain/nursestationconsumable/NurseStationConsumable.java @@ -0,0 +1,110 @@ +package com.xinelu.manage.domain.nursestationconsumable; + +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseDomain; +import com.xinelu.common.custominterface.Insert; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import net.sf.jsqlparser.statement.update.Update; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * 护理站耗材信息对象 nurse_station_consumable + * + * @author xinyilu + * @date 2022-09-05 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "护理站耗材信息对象", description = "nurse_station_consumable") +public class NurseStationConsumable extends BaseDomain implements Serializable { + private static final long serialVersionUID = -279751860921592017L; + /** + * 主键id + */ + private Long id; + + /** + * 护理站id + */ + @NotNull(message = "护理站id不能为空", groups = {Insert.class, Update.class}) + private Long nurseStationId; + + /** + * 创建人id + */ + @ApiModelProperty(value = "创建人id") + @Excel(name = "创建人id") + private Long userId; + + /** + * 耗材包编号 + */ + @ApiModelProperty(value = "耗材包编号") + @Excel(name = "耗材包编号") + private String consumableCode; + + /** + * 服务项目耗材包详情 + */ + @ApiModelProperty(value = "服务项目耗材包详情") + @Excel(name = "服务项目耗材包详情") + @NotNull(message = "服务项目耗材包详情不能为空", groups = {Insert.class, Update.class}) + @Length(max = 100, message = "服务项目耗材包详情不能超过100个字符", groups = {Insert.class, Update.class}) + private String consumableDetail; + + /** + * 耗材包单位 + */ + @ApiModelProperty(value = "耗材包单位") + @Excel(name = "耗材包单位") + @NotNull(message = "耗材包单位不能为空", groups = {Insert.class, Update.class}) + @Length(max = 10, message = "耗材包单位不能超过10个字符", groups = {Insert.class, Update.class}) + private String consumableUnit; + + /** + * 耗材包价格 + */ + @ApiModelProperty(value = "耗材包价格") + @Excel(name = "耗材包价格") + @NotNull(message = "耗材包价格不能为空", groups = {Insert.class, Update.class}) + private BigDecimal consumablePrice; + + /** + * 排序 + */ + @ApiModelProperty(value = "排序") + @Excel(name = "排序") + @NotNull(message = "排序不能为空", groups = {Insert.class, Update.class}) + private Integer sort; + + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("userId", getUserId()) + .append("consumableCode", getConsumableCode()) + .append("consumableDetail", getConsumableDetail()) + .append("consumableUnit", getConsumableUnit()) + .append("consumablePrice", getConsumablePrice()) + .append("sort", getSort()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableDTO.java new file mode 100644 index 0000000..ef00f37 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableDTO.java @@ -0,0 +1,23 @@ +package com.xinelu.manage.dto.nursestationconsumable; + +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import lombok.Data; + +import javax.validation.Valid; +import java.io.Serializable; +import java.util.List; + +/** + * @author wanghao + * @create 2022/9/13 0013 + */ +@Data +public class NurseStationConsumableDTO implements Serializable { + private static final long serialVersionUID = -7850626319073510902L; + + /** + * 护理站耗材信息集合 + */ + @Valid + private List nurseStationConsumables; +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableImportlDTO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableImportlDTO.java new file mode 100644 index 0000000..bc8febb --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/dto/nursestationconsumable/NurseStationConsumableImportlDTO.java @@ -0,0 +1,64 @@ +package com.xinelu.manage.dto.nursestationconsumable; + +import com.xinelu.common.annotation.Excel; +import com.xinelu.common.core.domain.BaseDomain; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Objects; + +/** + * @author wanghao + * @create 2022/9/14 0014 + */ +@Data +public class NurseStationConsumableImportlDTO extends BaseDomain implements Serializable { + private static final long serialVersionUID = 1901885669841912320L; + @Excel(name = "护理站名称") + private String nurseStationName; + + @Excel(name = "耗材名称") + private String consumableDetail; + + @Excel(name = "计量单位") + private String consumableUnit; + + @Excel(name = "单价") + private BigDecimal consumablePrice; + + /** + * 护理站code + */ + private String consumableCode; + + /** + * 用户id + */ + private Long userId; + + /** + * 护理站id + */ + private Long nurseStationId; + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + if (!super.equals(o)) { + return false; + } + NurseStationConsumableImportlDTO that = (NurseStationConsumableImportlDTO) o; + return Objects.equals(nurseStationName, that.nurseStationName) && Objects.equals(consumableDetail, that.consumableDetail); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), nurseStationName, consumableDetail); + } +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationconsumable/NurseStationConsumableMapper.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationconsumable/NurseStationConsumableMapper.java new file mode 100644 index 0000000..18e31df --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationconsumable/NurseStationConsumableMapper.java @@ -0,0 +1,73 @@ +package com.xinelu.manage.mapper.nursestationconsumable; + + +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import com.xinelu.manage.dto.nursestationconsumable.NurseStationConsumableImportlDTO; +import com.xinelu.manage.vo.nursestationconsumable.NurseStationConsumableVO; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 护理站耗材信息Mapper接口 + * + * @author 纪寒 + * @date 2022-09-05 + */ +public interface NurseStationConsumableMapper { + /** + * 查询护理站耗材信息 + * + * @param id 护理站耗材信息主键 + * @return 护理站耗材信息 + */ + NurseStationConsumableVO selectNurseStationConsumableById(Long id); + + /** + * 查询护理站耗材信息列表 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 护理站耗材信息集合 + */ + List selectNurseStationConsumableList(NurseStationConsumable nurseStationConsumable); + + /** + * 查询耗材信息 + * + * @param nurseStationNameList 护理站名称集合 + * @return 耗材信息集合 + */ + List selectConsumableInfoList(@Param("nurseStationNameList") List nurseStationNameList); + + /** + * 新增护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + */ + int insertNurseStationConsumable(List nurseStationConsumable); + + /** + * 修改护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + */ + int updateNurseStationConsumable(NurseStationConsumable nurseStationConsumable); + + /** + * 删除护理站耗材信息 + * + * @param id 护理站耗材信息主键 + * @return 结果 + */ + int deleteNurseStationConsumableById(Long id); + + /** + * 批量删除护理站耗材信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteNurseStationConsumableByIds(Long[] ids); +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/INurseStationConsumableService.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/INurseStationConsumableService.java new file mode 100644 index 0000000..1b88e9d --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/INurseStationConsumableService.java @@ -0,0 +1,75 @@ +package com.xinelu.manage.service.nursestationconsumable; + + +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import com.xinelu.manage.dto.nursestationconsumable.NurseStationConsumableImportlDTO; +import com.xinelu.manage.vo.nursestationconsumable.NurseStationConsumableVO; + +import java.util.List; + +/** + * 护理站耗材信息Service接口 + * + * @author 纪寒 + * @date 2022-09-05 + */ +public interface INurseStationConsumableService { + /** + * 查询护理站耗材信息 + * + * @param id 护理站耗材信息主键 + * @return 护理站耗材信息 + */ + NurseStationConsumableVO selectNurseStationConsumableById(Long id); + + /** + * 查询护理站耗材信息列表 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 护理站耗材信息集合 + */ + List selectNurseStationConsumableList(NurseStationConsumable nurseStationConsumable); + + /** + * 新增护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + * @throws Exception 异常处理 + */ + AjaxResult insertNurseStationConsumable(List nurseStationConsumable) throws Exception; + + /** + * 导入护理站耗材信息列表 + * + * @param nurseStationConsumableImport 护理站耗材信息列表 + * @return AjaxResult + * @throws Exception 异常处理 + */ + AjaxResult importData(List nurseStationConsumableImport) throws Exception; + + /** + * 修改护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + */ + int updateNurseStationConsumable(NurseStationConsumable nurseStationConsumable); + + /** + * 批量删除护理站耗材信息 + * + * @param ids 需要删除的护理站耗材信息主键集合 + * @return 结果 + */ + int deleteNurseStationConsumableByIds(Long[] ids); + + /** + * 删除护理站耗材信息信息 + * + * @param id 护理站耗材信息主键 + * @return 结果 + */ + int deleteNurseStationConsumableById(Long id); +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/impl/NurseStationConsumableServiceImpl.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/impl/NurseStationConsumableServiceImpl.java new file mode 100644 index 0000000..e8c6c70 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/service/nursestationconsumable/impl/NurseStationConsumableServiceImpl.java @@ -0,0 +1,180 @@ +package com.xinelu.manage.service.nursestationconsumable.impl; + +import com.xinelu.manage.domain.nursestation.NurseStation; +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import com.xinelu.manage.dto.nursestationconsumable.NurseStationConsumableImportlDTO; +import com.xinelu.manage.mapper.nursestation.NurseStationMapper; +import com.xinelu.manage.mapper.nursestationconsumable.NurseStationConsumableMapper; +import com.xinelu.manage.service.nursestationconsumable.INurseStationConsumableService; +import com.xinelu.manage.vo.nursestationconsumable.NurseStationConsumableVO; +import com.xinelu.common.constant.Constants; +import com.xinelu.common.core.domain.AjaxResult; +import com.xinelu.common.core.domain.model.LoginUser; +import com.xinelu.common.utils.SecurityUtils; +import com.xinelu.common.utils.bean.BeanUtils; +import com.xinelu.common.utils.codes.GenerateSystemCodeUtil; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.*; +import java.util.stream.Collectors; + + +/** + * 护理站耗材信息Service业务层处理 + * + * @author 纪寒 + * @date 2022-09-05 + */ +@Service +public class NurseStationConsumableServiceImpl implements INurseStationConsumableService { + @Resource + private NurseStationConsumableMapper nurseStationConsumableMapper; + @Resource + private GenerateSystemCodeUtil generateSystemCodeUtil; + @Resource + private NurseStationMapper nurseStationMapper; + + /** + * 查询护理站耗材信息 + * + * @param id 护理站耗材信息主键 + * @return 护理站耗材信息 + */ + @Override + public NurseStationConsumableVO selectNurseStationConsumableById(Long id) { + return nurseStationConsumableMapper.selectNurseStationConsumableById(id); + } + + /** + * 查询护理站耗材信息列表 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 护理站耗材信息 + */ + @Override + public List selectNurseStationConsumableList(NurseStationConsumable nurseStationConsumable) { + return nurseStationConsumableMapper.selectNurseStationConsumableList(nurseStationConsumable); + } + + /** + * 新增护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult insertNurseStationConsumable(List nurseStationConsumable) throws Exception { + LoginUser loginUser = SecurityUtils.getLoginUser(); + for (NurseStationConsumable stationConsumable : nurseStationConsumable) { + stationConsumable.setCreateBy(SecurityUtils.getUsername()); + stationConsumable.setCreateTime(LocalDateTime.now()); + stationConsumable.setUserId(loginUser.getUserId()); + stationConsumable.setConsumableCode(Constants.STATION_CONSUMABLE + generateSystemCodeUtil.generateSystemCode(Constants.STATION_CONSUMABLE)); + } + int i = nurseStationConsumableMapper.insertNurseStationConsumable(nurseStationConsumable); + if (i <= 0) { + throw new Exception("新增护理站耗材信息失败, 请联系管理员!"); + } + return AjaxResult.success(); + } + + /** + * 导入护理站耗材信息列表 + * + * @param list 输入参数 + * @return 导入数据 + */ + @Transactional(rollbackFor = Exception.class) + @Override + public AjaxResult importData(List list) throws Exception { + //获取当前用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (CollectionUtils.isEmpty(list)) { + AjaxResult.error("请添加护理站耗材导入数据!"); + } + //获取护理站的名称 + List stationNameList = list.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getNurseStationName())).map(NurseStationConsumableImportlDTO::getNurseStationName).distinct().collect(Collectors.toList()); + //获取所有的耗材信息 + List nurseStationItemVo = nurseStationConsumableMapper.selectConsumableInfoList(stationNameList); + //求出差集,进行新增 + Collection subtractList = CollectionUtils.subtract(list, nurseStationItemVo); + //求出并集,重复数据 + Collection intersectionList = CollectionUtils.intersection(list, nurseStationItemVo); + //如果差集为null直接返回 + if (CollectionUtils.isEmpty(subtractList)) { + Map> map = new HashMap<>(); + map.put("successList", subtractList); + map.put("failList", intersectionList); + return AjaxResult.success(map); + } + //获取到所有的护理站信息 + List nurseStations = nurseStationMapper.selectNurseStationListByNames(stationNameList); + Map nurseStationLabelMap = nurseStations.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getNurseStationName())).collect(Collectors.toMap(NurseStation::getNurseStationName, NurseStation::getId)); + //设置护理站id + list.forEach(item -> item.setNurseStationId(nurseStationLabelMap.getOrDefault(item.getNurseStationName(), 0L))); + //集合 + List nurseStationConsumables = new ArrayList<>(); + //添加创建时间/护理站编号/判断如果没有护理站信息,添加0L + subtractList.forEach(item -> { + //设置编号 + item.setConsumableCode(Constants.STATION_CONSUMABLE + generateSystemCodeUtil.generateSystemCode(Constants.STATION_CONSUMABLE)); + item.setCreateTime(LocalDateTime.now()); + item.setUserId(loginUser.getUserId()); + //如果查找不到护理站id 就存0L + if (item.getNurseStationId() == null) { + item.setNurseStationId(0L); + } + NurseStationConsumable nurseStationConsumable = new NurseStationConsumable(); + BeanUtils.copyProperties(item, nurseStationConsumable); + nurseStationConsumables.add(nurseStationConsumable); + }); + int i = nurseStationConsumableMapper.insertNurseStationConsumable(nurseStationConsumables); + if (i <= 0) { + throw new Exception("护理站耗材信息导入失败,请联系管理员!"); + } + Map> map = new HashMap<>(); + map.put("successList", subtractList); + map.put("failList", intersectionList); + return AjaxResult.success(map); + } + + /** + * 修改护理站耗材信息 + * + * @param nurseStationConsumable 护理站耗材信息 + * @return 结果 + */ + @Override + public int updateNurseStationConsumable(NurseStationConsumable nurseStationConsumable) { + nurseStationConsumable.setUpdateBy(SecurityUtils.getUsername()); + nurseStationConsumable.setUpdateTime(LocalDateTime.now()); + return nurseStationConsumableMapper.updateNurseStationConsumable(nurseStationConsumable); + } + + /** + * 批量删除护理站耗材信息 + * + * @param ids 需要删除的护理站耗材信息主键 + * @return 结果 + */ + @Override + public int deleteNurseStationConsumableByIds(Long[] ids) { + return nurseStationConsumableMapper.deleteNurseStationConsumableByIds(ids); + } + + /** + * 删除护理站耗材信息信息 + * + * @param id 护理站耗材信息主键 + * @return 结果 + */ + @Override + public int deleteNurseStationConsumableById(Long id) { + return nurseStationConsumableMapper.deleteNurseStationConsumableById(id); + } +} diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationconsumable/NurseStationConsumableVO.java b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationconsumable/NurseStationConsumableVO.java new file mode 100644 index 0000000..75f2e28 --- /dev/null +++ b/xinelu-nurse-manage/src/main/java/com/xinelu/manage/vo/nursestationconsumable/NurseStationConsumableVO.java @@ -0,0 +1,19 @@ +package com.xinelu.manage.vo.nursestationconsumable; + +import com.xinelu.common.annotation.Excel; +import com.xinelu.manage.domain.nursestationconsumable.NurseStationConsumable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author wanghao + * @create 2022/9/14 0014 + */ +@EqualsAndHashCode(callSuper = true) +@Data +public class NurseStationConsumableVO extends NurseStationConsumable { + private static final long serialVersionUID = -4554444945316565353L; + + @Excel(name = "护理站名称") + private String nurseStationName; +} \ No newline at end of file diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml similarity index 98% rename from xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml rename to xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml index e9854c3..bf61ef5 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationclassifyrelation/NurseStationClassifyRelationMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationconsumable/NurseStationConsumableMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationconsumable/NurseStationConsumableMapper.xml new file mode 100644 index 0000000..3a70817 --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationconsumable/NurseStationConsumableMapper.xml @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + select id, + nurse_station_id, + user_id, + consumable_code, + consumable_detail, + consumable_unit, + consumable_price, + sort, + create_by, + create_time, + update_by, + update_time + from nurse_station_consumable + + + + + + + + INSERT INTO + nurse_station_consumable(nurse_station_id, user_id, consumable_code, + consumable_detail,consumable_unit,consumable_price, sort, create_by, create_time, update_by, update_time) + VALUES + + ( + #{productCategory.nurseStationId}, + #{productCategory.userId}, + #{productCategory.consumableCode}, + #{productCategory.consumableDetail}, + #{productCategory.consumableUnit}, + #{productCategory.consumablePrice}, + #{productCategory.sort}, + #{productCategory.createBy}, + #{productCategory.createTime}, + #{productCategory.updateBy}, + #{productCategory.updateTime} + ) + + + + + update nurse_station_consumable + + nurse_station_id = + #{nurseStationId}, + + user_id = + #{userId}, + + consumable_code = + #{consumableCode}, + + consumable_detail = + #{consumableDetail}, + + consumable_unit = + #{consumableUnit}, + + consumable_price = + #{consumablePrice}, + + sort = + #{sort}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete + from nurse_station_consumable + where id = #{id} + + + + delete from nurse_station_consumable where id in + + #{id} + + + + diff --git a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationlabel/NurseStationLabelMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationlabel/NurseStationLabelMapper.xml similarity index 99% rename from xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationlabel/NurseStationLabelMapper.xml rename to xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationlabel/NurseStationLabelMapper.xml index d0fc2b9..6a44ca3 100644 --- a/xinelu-nurse-manage/src/main/java/com/xinelu/manage/mapper/nursestationlabel/NurseStationLabelMapper.xml +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationlabel/NurseStationLabelMapper.xml @@ -2,7 +2,7 @@ - + diff --git a/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersoncheck/NurseStationPersonCheckMapper.xml b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersoncheck/NurseStationPersonCheckMapper.xml new file mode 100644 index 0000000..20bc0ad --- /dev/null +++ b/xinelu-nurse-manage/src/main/resources/mapper/manage/nursestationpersoncheck/NurseStationPersonCheckMapper.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + select id, + nurse_station_person_id, + certificate_name, + certificate_code, + certificate_url, + create_by, + create_time, + update_by, + update_time + from nurse_station_person_check + + + + + + + + insert into nurse_station_person_check + + nurse_station_person_id, + + certificate_name, + + certificate_code, + + certificate_url, + + create_by, + + create_time, + + update_by, + + update_time, + + + + #{nurseStationPersonId}, + + #{certificateName}, + + #{certificateCode}, + + #{certificateUrl}, + + #{createBy}, + + #{createTime}, + + #{updateBy}, + + #{updateTime}, + + + + + + update nurse_station_person_check + + nurse_station_person_id = + #{nurseStationPersonId}, + + certificate_name = + #{certificateName}, + + certificate_code = + #{certificateCode}, + + certificate_url = + #{certificateUrl}, + + create_by = + #{createBy}, + + create_time = + #{createTime}, + + update_by = + #{updateBy}, + + update_time = + #{updateTime}, + + + where id = #{id} + + + + delete + from nurse_station_person_check + where id = #{id} + + + + delete from nurse_station_person_check where id in + + #{id} + + + + + insert into nurse_station_person_check( + nurse_station_person_id, + certificate_name, + certificate_code, + certificate_url, + sort, + create_by, + create_time, + update_by, + update_time + ) values + + ( + #{NurseStationPersonCheck.nurseStationPersonId}, + #{NurseStationPersonCheck.certificateName}, + #{NurseStationPersonCheck.certificateCode}, + #{NurseStationPersonCheck.certificateUrl}, + #{NurseStationPersonCheck.sort}, + #{NurseStationPersonCheck.createBy}, + #{NurseStationPersonCheck.createTime}, + #{NurseStationPersonCheck.updateBy}, + #{NurseStationPersonCheck.updateTime} + ) + + + \ No newline at end of file