package com.zy.asrs.service.impl; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.domain.param.RingThroughParam; import com.zy.asrs.entity.BasDevpPosition; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.entity.param.WcsDataSynchronizationParam; import com.zy.asrs.entity.param.WcsRgvListParam; import com.zy.asrs.entity.param.WcsTaskDistributionParam; import com.zy.asrs.entity.param.WcsTaskListParam; import com.zy.asrs.service.BasDevpPositionService; import com.zy.asrs.service.OpenService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.utils.SortTheExecutionOfTheCarUtil; import com.zy.asrs.utils.Utils; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.RgvSlave; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.properties.SlaveProperties; import com.zy.core.thread.RgvThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * Created by vincent on 2022/4/9 */ @Slf4j @Service public class OpenServiceImpl implements OpenService { @Autowired private SlaveProperties slaveProperties; @Autowired private WrkMastService wrkMastService; @Autowired private BasDevpPositionService basDevpPositionService; @Value("${constant-parameters.perimeter}") private Long perimeter; @Override @Transactional public R wcsTaskDistribution(WcsTaskDistributionParam param) { Date now = new Date(); WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper().eq("wrk_no", param.getTaskNo())); if (!Cools.isEmpty(wrkMast1)){ return R.error("工作号已存在").add("工作号已存在,taskNo="+param.getTaskNo()); } WrkMast wrkMast = new WrkMast(); wrkMast.setWrkNo(param.getTaskNo()); wrkMast.setSourceStaNo(param.getStartSta$()); wrkMast.setStaNo(param.getEndSta$()); wrkMast.setWrkSts(1L); wrkMast.setIoType(1); wrkMast.setModiTime(now); wrkMast.setAppeTime(now); wrkMastService.insert(wrkMast); return R.ok(); } @Override @Transactional public R wcsTaskStatus(Long timestamp) { try{ WcsDataSynchronizationParam wcsDataSynchronizationParam = new WcsDataSynchronizationParam(); List wcsTaskListParamList = new ArrayList<>(); List wcsRgvListParamList = new ArrayList<>(); List wrkMastList = wrkMastService.selectList(new EntityWrapper<>()); List basDevpPositions = basDevpPositionService.selectList(new EntityWrapper().orderBy("plc_position",false)); for (WrkMast wrkMast : wrkMastList){ WcsTaskListParam wcsTaskListParam = new WcsTaskListParam(wrkMast); wcsTaskListParamList.add(wcsTaskListParam); } for (RgvSlave rgv : slaveProperties.getRgv()) { // 获取RGV信息 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); if (rgvThread == null) { continue; } RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); if (rgvProtocol == null) { continue; } WcsRgvListParam wcsRgvListParam = new WcsRgvListParam(); wcsRgvListParam.setRgvNo(rgv.getId().toString()); wcsRgvListParam.setTaskNo(Cools.isEmpty(rgvProtocol.getTaskNo1()) ? null:rgvProtocol.getTaskNo1().toString()); wcsRgvListParam.setStatus(rgvProtocol.statusType.desc); wcsRgvListParam.setCurrSta(SortTheExecutionOfTheCarUtil.LatelyAndLessThanWcs(basDevpPositions,rgvProtocol.getRgvPos(),perimeter).toString()); List arrayList = new ArrayList<>(); if (rgvProtocol.getAlarm()!=0){ arrayList.add(rgvProtocol.getAlarm$()); } wcsRgvListParam.setError(arrayList); wcsRgvListParamList.add(wcsRgvListParam); } wcsDataSynchronizationParam.setTaskList(wcsTaskListParamList); wcsDataSynchronizationParam.setRgvList(wcsRgvListParamList); wcsDataSynchronizationParam.setTimestamp(timestamp); return R.ok().add(wcsDataSynchronizationParam); } catch (Exception e){ return R.error("异常").add("异常信息:"+e); } } }