block_medical/front/src/main/java/io/controller/AuditController.java
2025-05-18 21:13:10 +08:00

175 lines
5.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package io.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import io.annotation.Login;
import io.common.constant.Constant;
import io.common.page.PageData;
import io.common.utils.Result;
import io.common.validator.AssertUtils;
import io.common.validator.ValidatorUtils;
import io.common.validator.group.AddGroup;
import io.common.validator.group.DefaultGroup;
import io.common.validator.group.UpdateGroup;
import io.modules.item.dao.AuditDao;
import io.modules.item.dao.CaseDao;
import io.modules.item.dao.DoctorsDao;
import io.modules.item.dao.OrderDao;
import io.modules.item.dto.AuditDTO;
import io.modules.item.entity.AuditEntity;
import io.modules.item.entity.CaseEntity;
import io.modules.item.entity.DoctorsEntity;
import io.modules.item.entity.OrderEntity;
import io.modules.item.service.AuditService;
import io.modules.item.service.CaseService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.enums.ParameterIn;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 授权表
*
* @author Mark #
* @since 1.0.0 2025-05-13
*/
@RestController
@RequestMapping("api/audit")
@Tag(name = "授权表")
@CrossOrigin
public class AuditController {
@Autowired
private AuditService auditService;
@Autowired
private OrderDao orderDao;
@Autowired
private DoctorsDao doctorsDao;
@Autowired
private AuditDao auditDao;
@Autowired
private CaseDao caseDao;
@GetMapping("page")
@Operation(summary = "分页")
@Parameters({
@Parameter(name = Constant.PAGE, description = "当前页码从1开始", in = ParameterIn.QUERY, required = true, ref = "int"),
@Parameter(name = Constant.LIMIT, description = "每页显示记录数", in = ParameterIn.QUERY, required = true, ref = "int"),
@Parameter(name = Constant.ORDER_FIELD, description = "排序字段", in = ParameterIn.QUERY, ref = "String"),
@Parameter(name = Constant.ORDER, description = "排序方式,可选值(asc、desc)", in = ParameterIn.QUERY, ref = "String")
})
public Result<PageData<AuditDTO>> page(@Parameter(hidden = true) @RequestParam Map<String, Object> params) {
PageData<AuditDTO> page = auditService.page(params);
return new Result<PageData<AuditDTO>>().ok(page);
}
@Login
@GetMapping("list")
public Result<List<AuditDTO>> list(@Parameter(hidden = true) @RequestParam Map<String, Object> params, @Parameter(hidden = true) @RequestAttribute("userId") Long userId) {
params.put("userId", userId.toString());
List<AuditDTO> page = auditService.list(params);
List<AuditDTO> collect = page.stream().map(e -> {
DoctorsEntity doctorsEntity = doctorsDao.selectById(e.getItemId());
if (doctorsEntity != null) {
e.setDoctors(doctorsEntity);
}
// 主治医生
OrderEntity orderEntity = orderDao.selectById(e.getOrderId());
if (orderEntity != null) {
DoctorsEntity doctorsEntity1 = doctorsDao.selectById(orderEntity.getItemId());
if (doctorsEntity1 != null) {
e.setOneDoctors(doctorsEntity1);
}
}
return e;
}).collect(Collectors.toList());
return new Result<List<AuditDTO>>().ok(collect);
}
@GetMapping("{id}")
@Operation(summary = "信息")
public Result<AuditDTO> get(@PathVariable("id") Long id) {
AuditDTO data = auditService.get(id);
return new Result<AuditDTO>().ok(data);
}
@PostMapping
@Operation(summary = "保存")
public Result save(@RequestBody AuditDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, AddGroup.class, DefaultGroup.class);
LambdaQueryWrapper<AuditEntity> lwq = new LambdaQueryWrapper<>();
lwq.eq(AuditEntity::getItemId, dto.getItemId());
lwq.eq(AuditEntity::getOrderId, dto.getOrderId());
lwq.eq(AuditEntity::getStatus, "待审核");
if (auditDao.exists(lwq)) {
return new Result().error("您已经申请,不能重复申请");
}
auditService.save(dto);
return new Result();
}
@PutMapping
@Operation(summary = "修改")
public Result update(@RequestBody AuditDTO dto) {
//效验数据
ValidatorUtils.validateEntity(dto, UpdateGroup.class, DefaultGroup.class);
//查询病例密钥
if (dto.getStatus().equals("同意授权")) {
OrderEntity orderEntity = orderDao.selectById(dto.getOrderId());
if (orderEntity == null) {
return new Result().error("没查询到对应的订单");
}
LambdaQueryWrapper<CaseEntity> lwq = new LambdaQueryWrapper<>();
lwq.eq(CaseEntity::getOrderId, orderEntity.getId());
CaseEntity caseEntity = caseDao.selectOne(lwq);
if (caseEntity == null) {
return new Result().error("没查询到对应的病例");
}
dto.setHex(caseEntity.getHex());
AuditEntity auditEntity = new AuditEntity();
BeanUtils.copyProperties(dto,auditEntity);
auditService.updateById(auditEntity);
return new Result();
}
dto.setHex("");
auditService.update(dto);
return new Result();
}
@DeleteMapping
@Operation(summary = "删除")
public Result delete(@RequestBody Long[] ids) {
//效验数据
AssertUtils.isArrayEmpty(ids, "id");
auditService.delete(ids);
return new Result();
}
}