护理项目代码移植修改

This commit is contained in:
张恒 2023-09-20 17:38:09 +08:00
parent 1a9d2eedd5
commit 444d1f8400
21 changed files with 2364 additions and 2 deletions

View File

@ -0,0 +1,38 @@
package com.xinelu.common.enums;
import lombok.Getter;
/**
* @Description 时间间隔枚举类型
* @Author 纪寒
* @Date 2023-02-14 15:39:05
* @Version 1.0
*/
@Getter
public enum AppointmentTimeIntervalEnum {
/**
* 半小时
*/
HALF_HOUR("HALF_HOUR"),
/**
* 一小时
*/
ONE_HOUR("ONE_HOUR"),
/**
* 九十分钟
*/
NINETY_MINUTES("NINETY_MINUTES"),
/**
* 两小时
*/
TWO_HOUR("TWO_HOUR"),
;
final private String value;
AppointmentTimeIntervalEnum(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,29 @@
package com.xinelu.common.enums;
import lombok.Getter;
/**
* 护理机构和护理项目分类信息类型
*
* @author zh
*/
@Getter
public enum NurseStationItemShelfStatusEnum {
/**
* 未上架
*/
NOT_SHELF("NOT_SHELF"),
/**
* 已上架
*/
SHELF("SHELF"),
;
final private String info;
NurseStationItemShelfStatusEnum(String info) {
this.info = info;
}
}

View File

@ -0,0 +1,106 @@
package com.xinelu.manage.domain.nursestationItemconsumable;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
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_item_consumable
*
* @author 纪寒
* @date 2022-09-05
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "护理站护理项目耗材关系对象", description = "nurse_station_item_consumable")
public class NurseStationItemConsumable extends BaseDomain implements Serializable {
private static final long serialVersionUID = -8964840167749631395L;
/**
* 主键id
*/
private Long id;
/**
* 护理站护理项目表id
*/
@ApiModelProperty(value = "护理站护理项目表id")
@Excel(name = "护理站护理项目表id")
@NotNull(message = "护理站护理项目表id不能为空", groups = {Update.class})
private Long nurseStationItemId;
/**
* 护理站耗材信息表id
*/
@ApiModelProperty(value = "护理站耗材信息表id")
@Excel(name = "护理站耗材信息表id")
@NotNull(message = "护理站耗材信息表id不能为空", groups = {Insert.class, Update.class})
private Long nurseStationConsumableId;
/**
* 耗材包详情
*/
@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 Integer consumableCount;
/**
* 耗材价格
*/
@ApiModelProperty(value = "耗材价格")
@Excel(name = "耗材价格")
@NotNull(message = "耗材价格不能为空", groups = {Insert.class, Update.class})
private BigDecimal consumablePrice;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("nurseStationItemId", getNurseStationItemId())
.append("nurseStationConsumableId", getNurseStationConsumableId())
.append("consumableCount", getConsumableCount())
.append("consumablePrice", getConsumablePrice())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,98 @@
package com.xinelu.manage.domain.nursestationitemprice;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import com.xinelu.common.custominterface.Update;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
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_item_price
*
* @author ljh
* @date 2022-09-02
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "护理站护理项目价格对象", description = "nurse_station_item_price")
public class NurseStationItemPrice extends BaseDomain implements Serializable {
private static final long serialVersionUID = 4911452368843523048L;
/**
* 主键id
*/
private Long id;
/**
* 护理站项目表id
*/
@ApiModelProperty(value = "护理站项目表id")
@Excel(name = "护理站项目表id")
@NotNull(message = "护理站项目表id不能为空", groups = {Update.class})
private Long nurseStationItemId;
/**
* 服务时长和单位
*/
@ApiModelProperty(value = "服务时长和单位")
@Excel(name = "服务时长和单位")
@NotNull(message = "服务时长和单位不能为空", groups = {Insert.class, Update.class})
@Length(max = 50, message = "服务时长和单位不能超过50个字符", groups = {Insert.class, Update.class})
private String serveDurationUnit;
/**
* 价格
*/
@ApiModelProperty(value = "价格")
@Excel(name = "价格")
@NotNull(message = "价格不能为空", groups = {Insert.class, Update.class})
private BigDecimal price;
/**
* 描述
*/
@ApiModelProperty(value = "描述")
@Excel(name = "描述")
@NotNull(message = "描述不能为空", groups = {Insert.class, Update.class})
@Length(max = 300, message = "描述不能超过300个字符", groups = {Insert.class, Update.class})
private String description;
/**
* 护理项目佣金金额
*/
private BigDecimal commissionAmount;
/**
* 护理项目佣金比例此处存储比例数字不存储比例单位
*/
private BigDecimal commissionRate;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("nurseStationItemId", getNurseStationItemId())
.append("serveDurationUnit", getServeDurationUnit())
.append("price", getPrice())
.append("description", getDescription())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,42 @@
package com.xinelu.manage.dto.nursestationitem;
import com.xinelu.manage.domain.nursestationItemconsumable.NurseStationItemConsumable;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.domain.nursestationitemprice.NurseStationItemPrice;
import lombok.Data;
import javax.validation.Valid;
import java.io.Serializable;
import java.util.List;
/**
* @author wanghao
* @create 2022/9/9 0009
*/
@Data
public class NurseStationItemDTO implements Serializable {
private static final long serialVersionUID = -4237656620829263845L;
/**
* 护理类型信息对象集合
**/
@Valid
private List<NurseStationItem> nurseStationItemList;
/**
* 护理站项目信息
*/
@Valid
private NurseStationItem nurseStationItem;
/**
* 护理站护理项目耗材关系表
*/
private List<NurseStationItemConsumable> nurseStationItemConsumables;
/**
* 护理站护理项目价格表
*/
@Valid
private List<NurseStationItemPrice> nurseStationItemPrices;
}

View File

@ -0,0 +1,91 @@
package com.xinelu.manage.dto.nursestationitem;
import com.xinelu.common.annotation.Excel;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Objects;
/**
* @author wanghao
* @create 2022/9/15 0015
*/
@Data
public class NurseStationItemImportDTO implements Serializable {
private static final long serialVersionUID = 7168583453881428868L;
/**
* 护理站名称
*/
@Excel(name = "护理站名称")
private String nurseStationName;
/**
* 护理类型名称
*/
private String nurseTypeName;
/**
* 护理项目名称
*/
@Excel(name = "护理项目名称")
private String nurseItemName;
/**
* 护理项目内容简介
*/
@Excel(name = "护理项目内容简介")
private String nurseItemContent;
/**
* 提前预约时长
*/
@Excel(name = "提前预约时长")
private String advanceAppointDuration;
/**
* 服务时长/计量单位
*/
@Excel(name = "服务时长/计量单位")
private String serveDurationUnit;
/**
* 价格
*/
@Excel(name = "价格")
private BigDecimal price;
/**
* 描述
*/
@Excel(name = "描述")
private String description;
/**
* 护理站id
*/
private Long nurseStationId;
/**
* 护理项目id
*/
private Long nurseStationItemId;
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
NurseStationItemImportDTO that = (NurseStationItemImportDTO) o;
return Objects.equals(nurseStationName, that.nurseStationName) && Objects.equals(nurseItemName, that.nurseItemName) && Objects.equals(serveDurationUnit, that.serveDurationUnit);
}
@Override
public int hashCode() {
return Objects.hash(nurseStationName, nurseItemName, serveDurationUnit);
}
}

View File

@ -0,0 +1,79 @@
package com.xinelu.manage.mapper.nursestationItemconsumable;
import com.xinelu.manage.domain.nursestationItemconsumable.NurseStationItemConsumable;
import com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO;
import java.util.List;
/**
* 护理站护理项目耗材关系Mapper接口
*
* @author 纪寒
* @date 2022-09-05
*/
public interface NurseStationItemConsumableMapper {
/**
* 查询护理站护理项目耗材关系
*
* @param id 护理站护理项目耗材关系主键
* @return 护理站护理项目耗材关系
*/
NurseStationItemConsumableVO selectNurseStationItemConsumableById(Long id);
/**
* 查询护理站护理项目耗材关系列表
*
* @param nurseStationItemConsumable 护理站护理项目耗材关系
* @return 护理站护理项目耗材关系集合
*/
List<NurseStationItemConsumableVO> selectNurseStationItemConsumableList(NurseStationItemConsumable nurseStationItemConsumable);
/**
* 新增护理站护理项目耗材关系
*
* @param nurseStationItemConsumable 护理站护理项目耗材关系
* @return 结果
*/
int insertNurseStationItemConsumable(List<NurseStationItemConsumable> nurseStationItemConsumable);
/**
* 修改护理站护理项目耗材关系
*
* @param nurseStationItemConsumable 护理站护理项目耗材关系
* @return 结果
*/
int updateNurseStationItemConsumable(NurseStationItemConsumable nurseStationItemConsumable);
/**
* 根据主键id删除护理站护理项目耗材关系
*
* @param id 护理站护理项目耗材关系主键
* @return 结果
*/
int deleteNurseStationItemConsumableById(Long id);
/**
* 根据护理项目id删除护理项目耗材信息
*
* @param id 护理项目id
* @return 数量
*/
int deleteNurseStationItemConsumableByItemId(Long id);
/**
* 批量删除护理站护理项目耗材关系
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteNurseStationItemConsumableByIds(Long[] ids);
/**
* 根据护理项目id批量删除护理项目耗材信息
*
* @param ids 护理项目id集合
* @return 数量
*/
int deleteNurseStationItemConsumableByItemIds(Long[] ids);
}

View File

@ -0,0 +1,108 @@
package com.xinelu.manage.mapper.nursestationitem;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemInfoDetailsVO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 护理站护理项目Mapper接口
*
* @author ljh
* @date 2022-09-02
*/
public interface NurseStationItemMapper {
/**
* 查询护理站护理项目
*
* @param id 护理站护理项目主键
* @return 护理站护理项目
*/
NurseStationItemVO selectNurseStationItemById(Long id);
/**
* 查询护理站护理项目列表
*
* @param nurseStationItem 护理站护理项目
* @return 护理站护理项目集合
*/
List<NurseStationItemVO> selectNurseStationItemList(NurseStationItem nurseStationItem);
/**
* 查询所有护理项目信息列表
*
* @return 护理站护理项目集合
*/
List<NurseStationItemImportDTO> selectItemInfoList(@Param("nurseStationIdList") List<String> nurseStationIdList);
/**
* 新增护理站护理项目
*
* @param nurseStationItem 护理站护理项目
* @return 结果
*/
int insertNurseStationItem(NurseStationItem nurseStationItem);
/**
* 修改护理站护理项目
*
* @param nurseStationItem 护理站护理项目
* @return 结果
*/
int updateNurseStationItem(NurseStationItem nurseStationItem);
/**
* 删除护理站护理项目
*
* @param id 护理站护理项目主键
* @return 结果
*/
int deleteNurseStationItemById(Long id);
/**
* 批量删除护理站护理项目
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteNurseStationItemByIds(Long[] ids);
/**
* 查询护理站护理项目
*
* @param nurseStationItemIdsList 护理站护理项目主键
* @return 护理站护理项目
*/
List<NurseStationItem> getNurseStationItemByIds(@Param("nurseStationItemIdsList") List<Long> nurseStationItemIdsList);
/**
* 查询护理站护理项目
*
* @param id 护理站护理项目主键
* @return 护理站护理项目
*/
NurseStationItemInfoDetailsVO selectNurseStationItemInfoVO(Long id);
/**
* 根据护理项目id查询护理项目信息
*
* @param itemId 护理项目id
* @return 护理项目信息
*/
NurseStationItem getNurseStationItemById(Long itemId);
/**
* 护理项目修改上架状态
*
* @param id 项目id
* @param shelfStatus 上架状态
* @return int
*/
int updateShelfStatusById(@Param("id") Long id, @Param("shelfStatus") String shelfStatus);
}

View File

@ -0,0 +1,86 @@
package com.xinelu.manage.mapper.nursestationitemprice;
import com.xinelu.manage.domain.nursestationitemprice.NurseStationItemPrice;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 护理站护理项目价格Mapper接口
*
* @author ljh
* @date 2022-09-02
*/
public interface NurseStationItemPriceMapper {
/**
* 查询护理站护理项目价格
*
* @param id 护理站护理项目价格主键
* @return 护理站护理项目价格
*/
NurseStationItemPrice selectNurseStationItemPriceById(Long id);
/**
* 查询护理站护理项目价格列表
*
* @param nurseStationItemPrice 护理站护理项目价格
* @return 护理站护理项目价格集合
*/
List<NurseStationItemPrice> selectNurseStationItemPriceList(NurseStationItemPrice nurseStationItemPrice);
/**
* 新增护理站护理项目价格
*
* @param nurseStationItemPrice 护理站护理项目价格
* @return 结果
*/
int insertNurseStationItemPrice(List<NurseStationItemPrice> nurseStationItemPrice);
/**
* 修改护理站护理项目价格
*
* @param nurseStationItemPrice 护理站护理项目价格
* @return 结果
*/
int updateNurseStationItemPrice(NurseStationItemPrice nurseStationItemPrice);
/**
* 根据id删除护理站护理项目价格
*
* @param id 护理站护理项目价格主键
* @return 结果
*/
int deleteNurseStationItemPriceById(Long id);
/**
* 根据护理项目id删除护理项目价格
*
* @param id 护理项目id
* @return 数量
*/
int deleteNurseStationItemPriceByItemId(Long id);
/**
* 批量删除护理站护理项目价格
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteNurseStationItemPriceByIds(Long[] ids);
/**
* 根据护理项目id批量删除护理站护理项目价格
*
* @param ids 护理项目id集合
* @return 数量
*/
int deleteNurseStationItemPriceByItemIds(Long[] ids);
/**
* 获取护理站项目对应价格的信息
*
* @param idList 护理项目id集合
* @return 护理站项目价格集合
**/
List<NurseStationItemPrice> getNurseStationItemPriceByList(@Param("idList") List<Long> idList);
}

View File

@ -0,0 +1,84 @@
package com.xinelu.manage.service.nursestationitem;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemDTO;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemInfoVO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemVO;
import java.util.List;
/**
* 护理站护理项目Service接口
*
* @author ljh
* @date 2022-09-02
*/
public interface INurseStationItemService {
/**
* 查询护理站护理项目
*
* @param id 护理站护理项目主键
* @return 护理站护理项目
*/
NurseStationItemInfoVO selectNurseStationItemById(Long id);
/**
* 查询护理站护理项目列表
*
* @param nurseStationItem 护理站护理项目
* @return 护理站护理项目集合
*/
List<NurseStationItemVO> selectNurseStationItemList(NurseStationItem nurseStationItem);
/**
* 新增护理站护理项目
*
* @param nurseStationItem 护理站护理项目
* @return 结果
*/
AjaxResult insertNurseStationItem(NurseStationItemDTO nurseStationItem);
/**
* 修改护理站护理项目
*
* @param nurseStationItem 护理站护理项目
* @return 结果
*/
AjaxResult updateNurseStationItem(NurseStationItemDTO nurseStationItem);
/**
* 批量删除护理站护理项目
*
* @param ids 需要删除的护理站护理项目主键集合
* @return 结果
*/
AjaxResult deleteNurseStationItemByIds(Long[] ids);
/**
* 护理站护理项目信息导入
*
* @param nurseStationConsumableImport 护理站护理项目
* @return 结果
*/
AjaxResult importData(List<NurseStationItemImportDTO> nurseStationConsumableImport);
/**
* 删除护理站图片地址
*
* @param pictureUrl 护理站图片地址
**/
void deletePictureUrl(String pictureUrl);
/**
* 护理项目上下架状态
*
* @param id 护理项目id
* @param shelfStatus 上架状态
* @return AjaxResult
*/
AjaxResult updateShelfStatus(Long id, String shelfStatus);
}

View File

@ -0,0 +1,519 @@
package com.xinelu.manage.service.nursestationitem.impl;
import com.xinelu.common.config.XinELuConfig;
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.enums.AppointmentTimeIntervalEnum;
import com.xinelu.common.enums.NurseStationItemShelfStatusEnum;
import com.xinelu.common.exception.ServiceException;
import com.xinelu.common.utils.SecurityUtils;
import com.xinelu.common.utils.bean.BeanUtils;
import com.xinelu.common.utils.codes.GenerateSystemCodeUtil;
import com.xinelu.common.utils.file.FileUtils;
import com.xinelu.manage.domain.nursestation.NurseStation;
import com.xinelu.manage.domain.nursestationItemconsumable.NurseStationItemConsumable;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.domain.nursestationitemprice.NurseStationItemPrice;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemDTO;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO;
import com.xinelu.manage.mapper.nursestation.NurseStationMapper;
import com.xinelu.manage.mapper.nursestationItemconsumable.NurseStationItemConsumableMapper;
import com.xinelu.manage.mapper.nursestationitem.NurseStationItemMapper;
import com.xinelu.manage.mapper.nursestationitemprice.NurseStationItemPriceMapper;
import com.xinelu.manage.service.nursestationitem.INurseStationItemService;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemImportVO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemInfoDetailsVO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemInfoVO;
import com.xinelu.manage.vo.nursestationitem.NurseStationItemVO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang3.BooleanUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.File;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
import static com.xinelu.common.utils.PageUtils.startPage;
/**
* 护理站护理项目Service业务层处理
*
* @author ljh
* @date 2022-09-02
*/
@Service
public class NurseStationItemServiceImpl implements INurseStationItemService {
@Resource
private NurseStationItemMapper nurseStationItemMapper;
@Resource
private NurseStationItemConsumableMapper nurseStationItemConsumableMapper;
@Resource
private NurseStationItemPriceMapper nurseStationItemPriceMapper;
@Resource
private GenerateSystemCodeUtil generateSystemCodeUtil;
@Resource
private NurseStationMapper nurseStationMapper;
/**
* 护理项目每个时间点的预约人数上限
*/
private static final int APPOINTMENT_LIMIT_COUNT = 0;
/**
* 查询护理站护理项目
*
* @param id 护理站护理项目主键
* @return 护理站护理项目
*/
@Override
public NurseStationItemInfoVO selectNurseStationItemById(Long id) {
NurseStationItemInfoVO nurseStationItemInfo = new NurseStationItemInfoVO();
NurseStationItemInfoDetailsVO nurseStationItem = nurseStationItemMapper.selectNurseStationItemInfoVO(id);
if (Objects.isNull(nurseStationItem)) {
return nurseStationItemInfo;
}
NurseStationItemVO nurseStationItemVO = new NurseStationItemVO();
nurseStationItemVO.setId(Objects.isNull(nurseStationItem.getId()) ? null : nurseStationItem.getId());
nurseStationItemVO.setNurseStationId(Objects.isNull(nurseStationItem.getNurseStationId()) ? null : nurseStationItem.getNurseStationId());
nurseStationItemVO.setNurseItemName(StringUtils.isBlank(nurseStationItem.getNurseItemName()) ? "" : nurseStationItem.getNurseItemName());
nurseStationItemVO.setNurseItemCode(StringUtils.isBlank(nurseStationItem.getNurseItemCode()) ? "" : nurseStationItem.getNurseItemCode());
nurseStationItemVO.setNurseStationName(StringUtils.isBlank(nurseStationItem.getNurseStationName()) ? "" : nurseStationItem.getNurseStationName());
nurseStationItemVO.setNurseItemContent(StringUtils.isBlank(nurseStationItem.getNurseItemContent()) ? "" : nurseStationItem.getNurseItemContent());
nurseStationItemVO.setItemPictureUrl(StringUtils.isBlank(nurseStationItem.getItemPictureUrl()) ? "" : nurseStationItem.getItemPictureUrl());
nurseStationItemVO.setAdvanceAppointDuration(StringUtils.isBlank(nurseStationItem.getAdvanceAppointDuration()) ? "" : nurseStationItem.getAdvanceAppointDuration());
nurseStationItemVO.setSort(Objects.isNull(nurseStationItem.getSort()) ? null : nurseStationItem.getSort());
nurseStationItemVO.setNurseClassifyId(Objects.isNull(nurseStationItem.getNurseClassifyId()) ? null : nurseStationItem.getNurseClassifyId());
nurseStationItemVO.setClassifyName(StringUtils.isBlank(nurseStationItem.getClassifyName()) ? "" : nurseStationItem.getClassifyName());
nurseStationItemVO.setAppointmentLimitCount(Objects.isNull(nurseStationItem.getAppointmentLimitCount()) ? null : nurseStationItem.getAppointmentLimitCount());
nurseStationItemVO.setAppointmentTimeInterval(StringUtils.isBlank(nurseStationItem.getAppointmentTimeInterval()) ? "" : nurseStationItem.getAppointmentTimeInterval());
nurseStationItemVO.setShelfStatus(StringUtils.isBlank(nurseStationItem.getShelfStatus()) ? "" : nurseStationItem.getShelfStatus());
nurseStationItemInfo.setNurseStationItem(nurseStationItemVO);
if (CollectionUtils.isNotEmpty(nurseStationItem.getNurseStationItemConsumables())) {
nurseStationItemInfo.setNurseStationItemConsumables(nurseStationItem.getNurseStationItemConsumables());
}
if (CollectionUtils.isNotEmpty(nurseStationItem.getNurseStationItemPrices())) {
nurseStationItemInfo.setNurseStationItemPrices(nurseStationItem.getNurseStationItemPrices());
}
return nurseStationItemInfo;
}
/**
* 查询护理站护理项目列表
*
* @param nurseStationItem 护理站护理项目
* @return 护理站护理项目
*/
@Override
public List<NurseStationItemVO> selectNurseStationItemList(NurseStationItem nurseStationItem) {
//查询所有的项目进行
startPage();
List<NurseStationItemVO> nurseStationItemList = nurseStationItemMapper.selectNurseStationItemList(nurseStationItem);
//获取护理站项目的id
List<Long> idList = nurseStationItemList.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getId())).map(NurseStationItemVO::getId).distinct().collect(Collectors.toList());
//根据护理站项目的id去查找所有的项目价格表
List<NurseStationItemPrice> nurseStationItemPriceByList = nurseStationItemPriceMapper.getNurseStationItemPriceByList(idList);
if (CollectionUtils.isEmpty(nurseStationItemPriceByList)) {
return nurseStationItemList;
}
Map<Long, List<NurseStationItemPrice>> nurseStationItemPriceMap = nurseStationItemPriceByList.stream().filter(Objects::nonNull).filter(item -> Objects.nonNull(item.getNurseStationItemId())).collect(Collectors.groupingBy(NurseStationItemPrice::getNurseStationItemId));
nurseStationItemList.forEach(item -> item.setNurseStationItemPrices(nurseStationItemPriceMap.getOrDefault(Objects.isNull(item.getId()) ? 0L : item.getId(), Lists.newArrayList())));
return nurseStationItemList;
}
/**
* 新增护理站护理项目
*
* @param nurseStationItemDTO 护理站护理项目
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public AjaxResult insertNurseStationItem(NurseStationItemDTO nurseStationItemDTO) {
//判断护理站项目价额是否为负数
AjaxResult ajaxResult = judgePriceInfo(nurseStationItemDTO);
if (Objects.nonNull(ajaxResult)) {
return ajaxResult;
}
LoginUser loginUser = SecurityUtils.getLoginUser();
LocalDateTime now = LocalDateTime.now();
//护理站项目信息
NurseStationItem nurseStationItem = nurseStationItemDTO.getNurseStationItem();
//判断护理项目预约时间点间隔是否为空
if (StringUtils.isBlank(nurseStationItem.getAppointmentTimeInterval())) {
nurseStationItem.setAppointmentTimeInterval(AppointmentTimeIntervalEnum.HALF_HOUR.getValue());
}
//判断护理项目每个时间点的预约人数上限是否为0
if (Objects.nonNull(nurseStationItem.getAppointmentLimitCount()) && nurseStationItem.getAppointmentLimitCount() == APPOINTMENT_LIMIT_COUNT) {
return AjaxResult.error("预约人数上限应该大于零,请重新输入!");
}
nurseStationItem.setCreateTime(now);
nurseStationItem.setCreateBy(loginUser.getUsername());
nurseStationItem.setUserId(loginUser.getUserId());
nurseStationItem.setShelfStatus(NurseStationItemShelfStatusEnum.NOT_SHELF.getInfo());
nurseStationItem.setNurseItemCode(Constants.STATION_ITEM + generateSystemCodeUtil.generateSystemCode(Constants.STATION_ITEM));
int stationItemCount = nurseStationItemMapper.insertNurseStationItem(nurseStationItem);
if (stationItemCount <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目新增失败!");
}
//绑定护理站护理项目id
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemConsumables())) {
for (NurseStationItemConsumable nurseStationItemConsumable : nurseStationItemDTO.getNurseStationItemConsumables()) {
nurseStationItemConsumable.setNurseStationItemId(nurseStationItem.getId());
nurseStationItemConsumable.setCreateTime(now);
nurseStationItemConsumable.setCreateBy(loginUser.getUsername());
}
int itemConsumable = nurseStationItemConsumableMapper.insertNurseStationItemConsumable(nurseStationItemDTO.getNurseStationItemConsumables());
if (itemConsumable <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目耗材新增失败!");
}
}
//绑定护理站护理项目价格
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemPrices())) {
for (NurseStationItemPrice nurseStationItemPrice : nurseStationItemDTO.getNurseStationItemPrices()) {
nurseStationItemPrice.setNurseStationItemId(nurseStationItem.getId());
nurseStationItemPrice.setCreateTime(now);
nurseStationItemPrice.setCreateBy(loginUser.getUsername());
if (Objects.nonNull(nurseStationItemPrice.getCommissionRate())) {
//算出佣金比例
BigDecimal commissionRatePriceMultiply = nurseStationItemPrice.getCommissionRate().multiply(nurseStationItemPrice.getPrice().multiply(BigDecimal.valueOf(0.01))).setScale(2, RoundingMode.HALF_UP);
nurseStationItemPrice.setCommissionAmount(commissionRatePriceMultiply);
}
}
int itemPrice = nurseStationItemPriceMapper.insertNurseStationItemPrice(nurseStationItemDTO.getNurseStationItemPrices());
if (itemPrice <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目价格新增失败!");
}
}
return AjaxResult.success();
}
/**
* 批量修改护理站护理项目
*
* @param nurseStationItemDTO 护理站护理项目
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public AjaxResult updateNurseStationItem(NurseStationItemDTO nurseStationItemDTO) {
//判断护理站项目价额是否为负数
AjaxResult ajaxResult = judgePriceInfo(nurseStationItemDTO);
if (Objects.nonNull(ajaxResult)) {
return ajaxResult;
}
//前端传过来的
NurseStationItem nurseStationItem = nurseStationItemDTO.getNurseStationItem();
//从数据库中查到的
NurseStationItemVO nurseStationItemVO = nurseStationItemMapper.selectNurseStationItemById(nurseStationItem.getId());
if (Objects.isNull(nurseStationItemVO)) {
return AjaxResult.error("当前护理项目信息不存在,无法进行修改,请联系管理员!");
}
LoginUser loginUser = SecurityUtils.getLoginUser();
LocalDateTime now = LocalDateTime.now();
//判断护理项目预约时间点间隔是否为空
if (StringUtils.isBlank(nurseStationItem.getAppointmentTimeInterval())) {
nurseStationItem.setAppointmentTimeInterval(AppointmentTimeIntervalEnum.HALF_HOUR.getValue());
}
//判断护理项目每个时间点的预约人数上限是否为0
if (Objects.nonNull(nurseStationItem.getAppointmentLimitCount()) && nurseStationItem.getAppointmentLimitCount() == APPOINTMENT_LIMIT_COUNT) {
return AjaxResult.error("预约人数上限应该大于零,请重新输入!");
}
int item = nurseStationItemMapper.updateNurseStationItem(nurseStationItem);
if (item <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目修改失败!");
}
//删除护理站护理项目耗材关系
nurseStationItemConsumableMapper.deleteNurseStationItemConsumableByItemId(nurseStationItem.getId());
//护理站耗材表
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemConsumables())) {
for (NurseStationItemConsumable nurseStationItemConsumable : nurseStationItemDTO.getNurseStationItemConsumables()) {
nurseStationItemConsumable.setNurseStationItemId(nurseStationItem.getId());
nurseStationItemConsumable.setCreateTime(now);
nurseStationItemConsumable.setCreateBy(loginUser.getUsername());
}
int itemConsumable = nurseStationItemConsumableMapper.insertNurseStationItemConsumable(nurseStationItemDTO.getNurseStationItemConsumables());
if (itemConsumable <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目耗材修改失败!");
}
}
//删除护理站护理项目绑定的价格
nurseStationItemPriceMapper.deleteNurseStationItemPriceByItemId(nurseStationItem.getId());
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemPrices())) {
for (NurseStationItemPrice nurseStationItemPrice : nurseStationItemDTO.getNurseStationItemPrices()) {
nurseStationItemPrice.setNurseStationItemId(nurseStationItem.getId());
nurseStationItemPrice.setCreateTime(now);
nurseStationItemPrice.setCreateBy(loginUser.getUsername());
if (Objects.nonNull(nurseStationItemPrice.getCommissionRate())) {
//算出佣金比例
BigDecimal commissionRatePriceMultiply = nurseStationItemPrice.getCommissionRate().multiply(nurseStationItemPrice.getPrice().multiply(BigDecimal.valueOf(0.01))).setScale(2, RoundingMode.HALF_UP);
nurseStationItemPrice.setCommissionAmount(commissionRatePriceMultiply);
}
}
//绑定护理站护理项目价格
int itemPrice = nurseStationItemPriceMapper.insertNurseStationItemPrice(nurseStationItemDTO.getNurseStationItemPrices());
if (itemPrice <= 0) {
throw new ServiceException(nurseStationItem.getNurseItemName() + "-" + "护理项目价格修改失败!");
}
}
//删除护理站项目的图片
if (StringUtils.isNotBlank(nurseStationItemVO.getItemPictureUrl()) && StringUtils.isNotBlank(nurseStationItem.getItemPictureUrl()) && !nurseStationItemVO.getItemPictureUrl().equals(nurseStationItem.getItemPictureUrl())) {
this.deletePictureUrl(nurseStationItemVO.getItemPictureUrl());
}
//删除护理站富文本图片
this.deleteNurseStationItemPictureUrl(nurseStationItem, nurseStationItemVO);
return AjaxResult.success();
}
/**
* 批量删除护理站护理项目
*
* @param ids 需要删除的护理站护理项目主键
* @return 结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public AjaxResult deleteNurseStationItemByIds(Long[] ids) {
//根据id查询护理项目的信息 删除护理站项目的图片地址
List<NurseStationItem> nurseStationItemByIds = nurseStationItemMapper.getNurseStationItemByIds(Arrays.asList(ids));
//获取护理项目的图片信息
List<String> itemPictureUrlList = nurseStationItemByIds.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getItemPictureUrl())).map(NurseStationItem::getItemPictureUrl).distinct().collect(Collectors.toList());
//获取护理项目富文本信息
List<String> nurseItemContentList = nurseStationItemByIds.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getNurseItemContent())).map(NurseStationItem::getNurseItemContent).distinct().collect(Collectors.toList());
//删除护理站相关联的项目信息
nurseStationItemConsumableMapper.deleteNurseStationItemConsumableByItemIds(ids);
nurseStationItemPriceMapper.deleteNurseStationItemPriceByItemIds(ids);
nurseStationItemMapper.deleteNurseStationItemByIds(ids);
//删除图片
itemPictureUrlList.forEach(this::deletePictureUrl);
//遍历删除护理站富文本图片地址
for (String nurseItemContent : nurseItemContentList) {
List<String> nurseStationItemImgSrc = FileUtils.getImgSrc(nurseItemContent);
for (String pictureUrl : nurseStationItemImgSrc) {
if (StringUtils.isBlank(pictureUrl)) {
continue;
}
//修改路径
String substring = pictureUrl.substring(pictureUrl.indexOf("/profile"));
//删除商品富文本图片
deletePictureUrl(substring);
}
}
return AjaxResult.success();
}
/**
* 护理站护理项目信息导入
*
* @param list 护理站护理项目
* @return 导入结果
*/
@Transactional(rollbackFor = Exception.class)
@Override
public AjaxResult importData(List<NurseStationItemImportDTO> list) {
NurseStationItemImportVO stationItemImport = new NurseStationItemImportVO();
//获取当前用户
LoginUser loginUser = SecurityUtils.getLoginUser();
if (CollectionUtils.isEmpty(list)) {
return AjaxResult.error("请添加护理项目导入数据!");
}
//获取所有的护理站名称,去重复以后
List<String> stationNameList = list.stream().filter(Objects::nonNull).map(NurseStationItemImportDTO::getNurseStationName).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
//获取数据库中已经存在的所有项目信息 +通过服务站名称查询所有的关联
List<NurseStationItemImportDTO> allNurseStationItemList = nurseStationItemMapper.selectItemInfoList(stationNameList);
//求出差集,进行新增
Collection<NurseStationItemImportDTO> subtractList = CollectionUtils.subtract(list, allNurseStationItemList);
//求出并集,重复数据
Collection<NurseStationItemImportDTO> intersectionList = CollectionUtils.intersection(list, allNurseStationItemList);
//如果差集为null直接返回
if (CollectionUtils.isEmpty(subtractList)) {
stationItemImport.setSuccessList(subtractList);
stationItemImport.setFailList(intersectionList);
return AjaxResult.success(stationItemImport);
}
//根据护理项目名称进行分组
Map<String, List<NurseStationItemImportDTO>> itemNameMap = list.stream().filter(item -> StringUtils.isNotBlank(item.getNurseItemName())).collect(Collectors.groupingBy(NurseStationItemImportDTO::getNurseItemName));
//获取到所有的护理站信息
List<NurseStation> nurseStations = nurseStationMapper.selectNurseStationListByNames(stationNameList);
//以护理站名称进行分组匹配护理站id
Map<String, Long> nurseStationLabelMap = nurseStations.stream().filter(Objects::nonNull).filter(item -> StringUtils.isNotBlank(item.getNurseStationName())).collect(Collectors.toMap(NurseStation::getNurseStationName, NurseStation::getId));
//设置护理站id
subtractList.forEach(item -> item.setNurseStationId(nurseStationLabelMap.getOrDefault(item.getNurseStationName(), 0L)));
//添加创建时间/护理站编号/判断如果没有护理站信息,添加0L
List<NurseStationItemPrice> priceList = Lists.newArrayList();
for (NurseStationItemImportDTO item : subtractList) {
//判断当前护理站项目在数据库中是否已经存在
String nurseStationName = StringUtils.isBlank(item.getNurseStationName()) ? "" : item.getNurseStationName();
String nurseItemName = StringUtils.isBlank(item.getNurseItemName()) ? "" : item.getNurseItemName();
NurseStationItemImportDTO nurseStationItemImport = allNurseStationItemList.stream()
.filter(nurse -> !StringUtils.isAnyBlank(nurse.getNurseStationName(), nurse.getNurseItemName()))
.filter(nurseItem -> nurseStationName.equals(nurseItem.getNurseStationName()) && nurseItemName.equals(nurseItem.getNurseItemName())).findFirst().orElse(new NurseStationItemImportDTO());
if (Objects.nonNull(nurseStationItemImport.getNurseStationItemId())) {
//添加项目价格信息
item.setNurseStationItemId(nurseStationItemImport.getNurseStationItemId());
NurseStationItemPrice nurseStationItemPrice = new NurseStationItemPrice();
nurseStationItemPrice.setCreateTime(LocalDateTime.now());
BeanUtils.copyProperties(item, nurseStationItemPrice);
priceList.add(nurseStationItemPrice);
continue;
}
//根据护理项目名称获取护理项目名称
List<NurseStationItemImportDTO> itemNameList = itemNameMap.getOrDefault(item.getNurseItemName(), Lists.newArrayList());
//添加项目信息
NurseStationItem nurseStationItem = new NurseStationItem();
nurseStationItem.setNurseStationId(item.getNurseStationId());
nurseStationItem.setNurseTypeId(0L);
nurseStationItem.setUserId(SecurityUtils.getUserId());
nurseStationItem.setNurseItemCode(Constants.STATION_ITEM + generateSystemCodeUtil.generateSystemCode(Constants.STATION_ITEM));
nurseStationItem.setNurseItemName(item.getNurseItemName());
nurseStationItem.setNurseItemContent(item.getNurseItemContent());
nurseStationItem.setAdvanceAppointDuration(item.getAdvanceAppointDuration());
nurseStationItem.setCreateTime(LocalDateTime.now());
nurseStationItem.setCreateBy(loginUser.getUsername());
//保存护理项目信息
int stationItemCount = nurseStationItemMapper.insertNurseStationItem(nurseStationItem);
if (stationItemCount <= 0) {
throw new ServiceException(itemNameList.get(0).getNurseItemName() + "-" + "护理项目导入失败,请联系管理员!");
}
//添加项目价格信息
item.setNurseStationItemId(nurseStationItem.getId());
NurseStationItemPrice nurseStationItemPrice = new NurseStationItemPrice();
nurseStationItemPrice.setCreateTime(LocalDateTime.now());
BeanUtils.copyProperties(item, nurseStationItemPrice);
priceList.add(nurseStationItemPrice);
}
//保存护理项目价格信息
if (CollectionUtils.isNotEmpty(priceList)) {
int itemPriceCount = nurseStationItemPriceMapper.insertNurseStationItemPrice(priceList);
if (itemPriceCount <= 0) {
throw new ServiceException("护理项目价格信息导入失败,请联系管理员!");
}
}
//新增成功的项目信息
stationItemImport.setSuccessList(subtractList);
//新增重复的项目信息
stationItemImport.setFailList(intersectionList);
return AjaxResult.success(stationItemImport);
}
/**
* 删除护理站富文本图片
*
* @param nurseStationItem 前端传过来的
* @param nurseStationItemVO 数据库中的
**/
public void deleteNurseStationItemPictureUrl(NurseStationItem nurseStationItem, NurseStationItemVO nurseStationItemVO) {
if (StringUtils.isNotBlank(nurseStationItem.getNurseItemContent()) && StringUtils.isNotBlank(nurseStationItemVO.getNurseItemContent())
&& !nurseStationItem.getNurseItemContent().equals(nurseStationItemVO.getNurseItemContent())) {
//数据库中的
List<String> stationItemImgSrc = FileUtils.getImgSrc(nurseStationItemVO.getNurseItemContent());
//前端传的
List<String> nurseStationItemImgSrc = FileUtils.getImgSrc(nurseStationItem.getNurseItemContent());
//差集不同的
List<String> subtractNurseStationImgSrc = new ArrayList<>(CollectionUtils.subtract(stationItemImgSrc, nurseStationItemImgSrc));
for (String pictureUrl : subtractNurseStationImgSrc) {
if (StringUtils.isBlank(pictureUrl)) {
continue;
}
//修改路径
String substring = pictureUrl.substring(pictureUrl.indexOf("/profile"));
//删除商品富文本图片
deletePictureUrl(substring);
}
}
}
/**
* 删除护理站图片地址
*
* @param pictureUrl 护理站图片地址
**/
@Override
public void deletePictureUrl(String pictureUrl) {
if (StringUtils.isBlank(pictureUrl)) {
return;
}
String picture = XinELuConfig.getProfile() + pictureUrl.replaceAll("/profile", "");
File checkReportNameFile = new File(picture);
if (checkReportNameFile.exists()) {
boolean delete = checkReportNameFile.delete();
if (BooleanUtils.isFalse(delete)) {
throw new ServiceException("图片地址删除失败!");
}
}
}
/**
* 护理项目修改上架状态
*
* @param id 护理项目id
* @param shelfStatus 上架状态
* @return AjaxResult
*/
@Override
public AjaxResult updateShelfStatus(Long id, String shelfStatus) {
if (!NurseStationItemShelfStatusEnum.SHELF.getInfo().equals(shelfStatus) && !NurseStationItemShelfStatusEnum.NOT_SHELF.getInfo().equals(shelfStatus)) {
return AjaxResult.error("上架状态不存在!");
}
NurseStationItem nurseStationItem = nurseStationItemMapper.getNurseStationItemById(id);
if (Objects.isNull(nurseStationItem)) {
return AjaxResult.error("该护理项目不存在!");
}
nurseStationItemMapper.updateShelfStatusById(id, shelfStatus);
return AjaxResult.success();
}
/**
* 校验护理站项目价格和耗材包单价是否为负数
*
* @param nurseStationItemDTO 输入参数
* @return 返回结果信息
*/
private AjaxResult judgePriceInfo(NurseStationItemDTO nurseStationItemDTO) {
//判断护理站项目价额是否为负数
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemPrices())) {
NurseStationItemPrice nurseStationItemPrice = nurseStationItemDTO.getNurseStationItemPrices().stream().filter(item -> Objects.nonNull(item.getPrice()) && item.getPrice().compareTo(BigDecimal.ZERO) < 0).findFirst().orElse(null);
if (Objects.nonNull(nurseStationItemPrice)) {
return AjaxResult.error("护理项目价格不能为负数,请重新输入!");
}
NurseStationItemPrice itemPrice = nurseStationItemDTO.getNurseStationItemPrices().stream().filter(item -> Objects.nonNull(item.getCommissionAmount()) && item.getCommissionAmount().compareTo(BigDecimal.ZERO) < 0).findFirst().orElse(null);
if (Objects.nonNull(itemPrice)) {
return AjaxResult.error("护理项目佣金金额不能为负数,请重新输入!");
}
NurseStationItemPrice stationItemPrice = nurseStationItemDTO.getNurseStationItemPrices().stream().filter(item -> Objects.nonNull(item.getPrice()) && Objects.nonNull(item.getCommissionAmount())).filter(item -> item.getPrice().compareTo(item.getCommissionAmount()) <= 0).findFirst().orElse(null);
if (Objects.nonNull(stationItemPrice)) {
return AjaxResult.error("护理项目佣金金额不能大于或等于护理项目价格,请重新输入!");
}
NurseStationItemPrice commissionRatePrice = nurseStationItemDTO.getNurseStationItemPrices().stream().filter(item -> Objects.nonNull(item.getCommissionRate()) && (item.getCommissionRate().compareTo(BigDecimal.ZERO) < 0 || item.getCommissionRate().compareTo(BigDecimal.valueOf(100)) > 0)).findFirst().orElse(null);
if (Objects.nonNull(commissionRatePrice)) {
return AjaxResult.error("护理项目佣金比例只能在0-100之间请重新输入");
}
}
//判断护理项目耗材包价格是否为负数
if (CollectionUtils.isNotEmpty(nurseStationItemDTO.getNurseStationItemConsumables())) {
NurseStationItemConsumable nurseStationItemConsumable = nurseStationItemDTO.getNurseStationItemConsumables().stream().filter(item -> Objects.nonNull(item.getConsumablePrice()) && item.getConsumablePrice().compareTo(BigDecimal.ZERO) < 0).findFirst().orElse(null);
if (Objects.nonNull(nurseStationItemConsumable)) {
return AjaxResult.error("护理项目耗材包单价不能为负数,请重新输入!");
}
NurseStationItemConsumable consumableCountInfoTwo = nurseStationItemDTO.getNurseStationItemConsumables().stream().filter(item -> Objects.isNull(item.getConsumableCount())).findFirst().orElse(null);
if (Objects.nonNull(consumableCountInfoTwo)) {
return AjaxResult.error("护理项目耗材包数量不能为空,请重新输入!");
}
NurseStationItemConsumable consumableCountInfo = nurseStationItemDTO.getNurseStationItemConsumables().stream().filter(item -> Objects.nonNull(item.getConsumableCount()) && item.getConsumableCount() < 0).findFirst().orElse(null);
if (Objects.nonNull(consumableCountInfo)) {
return AjaxResult.error("护理项目耗材包数量不能为负数,请重新输入!");
}
}
return null;
}
}

