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 creatLimsSampleInfo(@RequestBody LimsApplyTestEntity limsApplyTestEntity) { /* LimsApplyTestEntity limsApplyTestEntity = new LimsApplyTestEntity(); System.out.println(limsApplyTestModel);*/ LambdaQueryWrapper 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 limsFlowUpdateStatus(@RequestBody Map 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 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 limsFlowUpdateStatusByReceive(@RequestBody Map 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 sampleInfoQueryWrapper = new LambdaQueryWrapper<>(); sampleInfoQueryWrapper.eq(LimsSampleInfoEntity::getId, sampleId); LimsSampleInfoEntity sampleInfo = limsSampleInfoService.getOne(sampleInfoQueryWrapper); sampleInfo.setSampleStatus(limsSampleEnum.getCode()); limsSampleInfoService.updateById(sampleInfo); // 设置项目待领取或待分配 LambdaUpdateWrapper 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 limsItemSelf(@RequestBody Map 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 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 limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(","))); // 便利修改样品状态 limsTestTaskEntities.forEach(limsTestTaskEntity -> { LambdaUpdateWrapper 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 limsItemResult(@RequestBody Map 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 taskUpdateWrapper = new LambdaUpdateWrapper<>(); taskUpdateWrapper.in(LimsTestTaskEntity::getSampleId, ids); taskUpdateWrapper.set(LimsTestTaskEntity::getCheckStatus, limsSampleEnum.getItemCode()); taskUpdateWrapper.set(LimsTestTaskEntity::getCheckResultTime, DateUtil.getNow()); limsTestTaskService.update(taskUpdateWrapper); List limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(","))); // 便利修改样品状态 limsTestTaskEntities.forEach(limsTestTaskEntity -> { LambdaUpdateWrapper 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 limsItemReview(@RequestBody Map 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 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 limsTestTaskEntities = limsTestTaskService.listByIds(Arrays.asList(ids.split(","))); // 便利修改样品状态 limsTestTaskEntities.forEach(limsTestTaskEntity -> { LambdaUpdateWrapper sampleInfoUpdateWrapper = new LambdaUpdateWrapper<>(); sampleInfoUpdateWrapper.eq(LimsSampleInfoEntity::getId, limsTestTaskEntity.getSampleId()); sampleInfoUpdateWrapper.set(LimsSampleInfoEntity::getSampleStatus, limsSampleEnum.getCode()); limsSampleInfoService.update(sampleInfoUpdateWrapper); }); return R.success(); } }