package jnpf.limsController;
|
|
import jnpf.audit.sdk.annotation.AuditLog;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
import jnpf.base.UserInfo;
|
import jnpf.enums.LimsSampleEnum;
|
import jnpf.limsEntity.LimsApplyTestEntity;
|
import jnpf.limsEntity.LimsSampleInfoEntity;
|
import jnpf.limsEntity.LimsSamplingRecordEntity;
|
import jnpf.limsEntity.LimsTestTaskEntity;
|
import jnpf.limsModel.LimsApplyTestModel;
|
import jnpf.limsService.*;
|
import jnpf.permission.entity.UserEntity;
|
import jnpf.util.DateUtil;
|
import jnpf.util.R;
|
import jnpf.util.UserProvider;
|
import kotlin.Result;
|
import lombok.RequiredArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j // 添加日志记录
|
@Tag(name = "lims检验流程", description = "lims检验流程通用方法")
|
@RestController
|
@RequestMapping("/lims")
|
@RequiredArgsConstructor
|
public class LimsFlowController {
|
|
@Autowired
|
private LimsApplyTestItemService limsApplyTestItemService;
|
@Autowired
|
private LimsApplyTestService limsApplyTestService;
|
@Autowired
|
private LimsSampleInfoService limsSampleInfoService;
|
@Autowired
|
private LimsSamplingRecordService limsSamplingRecordService;
|
@Autowired
|
private LimsTestTaskService limsTestTaskService;
|
|
/**
|
* 样品请检 --》 生成样品信息记录
|
* @param
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@PostMapping("/APPLY_CHECK")
|
@AuditLog(action = "APPLY_CHECK", label = "申请检验", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? 'LEGACY_APPLY_CHECK' : ''", targetTable = "lims_apply_test",
|
targetIdExpr = "#limsApplyTestEntity.id", diff = true,
|
entityClass = LimsApplyTestEntity.class)
|
public R<String> creatLimsSampleInfo(@RequestBody LimsApplyTestEntity limsApplyTestEntity) {
|
|
/* LimsApplyTestEntity limsApplyTestEntity = new LimsApplyTestEntity();
|
|
System.out.println(limsApplyTestModel);*/
|
|
LambdaQueryWrapper<LimsApplyTestEntity> queryWrapper = new LambdaQueryWrapper<>();
|
queryWrapper.eq(LimsApplyTestEntity::getId, limsApplyTestEntity.getId());
|
// 查询检验信息
|
limsApplyTestEntity = limsApplyTestService.getOne(queryWrapper);
|
String applyStatus = limsApplyTestEntity.getApplyStatus();
|
// 判断检验状态 0 已提交 1 待定 2 成功请检(生成对应样品信息数据)
|
if ("2".equals(applyStatus)) {
|
return R.error("请检单不能重复提交");
|
}
|
|
// 如果状态部位2 则生成对应数据
|
limsApplyTestService.createSampleInfo(limsApplyTestEntity);
|
|
return R.success();
|
}
|
|
/**
|
* 通用修改状态方法
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Operation(summary = "样品取样")
|
@Parameter(name = "modelId", description = "模板id")
|
@Parameter(name = "id", description = "数据id")
|
@Parameter(name = "enumName", description = "流程节点")
|
@PostMapping("/SAMPLE_RECORD")
|
@AuditLog(action = "SAMPLE_RECORD", label = "取样记录", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? #params['id'] : ''", targetTable = "lims_sampling_record",
|
targetIdExpr = "#params['id']", diff = true, entityClass = LimsSamplingRecordEntity.class)
|
public R<String> limsFlowUpdateStatus(@RequestBody Map<String, String> params) {
|
|
String id = params.get("id");
|
String enumName = params.get("enumName");
|
|
// 获取对应枚举信息
|
LimsSampleEnum limsSampleEnum = LimsSampleEnum.valueOf(enumName);
|
// 获取表信息
|
String tableName = limsSampleEnum.getTableName();
|
|
// 获取取样信息表,并修改状态
|
LimsSamplingRecordEntity record = limsSamplingRecordService.getById(id);
|
// 已取样,待接样
|
record.setRecordStatus("1");
|
limsSamplingRecordService.updateById(record);
|
|
String sampleId = record.getSampleId();
|
// 查询样品信息
|
LambdaQueryWrapper<LimsSampleInfoEntity> sampleInfoQueryWrapper = new LambdaQueryWrapper<>();
|
sampleInfoQueryWrapper.eq(LimsSampleInfoEntity::getId, sampleId);
|
LimsSampleInfoEntity sampleInfo = limsSampleInfoService.getOne(sampleInfoQueryWrapper);
|
sampleInfo.setSampleStatus(limsSampleEnum.getCode());
|
limsSampleInfoService.updateById(sampleInfo);
|
|
return R.success();
|
}
|
|
/**
|
* 通用修改状态方法
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Operation(summary = "样品接样")
|
@Parameter(name = "modelId", description = "模板id")
|
@Parameter(name = "id", description = "数据id")
|
@Parameter(name = "enumName", description = "流程节点")
|
@PostMapping("/SAMPLE_RECEIVING")
|
@AuditLog(action = "SAMPLE_RECEIVING", label = "样品接收", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? #params['id'] : ''", targetTable = "lims_sampling_record",
|
targetIdExpr = "#params['id']", diff = true, entityClass = LimsSamplingRecordEntity.class)
|
public R<String> limsFlowUpdateStatusByReceive(@RequestBody Map<String, String> params) {
|
|
String id = params.get("id");
|
String enumName = params.get("enumName");
|
|
// 获取对应枚举信息
|
LimsSampleEnum limsSampleEnum = LimsSampleEnum.valueOf(enumName);
|
// 获取表信息
|
String tableName = limsSampleEnum.getTableName();
|
|
// 获取取样信息表,并修改状态
|
LimsSamplingRecordEntity record = limsSamplingRecordService.getById(id);
|
// 已取样,待接样
|
record.setRecordStatus("2");
|
limsSamplingRecordService.updateById(record);
|
|
String sampleId = record.getSampleId();
|
// 查询样品信息
|
LambdaQueryWrapper<LimsSampleInfoEntity> sampleInfoQueryWrapper = new LambdaQueryWrapper<>();
|
sampleInfoQueryWrapper.eq(LimsSampleInfoEntity::getId, sampleId);
|
LimsSampleInfoEntity sampleInfo = limsSampleInfoService.getOne(sampleInfoQueryWrapper);
|
sampleInfo.setSampleStatus(limsSampleEnum.getCode());
|
limsSampleInfoService.updateById(sampleInfo);
|
|
// 设置项目待领取或待分配
|
LambdaUpdateWrapper<LimsTestTaskEntity> taskQueryWrapper = new LambdaUpdateWrapper<>();
|
taskQueryWrapper.eq(LimsTestTaskEntity::getSampleId, sampleId);
|
taskQueryWrapper.set(LimsTestTaskEntity::getCheckStatus,"2");
|
limsTestTaskService.update(taskQueryWrapper);
|
|
|
return R.success();
|
}
|
|
/**
|
* 通用修改状态方法
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Operation(summary = "项目领取")
|
@Parameter(name = "modelId", description = "模板id")
|
@Parameter(name = "ids", description = "数据ids")
|
@Parameter(name = "enumName", description = "流程节点")
|
@PostMapping("/PROJECT_CLAIM")
|
@AuditLog(action = "PROJECT_CLAIM", label = "项目认领", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? 'LEGACY_PROJECT_CLAIM' : ''", targetTable = "lims_test_task",
|
targetIdExpr = "#params['ids'].split(',')[0]", diff = true,
|
targetIdsExpr = "#params['ids'].split(',')",
|
entityClass = LimsTestTaskEntity.class)
|
public R<String> limsItemSelf(@RequestBody Map<String, String> params) {
|
String ids = params.get("ids");
|
String enumName = params.get("enumName");
|
LimsSampleEnum limsSampleEnum = LimsSampleEnum.valueOf(enumName);
|
|
// 获取当前用户
|
UserInfo userInfo = UserProvider.getUser();
|
// 获取当前用户ID
|
String userId = userInfo.getUserId();
|
// 更新
|
LambdaUpdateWrapper<LimsTestTaskEntity> taskUpdateWrapper = new LambdaUpdateWrapper<>();
|
taskUpdateWrapper.in(LimsTestTaskEntity::getSampleId, ids);
|
taskUpdateWrapper.set(LimsTestTaskEntity::getCheckStatus, limsSampleEnum.getItemCode());
|
taskUpdateWrapper.set(LimsTestTaskEntity::getCheckUser, userId);
|
taskUpdateWrapper.set(LimsTestTaskEntity::getGetCheckTime, DateUtil.getNow());
|
limsTestTaskService.update(taskUpdateWrapper);
|
|
List<LimsTestTaskEntity> limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(",")));
|
// 便利修改样品状态
|
limsTestTaskEntities.forEach(limsTestTaskEntity -> {
|
LambdaUpdateWrapper<LimsSampleInfoEntity> sampleInfoUpdateWrapper = new LambdaUpdateWrapper<>();
|
sampleInfoUpdateWrapper.eq(LimsSampleInfoEntity::getId, limsTestTaskEntity.getSampleId());
|
sampleInfoUpdateWrapper.set(LimsSampleInfoEntity::getSampleStatus, limsSampleEnum.getCode());
|
limsSampleInfoService.update(sampleInfoUpdateWrapper);
|
});
|
|
return R.success();
|
}
|
|
/**
|
* 通用修改状态方法
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Operation(summary = "结果录入")
|
@Parameter(name = "modelId", description = "模板id")
|
@Parameter(name = "ids", description = "数据ids")
|
@Parameter(name = "enumName", description = "流程节点")
|
@PostMapping("/RESULT_RECORDING")
|
@AuditLog(action = "RESULT_RECORDING", label = "结果录入", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? 'LEGACY_RESULT_RECORDING' : ''", targetTable = "lims_test_task",
|
targetIdExpr = "#params['ids'].split(',')[0]", diff = true,
|
targetIdsExpr = "#params['ids'].split(',')",
|
entityClass = LimsTestTaskEntity.class)
|
public R<String> limsItemResult(@RequestBody Map<String, String> params) {
|
String ids = params.get("ids");
|
String enumName = params.get("enumName");
|
LimsSampleEnum limsSampleEnum = LimsSampleEnum.valueOf(enumName);
|
|
// 获取当前用户
|
UserInfo userInfo = UserProvider.getUser();
|
// 获取当前用户ID
|
String userId = userInfo.getUserId();
|
// 更新
|
LambdaUpdateWrapper<LimsTestTaskEntity> taskUpdateWrapper = new LambdaUpdateWrapper<>();
|
taskUpdateWrapper.in(LimsTestTaskEntity::getSampleId, ids);
|
taskUpdateWrapper.set(LimsTestTaskEntity::getCheckStatus, limsSampleEnum.getItemCode());
|
taskUpdateWrapper.set(LimsTestTaskEntity::getCheckResultTime, DateUtil.getNow());
|
limsTestTaskService.update(taskUpdateWrapper);
|
|
List<LimsTestTaskEntity> limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(",")));
|
// 便利修改样品状态
|
limsTestTaskEntities.forEach(limsTestTaskEntity -> {
|
LambdaUpdateWrapper<LimsSampleInfoEntity> sampleInfoUpdateWrapper = new LambdaUpdateWrapper<>();
|
sampleInfoUpdateWrapper.eq(LimsSampleInfoEntity::getId, limsTestTaskEntity.getSampleId());
|
sampleInfoUpdateWrapper.set(LimsSampleInfoEntity::getSampleStatus, limsSampleEnum.getCode());
|
limsSampleInfoService.update(sampleInfoUpdateWrapper);
|
});
|
|
return R.success();
|
}
|
|
/**
|
* 通用修改状态方法
|
* @return
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@Operation(summary = "结果一级审核")
|
@Parameter(name = "modelId", description = "模板id")
|
@Parameter(name = "ids", description = "数据ids")
|
@Parameter(name = "enumName", description = "流程节点")
|
@PostMapping("/RESULT_REVIEW")
|
@AuditLog(action = "RESULT_REVIEW", label = "结果复核", bizType = "LIMS_LEGACY",
|
bizCodeExpr = "#result.success ? 'LEGACY_RESULT_REVIEW' : ''", targetTable = "lims_test_task",
|
targetIdExpr = "#params['ids'].split(',')[0]", diff = true,
|
targetIdsExpr = "#params['ids'].split(',')",
|
entityClass = LimsTestTaskEntity.class)
|
public R<String> limsItemReview(@RequestBody Map<String, String> params) {
|
String ids = params.get("ids");
|
String enumName = params.get("enumName");
|
LimsSampleEnum limsSampleEnum = LimsSampleEnum.valueOf(enumName);
|
|
// 获取当前用户
|
UserInfo userInfo = UserProvider.getUser();
|
// 获取当前用户ID
|
String userId = userInfo.getUserId();
|
// 更新
|
LambdaUpdateWrapper<LimsTestTaskEntity> taskUpdateWrapper = new LambdaUpdateWrapper<>();
|
taskUpdateWrapper.in(LimsTestTaskEntity::getSampleId, ids);
|
taskUpdateWrapper.set(LimsTestTaskEntity::getCheckStatus, limsSampleEnum.getItemCode());
|
taskUpdateWrapper.set(LimsTestTaskEntity::getReviewUser, userId);
|
taskUpdateWrapper.set(LimsTestTaskEntity::getReviewTime, DateUtil.getNow());
|
limsTestTaskService.update(taskUpdateWrapper);
|
|
List<LimsTestTaskEntity> limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(",")));
|
// 便利修改样品状态
|
limsTestTaskEntities.forEach(limsTestTaskEntity -> {
|
LambdaUpdateWrapper<LimsSampleInfoEntity> sampleInfoUpdateWrapper = new LambdaUpdateWrapper<>();
|
sampleInfoUpdateWrapper.eq(LimsSampleInfoEntity::getId, limsTestTaskEntity.getSampleId());
|
sampleInfoUpdateWrapper.set(LimsSampleInfoEntity::getSampleStatus, limsSampleEnum.getCode());
|
limsSampleInfoService.update(sampleInfoUpdateWrapper);
|
});
|
|
return R.success();
|
}
|
}
|