View File

@ -0,0 +1,25 @@
package com.xinelu.manage.vo.nursestationitem;
import com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO;
import lombok.Data;
import java.io.Serializable;
import java.util.Collection;
/**
* @author wanghao
* @create 2022/9/16 0016
*/
@Data
public class NurseStationItemImportVO implements Serializable {
private static final long serialVersionUID = -1672460985369532122L;
/**
* 导入成功数据集合
*/
private Collection<NurseStationItemImportDTO> successList;
/**
* 导入失败数据集合
*/
private Collection<NurseStationItemImportDTO> failList;
}

View File

@ -0,0 +1,112 @@
package com.xinelu.manage.vo.nursestationitem;
import com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO;
import com.xinelu.manage.vo.nursestationitemprice.NurseStationItemPriceVO;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @author wanghao
* @create 2022/9/14 0014
*/
@Data
public class NurseStationItemInfoDetailsVO implements Serializable {
private static final long serialVersionUID = 9031833992848395690L;
/**
* 主键id
*/
private Long id;
/**
* 护理站信息表id
*/
private Long nurseStationId;
/**
* 护理类型表id
*/
private Long nurseTypeId;
/**
* 护理项目编号
*/
private String nurseItemCode;
/**
* 护理项目名称
*/
private String nurseItemName;
/**
* 护理项目内容简介
*/
private String nurseItemContent;
/**
* 提前预约时长单位小时
*/
private String advanceAppointDuration;
/**
* 护理项目图片地址
*/
private String itemPictureUrl;
/**
* 排序
*/
private Integer sort;
/**
* 护理类型
*/
private String nurseTypeName;
/**
* 护理站名称
*/
private String nurseStationName;
/**
* 护理项目所属分类id`
*/
private Long nurseClassifyId;
/**
* 护理项目所属分类名称
*/
private String classifyName;
/**
* 护理项目每个时间点的预约人数上限
*/
private Integer appointmentLimitCount;
/**
* 护理项目预约时间点间隔 半小时HALF_HOUR一小时ONE_HOUR九十分钟NINETY_MINUTES两小时TWO_HOUR
*/
private String appointmentTimeInterval;
/**
* 护理项目所属分类名称
*/
private String nurseClassifyName;
/**
* 上架状态NOT_SHELF未上架SHELF已上架
*/
private String shelfStatus;
/**
* 护理站护理项目耗材关系表
*/
private List<NurseStationItemConsumableVO> nurseStationItemConsumables;
/**
* 护理站护理项目价格表
*/
private List<NurseStationItemPriceVO> nurseStationItemPrices;
}

