From c8b2322c5c43b6e627ff724405281bc53c6c98f5 Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期一, 11 十二月 2023 17:12:55 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java | 133 ++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 122 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java index 2374090..e899da4 100644 --- a/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/TaskWrkServiceImpl.java @@ -1,28 +1,52 @@ package com.zy.asrs.service.impl; +import com.alibaba.fastjson.JSON; import com.core.exception.CoolException; import com.zy.asrs.domain.enums.TaskStatusType; import com.zy.asrs.domain.enums.WorkNoType; +import com.zy.asrs.entity.StaDesc; import com.zy.asrs.mapper.TaskWrkMapper; import com.zy.asrs.entity.TaskWrk; +import com.zy.asrs.service.StaDescService; import com.zy.asrs.service.TaskWrkService; import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import com.zy.asrs.utils.CommandUtils; +import com.zy.asrs.utils.Utils; import com.zy.common.service.CommonService; +import com.zy.core.DevpThread; +import com.zy.core.cache.SlaveConnection; +import com.zy.core.enums.CrnTaskModeType; +import com.zy.core.enums.SlaveType; +import com.zy.core.model.CrnSlave; +import com.zy.core.model.Task; +import com.zy.core.model.command.CrnCommand; +import com.zy.core.model.protocol.StaProtocol; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Date; +import java.util.List; +@Slf4j @Service("taskWrkService") public class TaskWrkServiceImpl extends ServiceImpl<TaskWrkMapper, TaskWrk> implements TaskWrkService { @Autowired private CommonService commonService; + @Autowired + private StaDescService staDescService; @Override public TaskWrk selectByTaskNo(String taskNo) { return this.baseMapper.selectByTaskNo(taskNo); + } + + @Override + public TaskWrk selectByStartPoint(String taskNo) { + return this.baseMapper.selectByStartPoint(taskNo); } @Override @@ -31,7 +55,12 @@ } @Override - @Transactional + public List<TaskWrk> selectReceive() { + return this.baseMapper.selectReceive(); + } + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void distribute(String taskNo, Long userId) { TaskWrk taskWrk = this.selectByTaskNo(taskNo); if (taskWrk == null) { @@ -45,6 +74,9 @@ //鍒涘缓浠诲姟 if (taskWrk.getIoType() == 1) { //1.鍏ュ簱 + if (taskWrk.getStartPoint() == null || taskWrk.getTargetPoint() == null) { + throw new CoolException("鏈帴鏀跺埌璧风偣鍜岀粓鐐癸紝涓嶈繘琛屾淳鍙�"); + } startup(taskWrk, userId); }else if(taskWrk.getIoType() == 2){ //2.鍑哄簱 @@ -58,39 +90,118 @@ @Override public void startup(TaskWrk taskWrk, Long userId) { //鍏ュ簱浠诲姟娲惧彂 + StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getStartPoint())); + if (staDesc == null) { + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } int workNo = commonService.getWorkNo(WorkNoType.PAKIN.type);//鑾峰彇鍏ュ簱宸ヤ綔鍙� taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 taskWrk.setWrkSts(2);//宸ヤ綔鐘舵�� 2.璁惧涓婅蛋 + taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 taskWrk.setModiTime(new Date()); taskWrk.setModiUser(userId); updateById(taskWrk); + + CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), true); + if (crnStn == null) { + throw new CoolException("鍫嗗灈鏈哄叆搴撶珯涓嶅瓨鍦�"); + } + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(staDesc.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosY(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setSourcePosZ(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setDestinationPosX(Utils.getBayShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosY(Utils.getLevShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅灞� + crnCommand.setDestinationPosZ(Utils.getRowShort(taskWrk.getTargetPoint())); // 鐩爣搴撲綅鎺� + crnCommand.setCommand((short)1); + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); + } } @Override public void stockOut(TaskWrk taskWrk, Long userId) { //鍑哄簱浠诲姟娲惧彂 + StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getTargetPoint())); + if (staDesc == null) { + return;//涓嶅瓨鍦ㄨ矾寰� + } int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);//鑾峰彇鍑哄簱宸ヤ綔鍙� taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 taskWrk.setWrkSts(11);//宸ヤ綔鐘舵�� 11.鐢熸垚鍑哄簱ID + taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 + taskWrk.setModiTime(new Date()); + taskWrk.setModiUser(userId); + updateById(taskWrk); + + CrnSlave.CrnStn crnStn = Utils.getCrnStnByStaNo(staDesc.getCrnStn(), false); + if (crnStn == null) { + throw new CoolException("鍫嗗灈鏈哄嚭搴撶珯涓嶅瓨鍦�"); + } + //鐢熸垚鍫嗗灈鏈哄嚭搴撳懡浠� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(taskWrk.getCrnNo()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(Utils.getBayShort(taskWrk.getStartPoint())); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(Utils.getLevShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(Utils.getRowShort(taskWrk.getStartPoint())); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getLev().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getRow().shortValue()); // 鐩爣搴撲綅灞� + crnCommand.setCommand((short)1); + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + throw new CoolException("鍫嗗灈鏈哄懡浠ょ敓鎴愬け璐�"); + } + + //鐢熸垚杈撻�佺嚎鍛戒护 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()).clone(); + staProtocol.setWorkNo(taskWrk.getWrkNo().shortValue()); + staProtocol.setStaNo((short) Integer.parseInt(taskWrk.getTargetPoint())); + if (!CommandUtils.offer(SlaveType.Devp, crnStn.getDevpPlcId(), new Task(2, staProtocol))) { + log.error("杈撻�佺嚎鍛戒护鐢熸垚澶辫触锛屽爢鍨涙満鍙�={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + throw new CoolException("杈撻�佺嚎鍛戒护鐢熸垚澶辫触"); + } + } + + @Override + public void locMove(TaskWrk taskWrk, Long userId) { + //搴撴牸绉昏浇浠诲姟娲惧彂 + StaDesc staDesc = staDescService.queryCrn(taskWrk.getIoType(), Integer.parseInt(taskWrk.getTargetPoint())); + if (staDesc == null) { + return;//涓嶅瓨鍦ㄨ矾寰� + } + int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);//鑾峰彇宸ヤ綔鍙� + taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� + taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� + taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 + taskWrk.setWrkSts(11);//宸ヤ綔鐘舵�� 11.鐢熸垚鍑哄簱ID + taskWrk.setCrnNo(staDesc.getCrnNo());//鍫嗗灈鏈哄彿 taskWrk.setModiTime(new Date()); taskWrk.setModiUser(userId); updateById(taskWrk); } @Override - public void locMove(TaskWrk taskWrk, Long userId) { - //搴撴牸绉昏浇浠诲姟娲惧彂 - int workNo = commonService.getWorkNo(WorkNoType.OTHER.type);//鑾峰彇宸ヤ綔鍙� - taskWrk.setWrkNo(workNo);//宸ヤ綔鍙� - taskWrk.setStatus(TaskStatusType.DISTRIBUTE.id);//娲惧彂鐘舵�� - taskWrk.setAssignTime(new Date());//娲惧彂鏃堕棿 - taskWrk.setWrkSts(11);//宸ヤ綔鐘舵�� 11.鐢熸垚鍑哄簱ID - taskWrk.setModiTime(new Date()); - taskWrk.setModiUser(userId); - updateById(taskWrk); + public List<TaskWrk> selectToBeHistoryData() { + return this.baseMapper.selectToBeHistoryData(); + } + + @Override + public int saveToHistory(String taskNo) { + return this.baseMapper.saveToHistory(taskNo); } } -- Gitblit v1.9.1