parent
5378210b8e
commit
ab35ba6ae9
@ -1,13 +1,76 @@ |
||||
package digital.laboratory.platform.imr.controller; |
||||
|
||||
|
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.baomidou.mybatisplus.core.metadata.IPage; |
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
||||
import digital.laboratory.platform.common.core.util.R; |
||||
import digital.laboratory.platform.imr.convert.DrugUsageRecordConvert; |
||||
import digital.laboratory.platform.imr.dto.DrugUsageRecordDTO; |
||||
import digital.laboratory.platform.imr.entity.DrugMaterialInfo; |
||||
import digital.laboratory.platform.imr.entity.DrugUsageRecord; |
||||
import digital.laboratory.platform.imr.mapper.DrugMaterialInfoMapper; |
||||
import digital.laboratory.platform.imr.query.DrugUsageRecordQuery; |
||||
import digital.laboratory.platform.imr.service.DrugUsageRecordService; |
||||
import digital.laboratory.platform.imr.vo.DrugUsageRecordVO; |
||||
import io.swagger.annotations.Api; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import io.swagger.annotations.ApiOperation; |
||||
import org.springframework.beans.BeanUtils; |
||||
import org.springframework.web.bind.annotation.*; |
||||
|
||||
import javax.annotation.Resource; |
||||
import javax.validation.Valid; |
||||
|
||||
@RestController |
||||
@RequestMapping("/drugUsageRecord") |
||||
@Api(value = "DrugUsageRecordController", tags = "毒品检材的领用归还记录表相关接口") |
||||
public class DrugUsageRecordController { |
||||
|
||||
@Resource |
||||
private DrugUsageRecordService drugUsageRecordService; |
||||
|
||||
@Resource |
||||
private DrugMaterialInfoMapper drugMaterialInfoMapper; |
||||
|
||||
@ApiOperation("毒品检材领用出库") |
||||
@PostMapping("/outbound") |
||||
public R outbound(@RequestBody @Valid DrugUsageRecordDTO dto) { |
||||
boolean success = drugUsageRecordService.outbound(dto); |
||||
return R.ok(success); |
||||
} |
||||
|
||||
@ApiOperation("毒品检材领用记录分页列表") |
||||
@PostMapping("/page") |
||||
public R<IPage<DrugUsageRecordVO>> page(@RequestBody DrugUsageRecordQuery query) { |
||||
String keywords = query.getKeywords(); |
||||
IPage<DrugUsageRecord> page = drugUsageRecordService.page( |
||||
new Page<>(query.getCurrent(), query.getSize()), |
||||
Wrappers.<DrugUsageRecord>lambdaQuery() |
||||
.and(StrUtil.isNotBlank(keywords), |
||||
wrapper -> wrapper |
||||
.like(DrugUsageRecord::getUsageName, keywords) |
||||
.or() |
||||
.like(DrugUsageRecord::getApplicantName, keywords) |
||||
.or() |
||||
.like(DrugUsageRecord::getUsagePurpose, keywords) |
||||
) |
||||
.ge(query.getStartDate() != null, DrugUsageRecord::getUsageDate, query.getStartDate()) |
||||
.le(query.getEndDate() != null, DrugUsageRecord::getUsageDate, query.getEndDate())); |
||||
IPage<DrugUsageRecordVO> voiPage = new Page<>(); |
||||
BeanUtils.copyProperties(page, voiPage, "records"); |
||||
voiPage.setRecords(DrugUsageRecordConvert.entityToVOList(page.getRecords())); |
||||
return R.ok(voiPage); |
||||
} |
||||
|
||||
@ApiOperation("毒品检材领用记录详情") |
||||
@GetMapping("/details") |
||||
public R details(@RequestParam("id") String id) { |
||||
DrugUsageRecord drugUsageRecord = drugUsageRecordService.getById(id); |
||||
DrugUsageRecordVO drugUsageRecordVO = DrugUsageRecordConvert.entityToVO(drugUsageRecord); |
||||
drugUsageRecordVO.setDrugMaterialInfoVOList(drugMaterialInfoMapper.getDrugMaterialVO(Wrappers.<DrugMaterialInfo>query().in("dm.id", drugUsageRecordVO.getDrugIds()))); |
||||
return R.ok(drugUsageRecordVO); |
||||
} |
||||
|
||||
} |
||||
|
@ -0,0 +1,46 @@ |
||||
package digital.laboratory.platform.imr.convert; |
||||
|
||||
import cn.hutool.core.collection.CollUtil; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import digital.laboratory.platform.imr.dto.DrugUsageRecordDTO; |
||||
import digital.laboratory.platform.imr.entity.DrugUsageRecord; |
||||
import digital.laboratory.platform.imr.vo.DrugUsageRecordVO; |
||||
|
||||
import java.util.Collections; |
||||
import java.util.List; |
||||
import java.util.stream.Collectors; |
||||
|
||||
/** |
||||
* 毒品检材的领用归还记录表相关 实体类转换 |
||||
*/ |
||||
public class DrugUsageRecordConvert { |
||||
|
||||
public static DrugUsageRecord dtoToEntity(DrugUsageRecordDTO dto) { |
||||
if (dto == null) return null; |
||||
|
||||
DrugUsageRecord drugUsageRecord = new DrugUsageRecord(); |
||||
drugUsageRecord.setDrugId(dto.getDrugIds().stream().collect(Collectors.joining(","))); |
||||
drugUsageRecord.setUsageDate(dto.getUsageDate()); |
||||
drugUsageRecord.setUsagePurpose(dto.getUsagePurpose()); |
||||
return drugUsageRecord; |
||||
} |
||||
|
||||
public static DrugUsageRecordVO entityToVO(DrugUsageRecord entity) { |
||||
if (entity == null) return null; |
||||
|
||||
DrugUsageRecordVO drugUsageRecordVO = new DrugUsageRecordVO(); |
||||
drugUsageRecordVO.setId(entity.getId()); |
||||
drugUsageRecordVO.setDrugIds(StrUtil.split(entity.getDrugId(), StrUtil.COMMA)); |
||||
drugUsageRecordVO.setUsageName(entity.getUsageName()); |
||||
drugUsageRecordVO.setUsageDate(entity.getUsageDate()); |
||||
drugUsageRecordVO.setUsagePurpose(entity.getUsagePurpose()); |
||||
drugUsageRecordVO.setApplicant(entity.getApplicant()); |
||||
drugUsageRecordVO.setApplicantName(entity.getApplicantName()); |
||||
return drugUsageRecordVO; |
||||
} |
||||
|
||||
public static List<DrugUsageRecordVO> entityToVOList(List<DrugUsageRecord> entityList) { |
||||
if (CollUtil.isEmpty(entityList)) return Collections.emptyList(); |
||||
return entityList.stream().map(entity -> entityToVO(entity)).collect(Collectors.toList()); |
||||
} |
||||
} |
@ -0,0 +1,29 @@ |
||||
package digital.laboratory.platform.imr.enums; |
||||
|
||||
import lombok.Getter; |
||||
|
||||
@Getter |
||||
public enum DrugUsageStatus { |
||||
|
||||
IN_USAGE(1, "领用中"), |
||||
FINISH_USAGE(5, "已归还"), |
||||
; |
||||
|
||||
private final Integer status; |
||||
|
||||
private final String desc; |
||||
|
||||
DrugUsageStatus(Integer status, String desc) { |
||||
this.status = status; |
||||
this.desc = desc; |
||||
} |
||||
|
||||
public static DrugUsageStatus fromStatus(Integer status) { |
||||
for (DrugUsageStatus drugUsageStatus : values()) { |
||||
if (drugUsageStatus.getStatus().equals(status)) { |
||||
return drugUsageStatus; |
||||
} |
||||
} |
||||
throw new IllegalArgumentException("No enum constant with code: " + status); |
||||
} |
||||
} |
@ -0,0 +1,34 @@ |
||||
package digital.laboratory.platform.imr.query; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import digital.laboratory.platform.imr.component.DateUtils; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import java.time.LocalDate; |
||||
|
||||
/** |
||||
* 毒品库领用记录信息查询对象 Query |
||||
*/ |
||||
@Data |
||||
@ApiModel(value = "DrugUsageRecordQuery", description = "毒品库领用记录信息查询对象 Query") |
||||
public class DrugUsageRecordQuery { |
||||
|
||||
@ApiModelProperty(value = "分页参数,每页多少条, 默认10") |
||||
private Long size = 10L; |
||||
|
||||
@ApiModelProperty(value = "分页参数, 当前页, 默认1") |
||||
private Long current = 1L; |
||||
|
||||
@ApiModelProperty(value = "关键字,支持 案件名称, 毒品名称") |
||||
private String keywords; |
||||
|
||||
@ApiModelProperty(value = "开始日期") |
||||
@JsonFormat(pattern = DateUtils.yyyy_MM_dd) |
||||
private LocalDate startDate; |
||||
|
||||
@ApiModelProperty(value = "结束日期") |
||||
@JsonFormat(pattern = DateUtils.yyyy_MM_dd) |
||||
private LocalDate endDate; |
||||
} |
@ -0,0 +1,15 @@ |
||||
package digital.laboratory.platform.imr.service; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService; |
||||
import digital.laboratory.platform.imr.entity.SampleInboundAndOutboundTable; |
||||
import digital.laboratory.platform.imr.entity.SampleOutboundRecord; |
||||
|
||||
/** |
||||
* 服务类 |
||||
* |
||||
* @author Zhang Xiaolong created at 2023-03-21 |
||||
* @describe 服务类 |
||||
*/ |
||||
public interface SampleOutboundRecordService extends IService<SampleOutboundRecord> { |
||||
|
||||
} |
@ -0,0 +1,11 @@ |
||||
package digital.laboratory.platform.imr.service.impl; |
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
||||
import digital.laboratory.platform.imr.entity.SampleOutboundRecord; |
||||
import digital.laboratory.platform.imr.mapper.SampleOutboundRecordMapper; |
||||
import digital.laboratory.platform.imr.service.SampleOutboundRecordService; |
||||
import org.springframework.stereotype.Service; |
||||
|
||||
@Service |
||||
public class SampleOutboundRecordServiceImpl extends ServiceImpl<SampleOutboundRecordMapper, SampleOutboundRecord> implements SampleOutboundRecordService { |
||||
} |
@ -0,0 +1,63 @@ |
||||
package digital.laboratory.platform.imr.vo; |
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat; |
||||
import digital.laboratory.platform.imr.component.DateUtils; |
||||
import io.swagger.annotations.ApiModel; |
||||
import io.swagger.annotations.ApiModelProperty; |
||||
import lombok.Data; |
||||
|
||||
import javax.validation.constraints.NotEmpty; |
||||
import java.time.LocalDateTime; |
||||
import java.util.List; |
||||
|
||||
/** |
||||
* 毒品检材的领用归还记录表 VO类 |
||||
* @TableName b_drug_usage_record |
||||
*/ |
||||
@Data |
||||
@ApiModel(value = "DrugUsageRecordVO", description = "毒品检材的领用归还记录表 VO类") |
||||
public class DrugUsageRecordVO { |
||||
|
||||
@ApiModelProperty("主键id") |
||||
private String id; |
||||
|
||||
/** |
||||
* 关联领用的毒品id |
||||
*/ |
||||
@ApiModelProperty("关联领用的毒品id") |
||||
private List<String> drugIds; |
||||
|
||||
/** |
||||
* 领用物品名称 |
||||
*/ |
||||
@ApiModelProperty("领用物品名称") |
||||
private String usageName; |
||||
|
||||
/** |
||||
* 领用时间 |
||||
*/ |
||||
@ApiModelProperty("领用时间") |
||||
@JsonFormat(pattern = DateUtils.yyyy_MM_dd_HH_mm_ss, timezone = DateUtils.TIME_ZONE) |
||||
private LocalDateTime usageDate; |
||||
|
||||
/** |
||||
* 领用目的 |
||||
*/ |
||||
@ApiModelProperty("领用目的") |
||||
private String usagePurpose; |
||||
|
||||
/** |
||||
* 领用申请人 |
||||
*/ |
||||
@ApiModelProperty("领用申请人id") |
||||
private String applicant; |
||||
|
||||
/** |
||||
* 领用申请人姓名 |
||||
*/ |
||||
@ApiModelProperty("领用申请人姓名") |
||||
private String applicantName; |
||||
|
||||
@ApiModelProperty("领用的毒品检材详情信息列表") |
||||
private List<DrugMaterialInfoVO> drugMaterialInfoVOList; |
||||
} |
@ -0,0 +1,45 @@ |
||||
<?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="digital.laboratory.platform.imr.mapper.DrugUsageRecordMapper"> |
||||
|
||||
<resultMap id="BaseResultMap" type="digital.laboratory.platform.imr.entity.DrugUsageRecord"> |
||||
<id property="id" column="id" jdbcType="VARCHAR"/> |
||||
<result property="drugId" column="drug_id" jdbcType="VARCHAR"/> |
||||
<result property="applicant" column="applicant" jdbcType="VARCHAR"/> |
||||
<result property="applicantName" column="applicant_name" jdbcType="VARCHAR"/> |
||||
<result property="usageDate" column="usage_date" jdbcType="TIMESTAMP"/> |
||||
<result property="usageName" column="usage_name" jdbcType="TIMESTAMP"/> |
||||
<result property="usagePurpose" column="usage_purpose" jdbcType="VARCHAR"/> |
||||
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> |
||||
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> |
||||
<result property="createBy" column="create_by" jdbcType="VARCHAR"/> |
||||
<result property="updateBy" column="update_by" jdbcType="VARCHAR"/> |
||||
</resultMap> |
||||
|
||||
<sql id="Base_Column_List"> |
||||
id,drug_id,applicant,applicant_name, |
||||
usage_date,usage_purpose, |
||||
create_time,update_time, |
||||
create_by,update_by |
||||
</sql> |
||||
|
||||
<select id="queryUsageRecordVOPage"> |
||||
SELECT |
||||
<include refid="Base_Column_List"/> |
||||
FROM b_drug_usage_record du |
||||
<where> |
||||
<if test="query.keywords != null and query.keywords != ''"> |
||||
OR du.applicant_name = #{query.keywords} |
||||
</if> |
||||
<if test="query.startDate != null"> |
||||
AND du.usage_date >= #{query.startDate} |
||||
</if> |
||||
<if test="query.endDate != null"> |
||||
AND du.usage_date <= #{query.endDate} |
||||
</if> |
||||
</where> |
||||
ORDER BY du.usage_date DESC |
||||
</select> |
||||
</mapper> |
Loading…
Reference in new issue