View File

@ -0,0 +1,33 @@
package com.xinelu.manage.vo.nursestationitem;
import com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO;
import com.xinelu.manage.vo.nursestationitemprice.NurseStationItemPriceVO;
import lombok.Data;
import javax.validation.Valid;
import java.io.Serializable;
import java.util.List;
/**
* @author wanghao
* @create 2022/9/14 0014
*/
@Data
public class NurseStationItemInfoVO implements Serializable {
private static final long serialVersionUID = -2148215383242589741L;
@Valid
private NurseStationItemVO nurseStationItem;
/**
* 护理站护理项目耗材关系表
*/
@Valid
private List<NurseStationItemConsumableVO> nurseStationItemConsumables;
/**
* 护理站护理项目价格表
*/
@Valid
private List<NurseStationItemPriceVO> nurseStationItemPrices;
}

View File

@ -0,0 +1,39 @@
package com.xinelu.manage.vo.nursestationitem;
import com.xinelu.common.annotation.Excel;
import com.xinelu.manage.domain.nursestationitem.NurseStationItem;
import com.xinelu.manage.domain.nursestationitemprice.NurseStationItemPrice;
import io.swagger.annotations.ApiModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author wanghao
* @create 2022/9/14 0014
*/
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel(value = "护理站护理项目对象", description = "nurse_station_item")
public class NurseStationItemVO extends NurseStationItem {
private static final long serialVersionUID = -1174424044106077959L;
@Excel(name = "护理类型")
private String nurseTypeName;
@Excel(name = "护理站名称")
private String nurseStationName;
/**
* 护理项目所属分类名称
*/
@Excel(name = "护理项目所属分类名称")
private String classifyName;
private List<NurseStationItemPrice> nurseStationItemPrices;
}

