|
@@ -3,10 +3,13 @@ package cn.iocoder.yudao.module.museums.service.specimenoutbound;
|
|
|
import cn.iocoder.yudao.module.museums.controller.admin.specimeninfo.vo.SpecimenOutboundFormRespVO;
|
|
|
import cn.iocoder.yudao.module.museums.dal.dataobject.specimeninfo.SpecimenInfoDO;
|
|
|
import cn.iocoder.yudao.module.museums.dal.mysql.specimeninfo.SpecimenInfoMapper;
|
|
|
+import com.mzt.logapi.context.LogRecordContext;
|
|
|
+import com.mzt.logapi.starter.annotation.LogRecord;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.validation.Valid;
|
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
|
|
|
import cn.iocoder.yudao.module.museums.controller.admin.specimenoutbound.vo.*;
|
|
@@ -25,6 +28,8 @@ import java.util.stream.Collectors;
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
|
|
|
import static cn.iocoder.yudao.module.museums.enums.ErrorCodeConstants.*;
|
|
|
+import static cn.iocoder.yudao.module.museums.enums.social.LogRecordConstants.*;
|
|
|
+import static cn.iocoder.yudao.module.system.enums.LogRecordConstants.*;
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -52,7 +57,43 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
// // 返回
|
|
|
// return specimenOutbound.getId();
|
|
|
// }
|
|
|
+// @Override
|
|
|
+// public Long createSpecimenOutbound(SpecimenOutboundSaveReqVO createReqVO) {
|
|
|
+// // 将逗号分隔的字符串拆分为List<String>
|
|
|
+// List<String> infoIds = Arrays.asList(createReqVO.getInfoId().split(","));
|
|
|
+//
|
|
|
+// // 校验标本状态,收集有效的ID
|
|
|
+// List<Long> validInfoIds = infoIds.stream()
|
|
|
+// .map(infoId -> {
|
|
|
+// SpecimenInfoDO specimenInfo = specimenInfoMapper.selectById(infoId.trim()); // 去除可能的空格
|
|
|
+// if (specimenInfo == null) {
|
|
|
+// throw exception(SPECIMEN_OUTBOUND_NOT_EXISTS);
|
|
|
+// }
|
|
|
+// // 判断标本是否在馆或展陈
|
|
|
+// if (specimenInfo.getCollectionStatus() == 0 || specimenInfo.getCollectionStatus() == 2) {
|
|
|
+// return Long.valueOf(infoId); // 收集符合条件的ID
|
|
|
+// } else {
|
|
|
+// throw exception(SPECIMEN_IS_LENDING_OUT);
|
|
|
+// }
|
|
|
+// })
|
|
|
+// .collect(Collectors.toList());
|
|
|
+//
|
|
|
+// // 拼接info_id字符串
|
|
|
+// String infoIdString = String.join(",", validInfoIds.stream().map(String::valueOf).toArray(String[]::new));
|
|
|
+//
|
|
|
+// // 创建出库记录
|
|
|
+// SpecimenOutboundDO specimenOutbound = BeanUtils.toBean(createReqVO, SpecimenOutboundDO.class);
|
|
|
+// specimenOutbound.setInfoId(infoIdString); // 存储逗号分隔的标本ID
|
|
|
+// specimenOutboundMapper.insert(specimenOutbound);
|
|
|
+// // 返回出库记录ID
|
|
|
+// return specimenOutbound.getId();
|
|
|
+// }
|
|
|
+
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @LogRecord(type = MUSEUMS_SPECIMEN_TYPE, subType = MUSEUMS_SPECIMEN_OUTBOUND_SUB_TYPE,
|
|
|
+ bizNo = "{{#specimenOutbound.id}}", // 使用新增的出库单 ID
|
|
|
+ success = MUSEUMS_SPECIMEN_CREATE_OUTBOUND_SUCCESS) // 使用_DIFF记录变化
|
|
|
public Long createSpecimenOutbound(SpecimenOutboundSaveReqVO createReqVO) {
|
|
|
// 将逗号分隔的字符串拆分为List<String>
|
|
|
List<String> infoIds = Arrays.asList(createReqVO.getInfoId().split(","));
|
|
@@ -60,13 +101,12 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
// 校验标本状态,收集有效的ID
|
|
|
List<Long> validInfoIds = infoIds.stream()
|
|
|
.map(infoId -> {
|
|
|
- SpecimenInfoDO specimenInfo = specimenInfoMapper.selectById(infoId.trim()); // 去除可能的空格
|
|
|
+ SpecimenInfoDO specimenInfo = specimenInfoMapper.selectById(infoId.trim());
|
|
|
if (specimenInfo == null) {
|
|
|
throw exception(SPECIMEN_OUTBOUND_NOT_EXISTS);
|
|
|
}
|
|
|
- // 判断标本是否在馆或展陈
|
|
|
if (specimenInfo.getCollectionStatus() == 0 || specimenInfo.getCollectionStatus() == 2) {
|
|
|
- return Long.valueOf(infoId); // 收集符合条件的ID
|
|
|
+ return Long.valueOf(infoId);
|
|
|
} else {
|
|
|
throw exception(SPECIMEN_IS_LENDING_OUT);
|
|
|
}
|
|
@@ -78,14 +118,18 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
|
|
|
// 创建出库记录
|
|
|
SpecimenOutboundDO specimenOutbound = BeanUtils.toBean(createReqVO, SpecimenOutboundDO.class);
|
|
|
- specimenOutbound.setInfoId(infoIdString); // 存储逗号分隔的标本ID
|
|
|
+ specimenOutbound.setInfoId(infoIdString);
|
|
|
specimenOutboundMapper.insert(specimenOutbound);
|
|
|
+
|
|
|
+ // 记录日志上下文
|
|
|
+ LogRecordContext.putVariable("specimenOutbound", specimenOutbound); // 添加出库单对象
|
|
|
+ LogRecordContext.putVariable("createReqVO", createReqVO); // 添加请求对象
|
|
|
+
|
|
|
// 返回出库记录ID
|
|
|
return specimenOutbound.getId();
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
//用来填写回库表单,为方便添加数据,现在先用上面这段
|
|
|
// @Override
|
|
|
// public void updateSpecimenOutbound(SpecimenOutboundSaveReqVO updateReqVO) {
|
|
@@ -97,6 +141,10 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
// }
|
|
|
//填写回库表单
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @LogRecord(type = MUSEUMS_SPECIMEN_TYPE, subType = MUSEUMS_SPECIMEN_RETURN_SUB_TYPE,
|
|
|
+ bizNo = "{{#existingSpecimen.id}}", // 使用更新的出库单 ID
|
|
|
+ success = MUSEUMS_SPECIMEN_UPDATE_RETURN_SUCCESS) // 定义更新成功的日志消息
|
|
|
public void updateSpecimenOutbound(SpecimenOutboundReturnReqVO updateReqVO) {
|
|
|
// 校验存在
|
|
|
validateSpecimenOutboundExists(updateReqVO.getId());
|
|
@@ -127,15 +175,27 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
for (String infoId : infoIds) {
|
|
|
specimenInfoMapper.updateCollectionStatus(Long.valueOf(infoId.trim()), 0);
|
|
|
}
|
|
|
+
|
|
|
+ // 记录日志上下文
|
|
|
+ LogRecordContext.putVariable("existingSpecimen", existingSpecimen); // 添加更新的出库单对象
|
|
|
+ LogRecordContext.putVariable("updateReqVO", updateReqVO); // 添加请求对象
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @LogRecord(type = MUSEUMS_SPECIMEN_TYPE, subType = MUSEUMS_SPECIMEN_OUTBOUND_SUB_TYPE,
|
|
|
+ bizNo = "{{#updateReqVO.id}}", // 使用更新的出库单 ID
|
|
|
+ success = MUSEUMS_SPECIMEN_UPDATE_RECOMPILE_SUCCESS) // 使用_DIFF记录变化
|
|
|
public void recompileSpecimenOutbound(@Valid SpecimenOutboundSaveReqVO updateReqVO) {
|
|
|
// 校验存在
|
|
|
validateSpecimenOutboundExists(updateReqVO.getId());
|
|
|
+
|
|
|
// 更新
|
|
|
SpecimenOutboundDO updateObj = BeanUtils.toBean(updateReqVO, SpecimenOutboundDO.class);
|
|
|
specimenOutboundMapper.updateById(updateObj);
|
|
|
+
|
|
|
+ // 记录日志上下文
|
|
|
+ LogRecordContext.putVariable("specimenOutbound", updateObj); // 添加更新后的出库单对象
|
|
|
+ LogRecordContext.putVariable("updateReqVO", updateReqVO); // 添加请求对象
|
|
|
}
|
|
|
|
|
|
//出库审批
|
|
@@ -182,12 +242,12 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
specimenOutboundMapper.updateById(specimenOutbound);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
//确认出库,已经简化
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ @LogRecord(type = MUSEUMS_SPECIMEN_TYPE, subType = MUSEUMS_SPECIMEN_OUTBOUND_SUB_TYPE,
|
|
|
+ bizNo = "{{#id}}", // 使用出库单 ID
|
|
|
+ success = MUSEUMS_SPECIMEN_CREATE_CONFIEM_OUTBOUND_SUCCESS) // 使用_DIFF记录变化
|
|
|
public String confirmOutbound(Long id, Long operator) {
|
|
|
// 校验存在
|
|
|
validateSpecimenOutboundExists(id);
|
|
@@ -201,14 +261,22 @@ public class SpecimenOutboundServiceImpl implements SpecimenOutboundService {
|
|
|
existingSpecimen.setStatus(3) // 更新状态为已出库(3)
|
|
|
.setOperator(operator) // 设置出库员ID
|
|
|
.setOutgoingTime(LocalDateTime.now()); // 设置出库时间
|
|
|
+
|
|
|
// 更新数据库
|
|
|
specimenOutboundMapper.updateById(existingSpecimen);
|
|
|
+
|
|
|
// 更新标本信息的馆藏状态为1(借出)
|
|
|
specimenInfoMapper.updateCollectionStatus(Long.valueOf(existingSpecimen.getInfoId()), 1);
|
|
|
+
|
|
|
+ // 记录日志上下文
|
|
|
+ LogRecordContext.putVariable("specimenOutbound", existingSpecimen); // 添加出库单对象
|
|
|
+ LogRecordContext.putVariable("operator", operator); // 添加操作员ID
|
|
|
+
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
+
|
|
|
@Override
|
|
|
public void deleteSpecimenOutbound(Long id) {
|
|
|
|