Browse Source

update

tags/v0
zhaohe 7 months ago
parent
commit
badcc9e13a
  1. 7
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC40ApplyIncubatorPos.java
  2. 2
      src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC41ProcessSample.java
  3. 16
      src/main/java/a8k/app/service/statemgr/IncubationPlateStateMgrService.java

7
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC40ApplyIncubatorPos.java

@ -57,7 +57,12 @@ public class AC40ApplyIncubatorPos extends A8kActionTask {
ProjectTaskContext cxt = projectContextMgrService.findCxt(tube.getSampleId(), toDoProj); ProjectTaskContext cxt = projectContextMgrService.findCxt(tube.getSampleId(), toDoProj);
//申请孵育盘位置 //申请孵育盘位置
cxt.setIncubatorPos(incubationPlateStateMgrService.takeOneIncubationIDLEPos());
cxt.setIncubatorPos(incubationPlateStateMgrService.takeOneIncubationIDLEPos(
(IncubatorPos pos)->{
incubationPlateStateMgrService.syncProjInfo(pos, cxt.getProjBuildinInfo(),cxt.getProjExtInfoCard());
incubationPlateStateMgrService.syncSampleInfo(pos, cxt.getSampleInfo());
}
));
//使用耗材 //使用耗材
consumablesMgrService.removeReserveConsumable(cxt.getConsumable()); consumablesMgrService.removeReserveConsumable(cxt.getConsumable());

2
src/main/java/a8k/app/service/mainctrl/mainflowctrl/action/AC41ProcessSample.java

@ -296,8 +296,6 @@ public class AC41ProcessSample extends A8kActionTask {
UIMessage.info(log, "开始孵育"); UIMessage.info(log, "开始孵育");
cxt.setStartIncubatedTime(System.currentTimeMillis()); cxt.setStartIncubatedTime(System.currentTimeMillis());
cxt.setIncubatedTimeSec(cxt.getProjBuildinInfo().reactionPlateIncubationTimeMin * 60); cxt.setIncubatedTimeSec(cxt.getProjBuildinInfo().reactionPlateIncubationTimeMin * 60);
incubationPlateStateMgrService.syncSampleInfo(cxt.getIncubatorPos(), Objects.requireNonNull(ProjInfoUtils.buildProjBrefInfo(cxt)), cxt.getSampleInfo());
incubationPlateStateMgrService.syncProjInfo(cxt.getIncubatorPos(), cxt.getProjBuildinInfo(), cxt.getProjExtInfoCard());
incubationPlateStateMgrService.startIncubating(cxt.getIncubatorPos(), cxt.getStartIncubatedTime(), cxt.getIncubatedTimeSec()); incubationPlateStateMgrService.startIncubating(cxt.getIncubatorPos(), cxt.getStartIncubatedTime(), cxt.getIncubatedTimeSec());
} }

16
src/main/java/a8k/app/service/statemgr/IncubationPlateStateMgrService.java

@ -12,6 +12,7 @@ import a8k.app.a8ktype.type.ProjBriefInfo;
import a8k.app.a8ktype.error.AppError; import a8k.app.a8ktype.error.AppError;
import a8k.app.dao.db.type.ProjExtInfoCard; import a8k.app.dao.db.type.ProjExtInfoCard;
import a8k.app.utils.ProjBuildinInfo; import a8k.app.utils.ProjBuildinInfo;
import a8k.app.utils.ProjInfoUtils;
import a8k.app.utils.ZTimeUtils; import a8k.app.utils.ZTimeUtils;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
@ -26,6 +27,11 @@ import java.util.List;
@Slf4j @Slf4j
public class IncubationPlateStateMgrService { public class IncubationPlateStateMgrService {
@FunctionalInterface
public interface SyncState {
void syncState(IncubatorPos pos);
}
@Resource @Resource
GStateMgrService gStateMgrService; GStateMgrService gStateMgrService;
@ -105,13 +111,14 @@ public class IncubationPlateStateMgrService {
return null; return null;
} }
synchronized public IncubatorPos takeOneIncubationIDLEPos() {
synchronized public IncubatorPos takeOneIncubationIDLEPos(SyncState syncState) {
var subtanks = incubationPlate.subtanks; var subtanks = incubationPlate.subtanks;
for (IncubationSubTank subtank : subtanks) { for (IncubationSubTank subtank : subtanks) {
if (subtank.state.equals(IncubationSubTankState.EMPTY)) { if (subtank.state.equals(IncubationSubTankState.EMPTY)) {
subtank.state = IncubationSubTankState.RESERVED; subtank.state = IncubationSubTankState.RESERVED;
log.info("孵育盘[{}] 状态->预定", subtank.getPos()); log.info("孵育盘[{}] 状态->预定", subtank.getPos());
syncState.syncState(subtank.getPos());
return subtank.getPos(); return subtank.getPos();
} }
} }
@ -154,15 +161,13 @@ public class IncubationPlateStateMgrService {
} }
} }
synchronized public void syncSampleInfo(IncubatorPos pos, ProjBriefInfo projBriefInfo, SampleInfo sampleInfo) {
synchronized public void syncSampleInfo(IncubatorPos pos, SampleInfo sampleInfo) {
var subtanks = incubationPlate.subtanks; var subtanks = incubationPlate.subtanks;
subtanks[pos.off].sampleId = sampleInfo.sampleId; subtanks[pos.off].sampleId = sampleInfo.sampleId;
subtanks[pos.off].projId = projBriefInfo.projId;
subtanks[pos.off].bloodType = sampleInfo.bloodType; subtanks[pos.off].bloodType = sampleInfo.bloodType;
subtanks[pos.off].sampleBarcode = sampleInfo.sampleBarcode; subtanks[pos.off].sampleBarcode = sampleInfo.sampleBarcode;
subtanks[pos.off].userid = sampleInfo.userid; subtanks[pos.off].userid = sampleInfo.userid;
subtanks[pos.off].isEmergency = sampleInfo.isEmergency; subtanks[pos.off].isEmergency = sampleInfo.isEmergency;
subtanks[pos.off].projInfo = projBriefInfo;
} }
synchronized public void syncProjInfo(IncubatorPos pos, ProjBuildinInfo projBuildinInfo, ProjExtInfoCard projExtInfoCard) { synchronized public void syncProjInfo(IncubatorPos pos, ProjBuildinInfo projBuildinInfo, ProjExtInfoCard projExtInfoCard) {
@ -170,6 +175,9 @@ public class IncubationPlateStateMgrService {
subtanks[pos.off].projBuildinInfo = projBuildinInfo; subtanks[pos.off].projBuildinInfo = projBuildinInfo;
subtanks[pos.off].projExtInfoCard = projExtInfoCard; subtanks[pos.off].projExtInfoCard = projExtInfoCard;
subtanks[pos.off].lotId = projExtInfoCard.lotId; subtanks[pos.off].lotId = projExtInfoCard.lotId;
subtanks[pos.off].projId = projBuildinInfo.projId;
subtanks[pos.off].projInfo = ProjInfoUtils.buildProjBrefInfo(projBuildinInfo);
} }
synchronized public void startIncubating(IncubatorPos pos, Long startIncubatedTime, Integer incubatedTimeSec) { synchronized public void startIncubating(IncubatorPos pos, Long startIncubatedTime, Integer incubatedTimeSec) {

Loading…
Cancel
Save