View File

@ -0,0 +1,28 @@
package com.xinelu.manage.vo.nursestationitemconsumable;
import com.xinelu.common.annotation.Excel;
import com.xinelu.manage.domain.nursestationItemconsumable.NurseStationItemConsumable;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author wanghao
* @create 2022/9/14 0014
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class NurseStationItemConsumableVO extends NurseStationItemConsumable {
private static final long serialVersionUID = -6843839648810574245L;
@Excel(name = "耗材名称")
private String consumableDetail;
@Excel(name = "耗材编码")
private String consumableCode;
@Excel(name = "耗材包单位")
private String consumableUnit;
/**
* 护理项目耗材表id
*/
private Long consumableId;
}

View File

@ -0,0 +1,22 @@
package com.xinelu.manage.vo.nursestationitemprice;
import com.xinelu.manage.domain.nursestationitemprice.NurseStationItemPrice;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* @author ljh
* @version 1.0
* Create by 2022/11/17 14:00
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class NurseStationItemPriceVO extends NurseStationItemPrice implements Serializable {
private static final long serialVersionUID = 1792338807407538721L;
/**
* 护理站项目价格表id非数据库字段后期修改
*/
private Long nurseItemPriceId;
}

View File

@ -180,7 +180,7 @@
</foreach> </foreach>
</select> </select>
<select id="selectCategoryByIds" resultType="com.xinyilu.base.domain.goodsCategory.GoodsCategory"> <select id="selectCategoryByIds" resultType="com.xinelu.manage.domain.goodsCategory.GoodsCategory">
SELECT SELECT
id, id,
parent_id, parent_id,
@ -210,7 +210,7 @@
</foreach> </foreach>
</select> </select>
<select id="selectParentIdById" resultType="com.xinyilu.base.vo.goodsCategory.ParentCategory"> <select id="selectParentIdById" resultType="com.xinelu.manage.vo.goodsCategory.ParentCategory">
select gc.id, select gc.id,
gc.parent_id, gc.parent_id,
gc.goods_category_name, gc.goods_category_name,

