|
|
|
|
@ -2,17 +2,30 @@ |
|
|
|
|
package org.springblade.lims.service.impl; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.alibaba.nacos.common.utils.CollectionUtils; |
|
|
|
|
import com.alibaba.nacos.common.utils.StringUtils; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
|
import org.springblade.core.mp.base.BaseServiceImpl; |
|
|
|
|
import org.springblade.core.secure.utils.AuthUtil; |
|
|
|
|
import org.springblade.core.tool.api.R; |
|
|
|
|
import org.springblade.lims.entry.ContractSample; |
|
|
|
|
import org.springblade.lims.entry.ETask; |
|
|
|
|
import org.springblade.lims.entry.Examine; |
|
|
|
|
import org.springblade.lims.entry.Simple; |
|
|
|
|
import org.springblade.lims.mapper.ExamineMapper; |
|
|
|
|
import org.springblade.lims.service.IContractSampleService; |
|
|
|
|
import org.springblade.lims.service.IETaskService; |
|
|
|
|
import org.springblade.lims.service.IExamineService; |
|
|
|
|
import org.springblade.lims.service.ISimpleService; |
|
|
|
|
import org.springblade.resource.enums.SysTypeEnum; |
|
|
|
|
import org.springblade.resource.feign.IMessageClient; |
|
|
|
|
import org.springblade.system.feign.ISysClient; |
|
|
|
|
import org.springblade.system.user.entity.User; |
|
|
|
|
import org.springblade.system.user.feign.IUserClient; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.util.Date; |
|
|
|
|
import java.util.List; |
|
|
|
|
@ -30,9 +43,16 @@ public class ExamineServiceImpl extends BaseServiceImpl<ExamineMapper, Examine> |
|
|
|
|
|
|
|
|
|
private final IETaskService taskService; |
|
|
|
|
|
|
|
|
|
private final ExamineMapper examineMapper; |
|
|
|
|
private final IMessageClient messageClient; |
|
|
|
|
|
|
|
|
|
private final IContractSampleService contractSampleService; |
|
|
|
|
|
|
|
|
|
private final IUserClient userClient; |
|
|
|
|
|
|
|
|
|
private final ISimpleService simpleService; |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public void updateSimpleCurrPlace(Long taskId, Long deptId, int operateType) { |
|
|
|
|
|
|
|
|
|
// 上上游task
|
|
|
|
|
@ -103,4 +123,108 @@ public class ExamineServiceImpl extends BaseServiceImpl<ExamineMapper, Examine> |
|
|
|
|
updateBatchById(examineList); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
public void receiveSubmit(Examine examine) throws Exception { |
|
|
|
|
|
|
|
|
|
// 刷新本任务书下所有检验的样品所在位置
|
|
|
|
|
this.updateSimpleCurrPlace(examine.getTempTaskId(), examine.getDeptId(), 1); |
|
|
|
|
|
|
|
|
|
String userId = AuthUtil.getUserId().toString(); |
|
|
|
|
Examine examine1 = this.getById(examine.getId()); |
|
|
|
|
if (userId.equals(examine1.getLockBy())) { |
|
|
|
|
if (examine.getExamineBy() == null || "".equals(examine.getExamineBy())) { |
|
|
|
|
examine.setExamineBy(userId); |
|
|
|
|
} |
|
|
|
|
examine.setReceiveTime(new Date()); |
|
|
|
|
examine.setIsDistribute(1); |
|
|
|
|
// examine.setIsFinished("-1");
|
|
|
|
|
examine.setLockBy(""); |
|
|
|
|
// examine.setLockTime(null);
|
|
|
|
|
if (examine.getSimpleReceiver() != null) { |
|
|
|
|
R<User> userR = userClient.userInfoById(Long.valueOf(examine.getSimpleReceiver())); |
|
|
|
|
examine.setSimpleReceiverName(userR.getData().getName()); |
|
|
|
|
} |
|
|
|
|
this.updateById(examine); |
|
|
|
|
} else { |
|
|
|
|
throw new Exception("实验正在领取中,不可提交!"); |
|
|
|
|
} |
|
|
|
|
// 获取本科室对应的实验
|
|
|
|
|
LambdaQueryWrapper<Examine> wrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
wrapper.eq(Examine::getETaskId, examine1.getETaskId()); |
|
|
|
|
List<Examine> examineList = this.list(wrapper); |
|
|
|
|
// 如果实验被全部领取,子任务状态改为1(待检测)
|
|
|
|
|
ETask eTask = new ETask(); |
|
|
|
|
eTask.setId(examine1.getETaskId()); |
|
|
|
|
eTask.setSimpleSource(examine.getSimpleSource()); |
|
|
|
|
eTask.setSimpleReceiver(examine.getSimpleReceiver()); |
|
|
|
|
eTask.setSimpleReceiverName(examine.getSimpleReceiverName()); |
|
|
|
|
eTask.setSimpleReceiveTime(examine.getReceiveTime()); |
|
|
|
|
int a = 0; |
|
|
|
|
if (CollectionUtils.isNotEmpty(examineList)) { |
|
|
|
|
for (Examine examine2 : examineList) { |
|
|
|
|
if (examine2.getIsDistribute() == 0) { |
|
|
|
|
examine2.setSimpleSource(examine.getSimpleSource()); |
|
|
|
|
examine2.setSimpleReceiver(examine.getSimpleReceiver()); |
|
|
|
|
examine2.setSimpleReceiverName(examine.getSimpleReceiverName()); |
|
|
|
|
examine2.setSimpleReceiverTime(examine.getReceiveTime()); |
|
|
|
|
} else if (examine2.getIsDistribute() == 1) { |
|
|
|
|
a += 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
this.updateBatchById(examineList); |
|
|
|
|
} |
|
|
|
|
if (a == examineList.size()) { |
|
|
|
|
eTask.setStatus(1); |
|
|
|
|
} |
|
|
|
|
taskService.updateById(eTask); |
|
|
|
|
// 发送提示消息
|
|
|
|
|
User user = userClient.userInfoById(AuthUtil.getUserId()).getData(); |
|
|
|
|
if (!"1432876315142520834".equals(user.getRoleId())) { |
|
|
|
|
messageClient.event(SysTypeEnum.INFORM.getValue(), "填写实验", |
|
|
|
|
"你有新的检验数据待提交,请及时查看", 1, 5, examine.getExamineBy(),"/plugin/workflow/process/experimentcrew"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 样品收样登记表信息修改(合同评审)
|
|
|
|
|
LambdaQueryWrapper<ContractSample> queryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
queryWrapper.eq(ContractSample::getEntrustId,examine1.getEntrustId()); |
|
|
|
|
List<ContractSample> contractSamples = contractSampleService.list(queryWrapper); |
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(contractSamples)) { |
|
|
|
|
if (StringUtils.isBlank(contractSamples.get(0).getSampleReceiver())) { |
|
|
|
|
for (ContractSample contractSample : contractSamples) { |
|
|
|
|
// 领样人
|
|
|
|
|
contractSample.setSampleReceiver(examine.getSimpleReceiver()); |
|
|
|
|
contractSample.setSampleReceiverName(examine.getSimpleReceiverName()); |
|
|
|
|
// 领样时间
|
|
|
|
|
contractSample.setSampleReceiverTime(examine.getSimpleReceiverTime()); |
|
|
|
|
// 获取第一个原始编号对应的样品
|
|
|
|
|
LambdaQueryWrapper<Simple> qw = new LambdaQueryWrapper<>(); |
|
|
|
|
qw.eq(Simple::getEntrustId, contractSample.getEntrustId()); |
|
|
|
|
qw.eq(Simple::getIsReagent, "0"); |
|
|
|
|
qw.eq(Simple::getRecessiveNum, contractSample.getRecessiveNum().split("-")[0]); |
|
|
|
|
qw.orderByAsc(Simple::getSort); |
|
|
|
|
List<Simple> simples1 = simpleService.list(qw); |
|
|
|
|
|
|
|
|
|
// 获取最后一个原始编号对应的样品
|
|
|
|
|
qw.clear(); |
|
|
|
|
qw.eq(Simple::getEntrustId, contractSample.getEntrustId()); |
|
|
|
|
qw.eq(Simple::getIsReagent, "0"); |
|
|
|
|
qw.eq(Simple::getRecessiveNum, contractSample.getRecessiveNum().split("-")[1]); |
|
|
|
|
qw.orderByDesc(Simple::getSort); |
|
|
|
|
List<Simple> simples2 = simpleService.list(qw); |
|
|
|
|
|
|
|
|
|
// 第一个样品编号
|
|
|
|
|
String experieNum = simples1.get(0).getExperieNum(); |
|
|
|
|
// 最后一个样品编号序号
|
|
|
|
|
String[] strings = simples2.get(0).getExperieNum().split("-"); |
|
|
|
|
// 拼接收样登记表需要样品编号
|
|
|
|
|
String num = experieNum + "-" + strings[strings.length - 1]; |
|
|
|
|
contractSample.setExperimentNum(num); |
|
|
|
|
} |
|
|
|
|
contractSampleService.updateBatchById(contractSamples); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|