From 2b31b4af1d8d6777ec2ed6afec3c68c74762fa39 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期四, 19 十月 2023 09:45:16 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java | 3 src/main/java/com/zy/asrs/entity/TaskWrk.java | 4 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 189 +++++++++++++++++++++++++++++++++-------------- src/main/resources/mapper/TaskWrkLogMapper.xml | 1 src/main/resources/mapper/TaskWrkMapper.xml | 17 ++++ src/main/java/com/zy/asrs/entity/TaskWrkLog.java | 5 + 6 files changed, 163 insertions(+), 56 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/TaskWrk.java b/src/main/java/com/zy/asrs/entity/TaskWrk.java index d7cabf4..1d95280 100644 --- a/src/main/java/com/zy/asrs/entity/TaskWrk.java +++ b/src/main/java/com/zy/asrs/entity/TaskWrk.java @@ -174,6 +174,10 @@ @TableField("command_step") private Integer commandStep; + @ApiModelProperty(value = "绉诲簱鏍囪") + @TableField("transfer_mark") + private Integer transferMark; + public TaskWrk() {} public TaskWrk(String taskNo,Integer status,Integer wrkNo,Date createTime,Integer ioType,Double ioPri,String startPoint,String targetPoint,Long modiUser,Date modiTime,String memo,String barcode,Date assignTime,Date executeTime,Date completeTime,Date cancelTime,Integer wrkSts) { diff --git a/src/main/java/com/zy/asrs/entity/TaskWrkLog.java b/src/main/java/com/zy/asrs/entity/TaskWrkLog.java index e01d5a5..742db07 100644 --- a/src/main/java/com/zy/asrs/entity/TaskWrkLog.java +++ b/src/main/java/com/zy/asrs/entity/TaskWrkLog.java @@ -177,6 +177,11 @@ @TableId(value = "id", type = IdType.AUTO) private Long id; + + @ApiModelProperty(value = "绉诲簱鏍囪") + @TableField("transfer_mark") + private Integer transferMark; + public TaskWrkLog() {} public TaskWrkLog(String taskNo,Integer status,Integer wrkNo,Date createTime,Integer ioType,Double ioPri,String startPoint,String targetPoint,Long modiUser,Date modiTime,String memo,String barcode,Date assignTime,Date executeTime,Date completeTime,Date cancelTime,Integer wrkSts,Integer crnNo,Integer commandStep) { diff --git a/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java b/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java index 87a02af..8b3164f 100644 --- a/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java +++ b/src/main/java/com/zy/asrs/mapper/TaskWrkMapper.java @@ -20,6 +20,9 @@ TaskWrk selectPakIn(@Param("crnNo") Integer crnNo, @Param("workNo") Integer workNo, @Param("startPoint") String startPoint); List<TaskWrk> selectPakOut(@Param("crnNo") Integer crnNo, @Param("targetPoint") String targetPoint); + List<TaskWrk> selectPakOut3(@Param("crnNo") Integer crnNo, @Param("targetPoint") String targetPoint); + + List<TaskWrk> selectPakOutIoType(@Param("crnNo") Integer crnNo); WrkMast selectCrnWorking(@Param("crnNo") Integer crnNo); diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java index 54a1fe2..4abda7b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -430,6 +430,28 @@ break; } + // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� + if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { + + List<TaskWrk> taskWrks1 = taskWrkMapper.selectPakOutIoType(taskWrk.getCrnNo()); + if (Cools.isEmpty(taskWrks1) && taskWrks1.size()!=0){ + break; + } + String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 + if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { + log.error("宸ヤ綔鍙�={}锛屽簱浣嶅彿={}锛屾祬搴撲綅寮傚父锛氭祬搴撲綅鍙凤細={}锛屽簱浣嶇姸鎬�={}",taskWrk.getTaskNo(),taskWrk.getStartPoint(),shallowLocNo,shallowLoc.getLocSts()); + } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { + taskWrk.setTransferMark(1); + taskWrkMapper.updateById(taskWrk); + break; + } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) { + log.error("宸ヤ綔鍙�={}锛屽簱浣嶅彿={}锛屾祬搴撲綅寮傚父锛氭祬搴撲綅鍙凤細={}锛屽簱浣嶇姸鎬�={}",taskWrk.getTaskNo(),taskWrk.getStartPoint(),shallowLocNo,shallowLoc.getLocSts()); + } + continue; + } + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� CrnCommand crnCommand = new CrnCommand(); crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� @@ -464,65 +486,120 @@ * 搴撲綅绉昏浆 */ public void locToLoc(CrnSlave slave, CrnProtocol crnProtocol){ - // 鑾峰彇宸ヤ綔妗d俊鎭� - WrkMast wrkMast = wrkMastMapper.selectLocMove(slave.getId()); - if (null == wrkMast) { - return; - } - // 鑾峰彇婧愬簱浣嶄俊鎭� - LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo()); - if (null == sourceSta) { - log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈡簮搴撲綅澶辫触锛佸伐浣滃彿={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); - return; - } - // 婧愬簱浣� 搴撲綅鐘舵�佸垽鏂� - if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("S")) { - return; - } - // 鑾峰彇鐩爣搴撲綅淇℃伅 - LocMast sta = locMastService.selectById(wrkMast.getLocNo()); - if (null == sta) { - log.error("宸ヤ綔妗e簱浣嶇Щ杞け璐ワ紝鍘熷洜锛氭绱㈢洰鏍囧簱浣嶅け璐ワ紒宸ヤ綔鍙�={}锛屾簮搴撲綅={}", wrkMast.getWrkNo(), wrkMast.getLocNo()); - return; - } - // 鑾峰彇鍫嗗灈鏈轰俊鎭� 骞� 鍒ゆ柇鏄惁鍙叆鍑� - BasCrnp basCrnp = basCrnpService.selectById(slave.getId()); - if (!basCrnp.getInEnable().equals("Y") && !basCrnp.getOutEnable().equals("Y")) { - return; - } + for (CrnSlave.CrnStn crnStn : slave.getCrnOutStn()) { + // 鑾峰彇宸ヤ綔鐘舵�佷负11锛堢敓鎴愬嚭搴揑D锛夌殑鍑哄簱宸ヤ綔妗� + List<TaskWrk> taskWrks = taskWrkMapper.selectPakOut3(slave.getId(), crnStn.getStaNo().toString()); + for (TaskWrk taskWrk : taskWrks){ + if (taskWrk == null) { + continue; + } + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (taskWrk.getIoType() != 3 || taskWrk.getTargetPoint() == null) { + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/鐩爣搴撲綅鍙�, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", taskWrk.getWrkNo(), taskWrk.getTargetPoint(), taskWrk.getIoType()); + continue; + } + // 鑾峰彇婧愬簱浣嶄俊鎭� + String locNo = taskWrk.getStartPoint(); + LocMast sourceSta = locMastService.selectById(locNo); + if (!sourceSta.getLocSts().equals("R") &&!sourceSta.getLocSts().equals("P")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts()); + continue; + } - // 鍫嗗灈鏈烘帶鍒惰繃婊� - if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { - return; - } + // 鑾峰彇鐩爣搴撲綅淇℃伅 + String locNoEnd = taskWrk.getTargetPoint(); + LocMast sourceEnd = locMastService.selectById(locNoEnd); + if (!sourceEnd.getLocSts().equals("S") && !sourceEnd.getLocSts().equals("Q")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, sourceSta.getLocSts()); + continue; + } - // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (wrkMastMapper.selectWorking(slave.getId()) != null) { - return; - } - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - CrnCommand crnCommand = new CrnCommand(); - crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� - crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� - crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� - crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 - crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 - crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 - crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 - crnCommand.setDestinationPosX(sta.getRow1().shortValue()); // 鐩爣搴撲綅鎺� - crnCommand.setDestinationPosY(sta.getBay1().shortValue()); // 鐩爣搴撲綅鍒� - crnCommand.setDestinationPosZ(sta.getLev1().shortValue()); // 鐩爣搴撲綅灞� - if (!CommandUtils.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { - log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� - Date now = new Date(); - wrkMast.setWrkSts(12L); - wrkMast.setCrnStrTime(now); - wrkMast.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast) == 0) { - log.error("銆愬簱浣嶇Щ杞�� 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); +// // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); +// StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); +// if (staProtocol == null) { +// break; +// } else { +// staProtocol = staProtocol.clone(); +// } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (taskWrkMapper.selectCrnWorking(slave.getId()) != null) { + continue; + } + + // 璧峰娣卞簱浣嶆祬搴撲綅涓嶄负绌� + if (Utils.isDeepLoc(slaveProperties, taskWrk.getStartPoint())) { + // 鑾峰彇娴呭簱浣嶄俊鎭� + String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getStartPoint()); + LocMast shallowLocMast = locMastService.selectById(shallowLocNo); + if (!shallowLocMast.getLocSts().equals("O")) { + log.error("绉诲簱鎿嶄綔璧峰搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts()); + continue; + } + } + + // 鐩爣搴撲綅涓烘繁搴撲綅涓旀祬搴撲綅涓嶄负绌� + if (Utils.isDeepLoc(slaveProperties, taskWrk.getTargetPoint())) { + // 鑾峰彇娴呭簱浣嶄俊鎭� + String shallowLocNo = Utils.getShallowLoc(slaveProperties, taskWrk.getTargetPoint()); + LocMast shallowLocMast = locMastService.selectById(shallowLocNo); + if (!shallowLocMast.getLocSts().equals("O")) { + log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娴呭簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, shallowLocMast.getLocSts()); + continue; + } + } + + // 鐩爣搴撲綅涓烘祬搴撲綅涓旀繁搴撲綅鏃犺揣 + if (Utils.isShallowLoc(slaveProperties, taskWrk.getTargetPoint())) { + // 鑾峰彇娣卞簱浣嶄俊鎭� + String deepLocNo = Utils.getDeepLoc(slaveProperties, taskWrk.getTargetPoint()); + LocMast deepLocMast = locMastService.selectById(deepLocNo); + if (!deepLocMast.getLocSts().equals("F") && !deepLocMast.getLocSts().equals("D") ) { + log.error("绉诲簱鎿嶄綔鐩爣搴撲綅娣卞簱浣嶇姸鎬佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", locNo, deepLocMast.getLocSts()); + continue; + } + } + + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(taskWrk.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(sourceSta.getRow1().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(sourceSta.getBay1().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(sourceSta.getLev1().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(sourceEnd.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(sourceEnd.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(sourceEnd.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!CommandUtils.offer(SlaveType.Crn, taskWrk.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", taskWrk.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� + Date now = new Date(); + taskWrk.setWrkSts(12); + taskWrk.setModiTime(now); + if (taskWrkMapper.updateById(taskWrk) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 11.鐢熸垚鍑哄簱ID => 12.鍚婅溅鍑哄簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", taskWrk.getWrkNo()); + } + break; + } + return; } } diff --git a/src/main/resources/mapper/TaskWrkLogMapper.xml b/src/main/resources/mapper/TaskWrkLogMapper.xml index 3a3ab06..e07c447 100644 --- a/src/main/resources/mapper/TaskWrkLogMapper.xml +++ b/src/main/resources/mapper/TaskWrkLogMapper.xml @@ -24,6 +24,7 @@ <result column="wrk_sts" property="wrkSts" /> <result column="crn_no" property="crnNo" /> <result column="command_step" property="commandStep" /> + <result column="transfer_mark" property="transferMark" /> </resultMap> diff --git a/src/main/resources/mapper/TaskWrkMapper.xml b/src/main/resources/mapper/TaskWrkMapper.xml index c64e62a..5a199cd 100644 --- a/src/main/resources/mapper/TaskWrkMapper.xml +++ b/src/main/resources/mapper/TaskWrkMapper.xml @@ -23,6 +23,7 @@ <result column="wrk_sts" property="wrkSts" /> <result column="crn_no" property="crnNo" /> <result column="command_step" property="commandStep" /> + <result column="transfer_mark" property="transferMark" /> </resultMap> @@ -48,6 +49,13 @@ order by io_pri desc,create_time,wrk_no ASC </select> + <select id="selectPakOutIoType" resultMap="BaseResultMap"> + select * from dbo.wcs_task_wrk + where crn_no=#{crnNo} + and io_type = 3 + order by io_pri desc,create_time,wrk_no ASC + </select> + <select id="selectPakOut" resultMap="BaseResultMap"> select * from dbo.wcs_task_wrk where crn_no=#{crnNo} @@ -57,6 +65,15 @@ order by io_pri desc,create_time,wrk_no ASC </select> + <select id="selectPakOut3" resultMap="BaseResultMap"> + select * from dbo.wcs_task_wrk + where crn_no=#{crnNo} + and target_point=#{targetPoint} + and wrk_sts=11 + and io_type = 3 + order by io_pri desc,create_time,wrk_no ASC + </select> + <select id="selectCrnWorking" resultMap="BaseResultMap"> select top 1 * from dbo.wcs_task_wrk where 1=1 -- Gitblit v1.9.1