View File

@ -0,0 +1,191 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.nursestationItemconsumable.NurseStationItemConsumableMapper">
<resultMap type="NurseStationItemConsumable" id="NurseStationItemConsumableResult">
<result property="id" column="id"/>
<result property="nurseStationItemId" column="nurse_station_item_id"/>
<result property="nurseStationConsumableId" column="nurse_station_consumable_id"/>
<result property="consumableDetail" column="consumable_detail"/>
<result property="consumableUnit" column="consumable_unit"/>
<result property="consumableCount" column="consumable_count"/>
<result property="consumablePrice" column="consumable_price"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectNurseStationItemConsumableVo">
select id,
nurse_station_item_id,
nurse_station_consumable_id,
consumable_detail,
consumable_unit,
consumable_count,
consumable_price,
create_by,
create_time,
update_by,
update_time
from nurse_station_item_consumable
</sql>
<select id="selectNurseStationItemConsumableList" parameterType="NurseStationItemConsumable"
resultType="com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO">
select nsic.*, nsc.consumable_detail, nsc.consumable_code,nsc.consumable_unit
from nurse_station_item_consumable nsic
LEFT JOIN nurse_station_consumable nsc ON nsc.id = nsic.nurse_station_consumable_id
<where>
<if test="nurseStationItemId != null ">
and nsic.nurse_station_item_id = #{nurseStationItemId}
</if>
<if test="nurseStationConsumableId != null ">
and nsic.nurse_station_consumable_id = #{nurseStationConsumableId}
</if>
<if test="consumableCount != null ">
and nsic.consumable_count = #{consumableCount}
</if>
<if test="consumablePrice != null ">
and nsic.consumable_price = #{consumablePrice}
</if>
</where>
</select>
<select id="selectNurseStationItemConsumableById" parameterType="Long"
resultType="com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO">
select nsic.*, nsc.consumable_detail, nsc.consumable_code, nsc.consumable_unit
from nurse_station_item_consumable nsic
LEFT JOIN nurse_station_consumable nsc ON nsc.id = nsic.nurse_station_consumable_id
where nsic.id = #{id}
</select>
<!-- <insert id="insertNurseStationItemConsumable" parameterType="NurseStationItemConsumable" useGeneratedKeys="true"
keyProperty="id">
insert into nurse_station_item_consumable
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="nurseStationItemId != null">nurse_station_item_id,
</if>
<if test="nurseStationConsumableId != null">nurse_station_consumable_id,
</if>
<if test="consumableCount != null">consumable_count,
</if>
<if test="consumablePrice != null">consumable_price,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="nurseStationItemId != null">#{nurseStationItemId},
</if>
<if test="nurseStationConsumableId != null">#{nurseStationConsumableId},
</if>
<if test="consumableCount != null">#{consumableCount},
</if>
<if test="consumablePrice != null">#{consumablePrice},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>-->
<insert id="insertNurseStationItemConsumable" parameterType="java.util.List">
INSERT INTO
nurse_station_item_consumable(nurse_station_item_id,
nurse_station_consumable_id,consumable_detail,consumable_unit, consumable_count,
consumable_price,create_by, create_time, update_by, update_time)
VALUES
<foreach collection="list" item="productCategory" index="index"
separator=",">
(
#{productCategory.nurseStationItemId},
#{productCategory.nurseStationConsumableId},
#{productCategory.consumableDetail},
#{productCategory.consumableUnit},
#{productCategory.consumableCount},
#{productCategory.consumablePrice},
#{productCategory.createBy},
#{productCategory.createTime},
#{productCategory.updateBy},
#{productCategory.updateTime}
)
</foreach>
</insert>
<update id="updateNurseStationItemConsumable" parameterType="NurseStationItemConsumable">
update nurse_station_item_consumable
<trim prefix="SET" suffixOverrides=",">
<if test="nurseStationItemId != null">nurse_station_item_id =
#{nurseStationItemId},
</if>
<if test="nurseStationConsumableId != null">nurse_station_consumable_id =
#{nurseStationConsumableId},
</if>
<if test="consumableDetail != null">consumable_detail =
#{consumableDetail},
</if>
<if test="consumableUnit != null">consumable_unit =
#{consumableUnit},
</if>
<if test="consumableCount != null">consumable_count =
#{consumableCount},
</if>
<if test="consumablePrice != null">consumable_price =
#{consumablePrice},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteNurseStationItemConsumableById" parameterType="Long">
delete
from nurse_station_item_consumable
where id = #{id}
</delete>
<delete id="deleteNurseStationItemConsumableByItemId" parameterType="Long">
delete
from nurse_station_item_consumable
where nurse_station_item_id = #{id}
</delete>
<delete id="deleteNurseStationItemConsumableByIds" parameterType="String">
delete from nurse_station_item_consumable where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteNurseStationItemConsumableByItemIds" parameterType="String">
delete from nurse_station_item_consumable where nurse_station_item_id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
</mapper>

