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