View File

@ -0,0 +1,438 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.nursestationitem.NurseStationItemMapper">
<resultMap type="NurseStationItem" id="NurseStationItemResult">
<result property="id" column="id"/>
<result property="nurseStationId" column="nurse_station_id"/>
<result property="nurseTypeId" column="nurse_type_id"/>
<result property="userId" column="user_id"/>
<result property="nurseItemCode" column="nurse_item_code"/>
<result property="nurseItemName" column="nurse_item_name"/>
<result property="nurseItemContent" column="nurse_item_content"/>
<result property="advanceAppointDuration" column="advance_appoint_duration"/>
<result property="itemPictureUrl" column="item_picture_url"/>
<result property="sort" column="sort"/>
<result property="nurseClassifyId" column="nurse_classify_id"/>
<result property="appointmentLimitCount" column="appointment_limit_count"/>
<result property="appointmentTimeInterval" column="appointment_time_interval"/>
<result property="nurseClassifyName" column="nurse_classify_name"/>
<result property="shelfStatus" column="shelf_status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<!--护理项目映射-->
<resultMap type="com.xinelu.manage.vo.nursestationitem.NurseStationItemInfoDetailsVO" id="NurseStationItemInfoVO">
<result property="id" column="id"/>
<result property="nurseStationId" column="nurse_station_id"/>
<result property="nurseTypeId" column="nurse_type_id"/>
<result property="nurseItemCode" column="nurse_item_code"/>
<result property="nurseItemName" column="nurse_item_name"/>
<result property="itemPictureUrl" column="item_picture_url"/>
<result property="advanceAppointDuration" column="advance_appoint_duration"/>
<result property="nurseItemContent" column="nurse_item_content"/>
<result property="sort" column="sort"/>
<result property="appointmentLimitCount" column="appointment_limit_count"/>
<result property="appointmentTimeInterval" column="appointment_time_interval"/>
<result property="nurseClassifyId" column="nurse_classify_id"/>
<result property="nurseClassifyName" column="nurse_classify_name"/>
<result property="classifyName" column="classify_name"/>
<result property="nurseStationName" column="nurse_station_name"/>
<result property="shelfStatus" column="shelf_status"/>
<collection property="nurseStationItemConsumables" javaType="java.util.List"
resultMap="NurseStationItemConsumableResult"/>
<collection property="nurseStationItemPrices" javaType="java.util.List"
resultMap="NurseStationItemPriceResult"/>
</resultMap>
<!--护理站项目耗材关系表-->
<resultMap type="com.xinelu.manage.vo.nursestationitemconsumable.NurseStationItemConsumableVO"
id="NurseStationItemConsumableResult">
<result property="consumableId" column="consumableId"/>
<result property="nurseStationConsumableId" column="nurse_station_consumable_id"/>
<result property="consumableCount" column="consumable_count"/>
<result property="consumablePrice" column="consumable_price"/>
<result property="consumableDetail" column="consumable_detail"/>
<result property="consumableCode" column="consumable_code"/>
<result property="consumableUnit" column="consumable_unit"/>
</resultMap>
<!--护理站价格-->
<resultMap type="com.xinelu.manage.vo.nursestationitemprice.NurseStationItemPriceVO"
id="NurseStationItemPriceResult">
<result property="id" column="id"/>
<result property="nurseItemPriceId" column="nurseItemPriceId"/>
<result property="nurseStationItemId" column="nurse_station_item_id"/>
<result property="serveDurationUnit" column="serve_duration_unit"/>
<result property="price" column="price"/>
<result property="description" column="description"/>
<result property="commissionAmount" column="commission_amount"/>
<result property="commissionRate" column="commission_rate"/>
</resultMap>
<select id="selectNurseStationItemInfoVO" resultMap="NurseStationItemInfoVO">
select nst.id,
nst.nurse_station_id,
nst.nurse_type_id,
nst.nurse_item_code,
nst.nurse_item_name,
nst.item_picture_url,
nst.advance_appoint_duration,
nst.nurse_item_content,
nst.sort,
nst.nurse_classify_id,
nst.appointment_limit_count,
nst.appointment_time_interval,
nst.nurse_classify_name,
nst.shelf_status,
nci.classify_name,
ns.nurse_station_name,
nsip.id nurseItemPriceId,
nsip.nurse_station_item_id,
nsip.serve_duration_unit,
nsip.price,
nsip.description,
nsip.commission_amount,
nsip.commission_rate,
nsic.id consumableId,
nsic.nurse_station_consumable_id,
nsic.consumable_detail,
nsic.consumable_unit,
nsic.consumable_count,
nsic.consumable_price
FROM nurse_station_item nst
LEFT JOIN nurse_station_item_price nsip ON nsip.nurse_station_item_id = nst.id
LEFT JOIN nurse_station_item_consumable nsic ON nsic.nurse_station_item_id = nst.id
LEFT JOIN nurse_station ns ON ns.id = nst.nurse_station_id
LEFT JOIN nurse_classify_info nci ON nci.id = nst.nurse_classify_id
where nst.id = #{id}
</select>
<sql id="selectNurseStationItemVo">
select id,
nurse_station_id,
nurse_type_id,
user_id,
item_picture_url,
nurse_item_code,
nurse_item_name,
nurse_item_content,
advance_appoint_duration,
sort,
nurse_classify_id,
appointment_limit_count,
appointment_time_interval,
nurse_classify_name,
shelf_status,
create_by,
create_time,
update_by,
update_time
from nurse_station_item
</sql>
<select id="selectNurseStationItemList" parameterType="NurseStationItem"
resultType="com.xinelu.manage.vo.nursestationitem.NurseStationItemVO">
select nst.* ,ns.nurse_station_name, nci.classify_name, nt.nurse_type_name
from nurse_station_item nst
LEFT JOIN nurse_station ns on ns.id=nst.nurse_station_id
LEFT JOIN nurse_type nt on nt.id=nst.nurse_type_id
LEFT JOIN nurse_classify_info nci ON nci.id = nst.nurse_classify_id
<where>
<if test="nurseStationId != null ">
and nst.nurse_station_id = #{nurseStationId}
</if>
<if test="nurseTypeId != null ">
and nst.nurse_type_id = #{nurseTypeId}
</if>
<if test="userId != null ">
and nst.user_id = #{userId}
</if>
<if test="nurseItemCode != null and nurseItemCode != ''">
and nst.nurse_item_code like concat('%', #{nurseItemCode}, '%')
</if>
<if test="nurseItemName != null and nurseItemName != ''">
and nst.nurse_item_name like concat('%', #{nurseItemName}, '%')
</if>
<if test="nurseItemContent != null and nurseItemContent != ''">
and nst.nurse_item_content = #{nurseItemContent}
</if>
<if test="advanceAppointDuration != null ">
and nst.advance_appoint_duration = #{advanceAppointDuration}
</if>
<if test="sort != null ">
and nst.sort = #{sort}
</if>
<if test="shelfStatus != null and shelfStatus != ''">
and nst.shelf_status = #{shelfStatus}
</if>
</where>
ORDER BY nst.create_time DESC
</select>
<select id="selectNurseStationItemById" parameterType="Long"
resultType="com.xinelu.manage.vo.nursestationitem.NurseStationItemVO">
select nst.id,
nst.nurse_station_id,
nst.nurse_type_id,
nst.nurse_item_code,
nst.nurse_item_name,
nst.item_picture_url,
nst.advance_appoint_duration,
nst.nurse_item_content,
nst.create_time,
nst.create_by,
nst.sort,
nst.nurse_classify_id,
nst.appointment_limit_count,
nst.appointment_time_interval,
nst.nurse_classify_name,
nst.shelf_status,
ns.nurse_station_name,
nt.nurse_type_name
from nurse_station_item nst
LEFT JOIN nurse_station ns on ns.id = nst.nurse_station_id
LEFT JOIN nurse_type nt on nt.id = nst.nurse_type_id
where nst.id = #{id}
</select>
<insert id="insertNurseStationItem" parameterType="NurseStationItem" useGeneratedKeys="true"
keyProperty="id">
insert into nurse_station_item
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="nurseStationId != null">nurse_station_id,
</if>
<if test="nurseTypeId != null">nurse_type_id,
</if>
<if test="userId != null">user_id,
</if>
<if test="nurseItemCode != null">nurse_item_code,
</if>
<if test="nurseItemName != null">nurse_item_name,
</if>
<if test="nurseItemContent != null">nurse_item_content,
</if>
<if test="advanceAppointDuration != null">advance_appoint_duration,
</if>
<if test="itemPictureUrl != null">item_picture_url,
</if>
<if test="sort != null">sort,
</if>
<if test="nurseClassifyId != null">nurse_classify_id,
</if>
<if test="appointmentLimitCount != null">appointment_limit_count,
</if>
<if test="appointmentTimeInterval != null">appointment_time_interval,
</if>
<if test="nurseClassifyName != null">nurse_classify_name,
</if>
<if test="shelfStatus != null">shelf_status,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="nurseStationId != null">#{nurseStationId},
</if>
<if test="nurseTypeId != null">#{nurseTypeId},
</if>
<if test="userId != null">#{userId},
</if>
<if test="nurseItemCode != null">#{nurseItemCode},
</if>
<if test="nurseItemName != null">#{nurseItemName},
</if>
<if test="nurseItemContent != null">#{nurseItemContent},
</if>
<if test="advanceAppointDuration != null">#{advanceAppointDuration},
</if>
<if test="itemPictureUrl != null">#{itemPictureUrl},
</if>
<if test="sort != null">#{sort},
</if>
<if test="nurseClassifyId != null">#{nurseClassifyId},
</if>
<if test="appointmentLimitCount != null">#{appointmentLimitCount},
</if>
<if test="appointmentTimeInterval != null">#{appointmentTimeInterval},
</if>
<if test="nurseClassifyName != null">#{nurseClassifyName},
</if>
<if test="shelfStatus != null">#{shelfStatus},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>
<!-- <insert id="insertNurseStationItem" parameterType="java.util.List">
INSERT INTO
nurse_station_item(nurse_station_id, nurse_type_id, user_id, item_picture_url, nurse_item_code, nurse_item_name,nurse_item_content,advance_appoint_duration,sort,create_by, create_time, update_by, update_time)
VALUES
<foreach collection="list" item="productCategory" index="index"
separator=",">
(
#{productCategory.nurseStationId},
#{productCategory.nurseTypeId},
#{productCategory.userId},
#{productCategory.itemPictureUrl},
#{productCategory.itemPictureUrl},
#{productCategory.nurseItemCode},
#{productCategory.nurseItemName},
#{productCategory.nurseItemContent},
#{productCategory.advanceAppointDuration},
#{productCategory.sort},
#{productCategory.createBy},
#{productCategory.createTime},
#{productCategory.updateBy},
#{productCategory.updateTime}
)
</foreach>
</insert>-->
<update id="updateNurseStationItem" parameterType="NurseStationItem">
update nurse_station_item
<trim prefix="SET" suffixOverrides=",">
<if test="nurseStationId != null">nurse_station_id =
#{nurseStationId},
</if>
<if test="nurseTypeId != null">nurse_type_id =
#{nurseTypeId},
</if>
<if test="userId != null">user_id =
#{userId},
</if>
<if test="nurseItemCode != null">nurse_item_code =
#{nurseItemCode},
</if>
<if test="itemPictureUrl != null">item_picture_url =
#{itemPictureUrl},
</if>
<if test="nurseItemName != null">nurse_item_name =
#{nurseItemName},
</if>
<if test="nurseItemContent != null">nurse_item_content =
#{nurseItemContent},
</if>
<if test="advanceAppointDuration != null">advance_appoint_duration =
#{advanceAppointDuration},
</if>
<if test="sort != null">sort =
#{sort},
</if>
nurse_classify_id = #{nurseClassifyId},
appointment_limit_count = #{appointmentLimitCount},
<if test="appointmentTimeInterval != null">appointment_time_interval =
#{appointmentTimeInterval},
</if>
<if test="nurseClassifyName != null">nurse_classify_name =
#{nurseClassifyName},
</if>
<if test="shelfStatus != null">shelf_status =
#{shelfStatus},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteNurseStationItemById" parameterType="Long">
delete
from nurse_station_item
where id = #{id}
</delete>
<delete id="deleteNurseStationItemByIds" parameterType="String">
delete from nurse_station_item where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectItemInfoList" parameterType="String"
resultType="com.xinelu.manage.dto.nursestationitem.NurseStationItemImportDTO">
select nst.nurse_item_name, ns.nurse_station_name,nst.advance_appoint_duration,
nsip.price,nsip.serve_duration_unit,nst.id as nurseStationItemId
from nurse_station_item nst
LEFT JOIN nurse_station ns on ns.id = nst.nurse_station_id
LEFT JOIN nurse_station_item_price nsip on nsip.nurse_station_item_id = nst.id
<where>
<if test="nurseStationIdList != null and nurseStationIdList.size() > 0">
and ns.nurse_station_name in
<foreach item="nurseStationName" collection="nurseStationIdList" open="(" separator="," close=")">
#{nurseStationName}
</foreach>
</if>
</where>
</select>
<select id="getNurseStationItemByIds" parameterType="NurseStationItem"
resultType="NurseStationItem">
select id,
nurse_station_id,
nurse_type_id,
user_id,
item_picture_url,
nurse_item_code,
nurse_item_name,
nurse_item_content,
advance_appoint_duration,
nurse_classify_id,
appointment_limit_count,
appointment_time_interval,
nurse_classify_name,
shelf_status,
sort,
create_by,
create_time,
update_by,
update_time
from nurse_station_item
<where>
<if test="nurseStationItemIdsList != null and nurseStationItemIdsList.size()>0 ">
and id in
<foreach item="nurseStationItemIds" collection="nurseStationItemIdsList" open="(" separator=","
close=")">
#{nurseStationItemIds}
</foreach>
</if>
</where>
order by create_time desc
</select>
<select id="getNurseStationItemById" parameterType="long" resultType="nurseStationItem">
<include refid="selectNurseStationItemVo"></include>
where id = #{itemId}
</select>
<update id="updateShelfStatusById">
update nurse_station_item
set shelf_status = #{shelfStatus}
where id = #{id}
</update>
</mapper>

View File

@ -0,0 +1,194 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.nursestationitemprice.NurseStationItemPriceMapper">
<resultMap type="NurseStationItemPrice" id="NurseStationItemPriceResult">
<result property="id" column="id"/>
<result property="nurseStationItemId" column="nurse_station_item_id"/>
<result property="serveDurationUnit" column="serve_duration_unit"/>
<result property="price" column="price"/>
<result property="description" column="description"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="commissionAmount" column="commission_amount"/>
<result property="commissionRate" column="commission_rate"/>
</resultMap>
<sql id="selectNurseStationItemPriceVo">
select id,
nurse_station_item_id,
serve_duration_unit,
price,
description,
create_by,
create_time,
update_by,
update_time,
commission_amount,
commission_rate
from nurse_station_item_price
</sql>
<select id="selectNurseStationItemPriceList" parameterType="NurseStationItemPrice"
resultMap="NurseStationItemPriceResult">
<include refid="selectNurseStationItemPriceVo"/>
<where>
<if test="nurseStationItemId != null ">
and nurse_station_item_id = #{nurseStationItemId}
</if>
<if test="serveDurationUnit != null and serveDurationUnit != ''">
and serve_duration_unit = #{serveDurationUnit}
</if>
<if test="price != null ">
and price = #{price}
</if>
<if test="description != null and description != ''">
and description = #{description}
</if>
</where>
</select>
<select id="selectNurseStationItemPriceById" parameterType="Long"
resultMap="NurseStationItemPriceResult">
<include refid="selectNurseStationItemPriceVo"/>
where id = #{id}
</select>
<!-- <insert id="insertNurseStationItemPrice" parameterType="NurseStationItemPrice" useGeneratedKeys="true"
keyProperty="id">
insert into nurse_station_item_price
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="nurseStationItemId != null">nurse_station_item_id,
</if>
<if test="serveDurationUnit != null">serve_duration_unit,
</if>
<if test="price != null">price,
</if>
<if test="description != null">description,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="nurseStationItemId != null">#{nurseStationItemId},
</if>
<if test="serveDurationUnit != null">#{serveDurationUnit},
</if>
<if test="price != null">#{price},
</if>
<if test="description != null">#{description},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>-->
<insert id="insertNurseStationItemPrice" parameterType="java.util.List">
INSERT INTO
nurse_station_item_price(nurse_station_item_id, serve_duration_unit, price, description,create_by, create_time,
update_by, update_time,commission_amount,commission_rate)
VALUES
<foreach collection="list" item="productCategory" index="index"
separator=",">
(
#{productCategory.nurseStationItemId},
#{productCategory.serveDurationUnit},
#{productCategory.price},
#{productCategory.description},
#{productCategory.createBy},
#{productCategory.createTime},
#{productCategory.updateBy},
#{productCategory.updateTime},
#{productCategory.commissionAmount},
#{productCategory.commissionRate}
)
</foreach>
</insert>
<update id="updateNurseStationItemPrice" parameterType="NurseStationItemPrice">
update nurse_station_item_price
<trim prefix="SET" suffixOverrides=",">
<if test="nurseStationItemId != null">nurse_station_item_id =
#{nurseStationItemId},
</if>
<if test="serveDurationUnit != null">serve_duration_unit =
#{serveDurationUnit},
</if>
<if test="price != null">price =
#{price},
</if>
<if test="description != null">description =
#{description},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
<if test="commissionAmount != null">commission_amount =
#{commissionAmount},
</if>
<if test="commissionRate != null">commission_rate =
#{commissionRate},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteNurseStationItemPriceById" parameterType="Long">
delete
from nurse_station_item_price
where id = #{id}
</delete>
<delete id="deleteNurseStationItemPriceByItemId" parameterType="Long">
delete
from nurse_station_item_price
where nurse_station_item_id = #{id}
</delete>
<delete id="deleteNurseStationItemPriceByIds" parameterType="String">
delete from nurse_station_item_price where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<delete id="deleteNurseStationItemPriceByItemIds" parameterType="String">
delete from nurse_station_item_price where nurse_station_item_id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="getNurseStationItemPriceByList" parameterType="NurseStationItemPrice"
resultType="NurseStationItemPrice">
<include refid="selectNurseStationItemPriceVo"/>
<where>
<if test="idList != null and idList.size() > 0">
and nurse_station_item_id in
<foreach item="nurseStationId" collection="idList" open="(" separator="," close=")">
#{nurseStationId}
</foreach>
</if>
</where>
</select>
</mapper>