From 986cf93c869bf8d5181f96a4a8b1a6092fc34247 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 05 七月 2023 16:57:06 +0800 Subject: [PATCH] RGV control --- src/main/java/com/zy/common/config/RedisConfig.java | 3 src/main/java/com/zy/common/utils/RedisUtil.java | 29 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 548 +++++++++++++++++++++++--------------- src/main/resources/mapper/BasRgvPathMapper.xml | 24 + src/main/java/com/zy/asrs/entity/BasRgvPath.java | 154 +++++++++++ src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 14 + src/main/resources/mapper/WrkMastMapper.xml | 15 + src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java | 16 + src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java | 14 + src/main/java/com/zy/core/MainProcess.java | 4 src/main/java/com/zy/asrs/service/BasRgvPathService.java | 10 11 files changed, 608 insertions(+), 223 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/BasRgvPath.java b/src/main/java/com/zy/asrs/entity/BasRgvPath.java new file mode 100644 index 0000000..280ce40 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/BasRgvPath.java @@ -0,0 +1,154 @@ +package com.zy.asrs.entity; + +import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; +import com.baomidou.mybatisplus.annotations.TableField; +import com.core.common.SpringUtils; +import com.zy.system.service.UserService; +import com.zy.system.entity.User; +import java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import com.core.common.SpringUtils; +import com.zy.system.service.UserService; +import com.zy.system.entity.User; +import java.text.SimpleDateFormat; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("asr_bas_rgv_path") +public class BasRgvPath implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * RGV缂栧彿 + */ + @ApiModelProperty(value= "RGV缂栧彿") + @TableId(value = "rgv_no", type = IdType.INPUT) + @TableField("rgv_no") + private Integer rgvNo; + + /** + * RGV杩愯璺緞 + */ + @ApiModelProperty(value= "RGV杩愯璺緞") + private String path; + + /** + * 鐘舵�� 1: 姝e父 0: 绂佺敤 + */ + @ApiModelProperty(value= "鐘舵�� 1: 姝e父 0: 绂佺敤 ") + private Integer status; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + @TableField("create_by") + private Long createBy; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("create_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("update_by") + private Long updateBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("update_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public BasRgvPath() {} + + public BasRgvPath(Integer rgvNo,String path,Integer status,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { + this.rgvNo = rgvNo; + this.path = path; + this.status = status; + this.createBy = createBy; + this.createTime = createTime; + this.updateBy = updateBy; + this.updateTime = updateTime; + this.memo = memo; + } + +// BasRgvPath basRgvPath = new BasRgvPath( +// null, // RGV缂栧彿[闈炵┖] +// null, // RGV杩愯璺緞 +// null, // 鐘舵�� +// null, // 娣诲姞浜哄憳 +// null, // 娣诲姞鏃堕棿 +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿 +// null // 澶囨敞 +// ); + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "姝e父"; + case 0: + return "绂佺敤"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.createBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getUsername()); + } + return null; + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + public String getUpdateBy$(){ + UserService service = SpringUtils.getBean(UserService.class); + User user = service.selectById(this.updateBy); + if (!Cools.isEmpty(user)){ + return String.valueOf(user.getUsername()); + } + return null; + } + + public String getUpdateTime$(){ + if (Cools.isEmpty(this.updateTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); + } + + +} diff --git a/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java new file mode 100644 index 0000000..57967ac --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/BasRgvPathMapper.java @@ -0,0 +1,14 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.BasRgvPath; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface BasRgvPathMapper extends BaseMapper<BasRgvPath> { + + BasRgvPath selectByRgvNo(Integer rgvNo); + +} diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 6237eef..dad8f44 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -177,6 +177,20 @@ /*================================================RGV浠诲姟缁戝畾鐩稿叧 ==================================================*/ /** + * 鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔� + * @return + */ + List<WrkMast> selectWaitBindRGV(); + + /** + * 鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔� + * + * @param rgvNo + * @return + */ + List<WrkMast> selectIoRgvNo(@Param("rgvNo") Integer rgvNo); + + /** * 鏌ユ壘鏄惁瀛樺湪鍏ュ簱宸ヤ綔涓鍦ㄨ蛋鍚慠GV鐨勪换鍔� * @param wrkNo * @return diff --git a/src/main/java/com/zy/asrs/service/BasRgvPathService.java b/src/main/java/com/zy/asrs/service/BasRgvPathService.java new file mode 100644 index 0000000..a6708cd --- /dev/null +++ b/src/main/java/com/zy/asrs/service/BasRgvPathService.java @@ -0,0 +1,10 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.BasRgvPath; +import com.baomidou.mybatisplus.service.IService; + +public interface BasRgvPathService extends IService<BasRgvPath> { + + BasRgvPath selectByRgvNo(Integer rgvNo); + +} diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java new file mode 100644 index 0000000..c50e3a8 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/BasRgvPathServiceImpl.java @@ -0,0 +1,16 @@ +package com.zy.asrs.service.impl; + +import com.zy.asrs.mapper.BasRgvPathMapper; +import com.zy.asrs.entity.BasRgvPath; +import com.zy.asrs.service.BasRgvPathService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("basRgvPathService") +public class BasRgvPathServiceImpl extends ServiceImpl<BasRgvPathMapper, BasRgvPath> implements BasRgvPathService { + + @Override + public BasRgvPath selectByRgvNo(Integer rgvNo) { + return this.baseMapper.selectByRgvNo(rgvNo); + } +} 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 a0aefbe..0e6d25b 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -10,7 +10,6 @@ import com.zy.asrs.entity.*; import com.zy.asrs.mapper.BasCrnErrorMapper; import com.zy.asrs.mapper.BasRgvErrMapper; -import com.zy.asrs.mapper.WaitPakinMapper; import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; @@ -88,6 +87,8 @@ private BasRgvErrMapper basRgvErrMapper; @Autowired private BasRgvErrLogService basRgvErrLogService; + @Autowired + private BasRgvPathService basRgvPathService; @Value("${wms.url}") private String wmsUrl; @@ -513,9 +514,17 @@ } /** - * 缁戝畾灏忚溅鏂规硶 + * 鎼滅储RGV杞︺�傞�氳繃鐩爣绔欐悳绱㈠摢鍙拌溅鍙敤 */ - public synchronized void rgvBindSte() { + public synchronized Integer searchRgvNo(Integer staNo) { + BasDevp basDevp = basDevpService.selectById(staNo); + if (basDevp == null) { + return null;//鐩爣绔欎笉瀛樺湪 + } + //璺緞鍊� + int path = basDevp.getLocType3().intValue(); + + ArrayList<RgvThread> list = new ArrayList<>(); for (RgvSlave rgv : slaveProperties.getRgv()) { // 鑾峰彇RGV淇℃伅 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); @@ -529,78 +538,63 @@ continue; } - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛� - if (rgvProtocol.getStatusType() == RgvStatusType.IDLE - && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 - && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0 - ) { - // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 - if (rgvProtocol.getLastIo().equals("I")) { - if (basRgv.getInEnable().equals("Y")) { - this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱 - rgvProtocol.setLastIo("O"); - } else if (basRgv.getOutEnable().equals("Y")) { - this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱 - rgvProtocol.setLastIo("I"); - } + list.add(rgvThread); + } + + if (list.size() > 1) { + //瓒呰繃涓ゅ彴杞︼紝鎸夌収閰嶇疆鐨勮鍒欒繘琛屽垎閰� + for (RgvThread rgvThread : list) { + //鑾峰彇杞﹁締閰嶇疆鐨勮矾寰勮鍒� + BasRgvPath basRgvPath = basRgvPathService.selectByRgvNo(rgvThread.getSlave().getId()); + if (basRgvPath == null) { + continue; } - // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 - else if (rgvProtocol.getLastIo().equals("O")) { - if (basRgv.getOutEnable().equals("Y")) { - this.rgvBindSteOut(rgv, rgvProtocol); // 鍑哄簱 - rgvProtocol.setLastIo("I"); - } else if (basRgv.getInEnable().equals("Y")) { - this.rgvBindSteIn(rgv, rgvProtocol); // 鍏ュ簱 - rgvProtocol.setLastIo("O"); - } + //鐩爣绔欐槸鍚﹀寘鍚綋鍓嶈矾寰勪腑 + List<Integer> rgvPath = JSON.parseArray(basRgvPath.getPath(), Integer.class); + if (rgvPath.contains(path)) { + //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞� + return rgvThread.getSlave().getId(); } + } + }else { + //灏忎簬鎴栫瓑浜�1鍙拌溅锛屽垎閰嶅叏璺緞 + List<Integer> rgvPath = new ArrayList<Integer>(){{ + add(1);add(2);add(3);add(4);add(5);add(6); + add(7);add(8);add(9);add(10);add(11);add(12); + add(13);add(14);add(15);add(16);add(17);add(18); + }}; + if (rgvPath.contains(path)) { + //褰撳墠璺緞涓寘鍚洰鏍囩珯锛屽垯閫夊畾杩欏彴杞� + return list.get(0).getSlave().getId(); + } + } + + return null; + } + + /** + * 缁戝畾灏忚溅鏂规硶 + */ + public synchronized void rgvBindSte() { + //鑾峰彇绛夊緟缁戝畾RGV鐨勪换鍔� + List<WrkMast> wrkMasts = wrkMastMapper.selectWaitBindRGV(); + for (WrkMast wrkMast : wrkMasts) { + //鐩爣绔� + Integer staNo = wrkMast.getStaNo(); + //閫氳繃鐩爣绔欐悳绱gv鍙� + Integer rgvNo = this.searchRgvNo(staNo); + if (rgvNo == null) {//鏈壘鍒板彲鐢ㄧ殑rgv + continue; + } + + wrkMast.setRgvNo(rgvNo);//缁戝畾rgv鍙� + wrkMast.setRgvDstaNo(wrkMast.getSourceStaNo());//璁剧疆RGV鍓嶅線宸ヤ綔妗f簮绔欏彇璐� + if (wrkMastMapper.updateById(wrkMast)==0){ + log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); } } } - /** - * 缁戝畾灏忚溅鍏ュ簱鏂规硶 - */ - public synchronized void rgvBindSteIn(RgvSlave slave, RgvProtocol rgvProtocol) { - for (RgvSlave.RgvStn rgvStn: slave.getRgvInSStn()){ - Integer staNo = rgvStn.getStaNo(); - BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId()); - if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){ - continue; - }else { - WrkMast wrkMast = wrkMastMapper.selectRgvInSteWrkNo(basDevp.getWrkNo()); - if (!Cools.isEmpty(wrkMast)){ - wrkMast.setRgvNo(wrkMast.getCrnNo()>3 ? 2 : 1); - wrkMast.setAppeTime(new Date()); - if (wrkMastMapper.updateById(wrkMast)==0){ - log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); - } - } - } - } - } - - /** - * 缁戝畾灏忚溅鍑哄簱鏂规硶 - */ - public synchronized void rgvBindSteOut(RgvSlave slave, RgvProtocol rgvProtocol) { - for (RgvSlave.RgvStn rgvStn: slave.getRgvOutSStn()){ - BasDevp basDevp = basDevpService.selectById(rgvStn.getDevpPlcId()); - if (Cools.isEmpty(basDevp) || basDevp.getWrkNo()==0){ - continue; - }else { - WrkMast wrkMast = wrkMastMapper.selectRgvOutSteWrkNo(basDevp.getWrkNo()); - if (!Cools.isEmpty(wrkMast)){ - wrkMast.setRgvNo(rgvStn.getStaNo()); - wrkMast.setAppeTime(new Date()); - if (wrkMastMapper.updateById(wrkMast)==0){ - log.error("缁戝畾灏忚溅鏇存柊宸ヤ綔妗eけ璐ワ紒锛侊紒 [宸ヤ綔鍙凤細{}]", wrkMast.getWrkNo()); - } - } - } - } - } /** * 鍏ュ嚭搴� ===>> RGV鍏ュ嚭搴撲綔涓氫笅鍙� */ @@ -618,32 +612,125 @@ continue; } - // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, 骞朵笖鏃犱换鍔°�佹棤鐗╂椂鎵嶇户缁墽琛� + // 鍙湁褰揜GV绌洪棽銆佽嚜鍔�, if (rgvProtocol.getStatusType() == RgvStatusType.IDLE && rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 - && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0 +// && rgvProtocol.getTaskNo1() == 0 && rgvProtocol.getTaskNo2() == 0 +// && rgvProtocol.getLoaded1() == 0 && rgvProtocol.getLoaded2() == 0 ) { - // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 - if (rgvProtocol.getLastIo().equals("I")) { - if (basRgv.getInEnable().equals("Y")) { - this.rgvInStn(rgv, rgvProtocol); // 鍏ュ簱 - rgvProtocol.setLastIo("O"); - } else if (basRgv.getOutEnable().equals("Y")) { - this.rgvOutStn(rgv, rgvProtocol); // 鍑哄簱 - rgvProtocol.setLastIo("I"); + + //鏌ユ壘鏄惁瀛樺湪鍏ュ嚭搴撳伐浣滀腑绛夊緟RGV鎼繍鐨勪换鍔� + List<WrkMast> wrkMasts = wrkMastMapper.selectIoRgvNo(rgv.getId()); + for (WrkMast wrkMast : wrkMasts) { + if (wrkMast.getWrkSts() == 2) {//2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� + if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣 + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣 + rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� + Date now = new Date(); + wrkMast.setWrkSts(3L); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋1 => 3.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } else if (wrkMast.getWrkSts() == 4) {//4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� + if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷� + continue; + } + if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿 + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 + rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� + Date now = new Date(); + wrkMast.setWrkSts(5L); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 4.RGV鍙栬揣瀹屾垚 => 5.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } else if (wrkMast.getWrkSts() == 23) {//23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� + if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getLoaded1() != 0) {//RGV鏄惁鏃犱换鍔°�丷GV鏄惁鏃犺揣 + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.FETCH); // 宸ヤ綅1浠诲姟妯″紡: 鍙栬揣 + rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� + Date now = new Date(); + wrkMast.setWrkSts(24L); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 23.璁惧涓婅蛋1 => 24.RGV鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } + } else if (wrkMast.getWrkSts() == 25) {//25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� + if (rgvProtocol.getTaskNo1() == 0 || !rgvProtocol.getTaskNo1().equals(wrkMast.getWrkNo().shortValue())) {//RGV蹇呴』鏈変换鍔′笖浠诲姟鍜屽綋鍓嶅伐浣滄。涓�鑷� + continue; + } + if (rgvProtocol.getLoaded1() == 0) {//RGV蹇呴』鏈夌墿 + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + RgvCommand rgvCommand = new RgvCommand(); + rgvCommand.setRgvNo(wrkMast.getRgvNo()); // RGV缂栧彿 + rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� + rgvCommand.setTaskNo1(wrkMast.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� + rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 + rgvCommand.setDestinationStaNo1(wrkMast.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 + rgvCommand.setCommand((short) 1); //宸ヤ綅1浠诲姟纭 + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getRgvNo(), new Task(4, rgvCommand))) { + //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� + log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", wrkMast.getRgvNo(), JSON.toJSON(rgvCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� + Date now = new Date(); + wrkMast.setWrkSts(26L); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 25.RGV鍙栬揣瀹屾垚 => 26.RGV鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + } } } - // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 - else if (rgvProtocol.getLastIo().equals("O")) { - if (basRgv.getOutEnable().equals("Y")) { - this.rgvOutStn(rgv, rgvProtocol); // 鍑哄簱 - rgvProtocol.setLastIo("I"); - } else if (basRgv.getInEnable().equals("Y")) { - this.rgvInStn(rgv, rgvProtocol); // 鍏ュ簱 - rgvProtocol.setLastIo("O"); - } - } + } } } @@ -1598,6 +1685,7 @@ * 鏍规嵁RGV瀹屾垚淇″彿锛屾墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔锛屽拰RGV鐨勪换鍔′笅鍙� */ public synchronized void rgvFinished() { + Date now = new Date(); for (RgvSlave rgv : slaveProperties.getRgv()) { // 鑾峰彇RGV淇℃伅 RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); @@ -1605,133 +1693,161 @@ if (rgvProtocol == null) { continue; } - // 宸ヤ綅1鐘舵�侊細鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1 - if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING && rgvProtocol.getTaskNo1() != 0) { - //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟 - if (rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0 - && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0 - && rgvProtocol.getStatusType2() == RgvStatusType.IDLE - ) { - WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); - if (wrkMast1 == null) { - log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1()); - continue; - } - List<WrkMast> wrkMastTask = new ArrayList<>(); - List<WrkMast> list = new ArrayList<>(); - Integer type = 0;//1鍏ュ簱锛�2鍑哄簱 - if(wrkMast1.getWrkSts()==6L){ - wrkMastTask = getRgvInTask(rgv); - list = wrkMastMapper.selectRgvInWorking(rgv.getId()); - type = 1; - } else if(wrkMast1.getWrkSts()==16L){ - wrkMastTask = getRgvOutTask(rgv); - list = wrkMastMapper.selectRgvOutWorking(rgv.getId()); - type = 2; - } - if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2 - // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊� - if (list.size() > 1) { - continue; - } - WrkMast wrkMast2 = wrkMastTask.get(0); - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 - rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣 - rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐� - rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) { - //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓� - Date now = new Date(); - wrkMast2.setWrkSts(type==1 ? 6L : 16L); - wrkMast2.setCrnStrTime(now); - wrkMast2.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast2) == 0) { - log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo()); - } - } - } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1 - if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓� - continue; - } - if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓� - continue; - } - - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 - rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐� - rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) { - //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭 - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓� - Date now = new Date(); - wrkMast1.setWrkSts(type==1 ? 7L : 17L); - wrkMast1.setCrnEndTime(now); - wrkMast1.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast1) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo()); - } - log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); - } - } - } else if (rgvProtocol.getModeType() == RgvModeType.AUTO - && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0 - && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0 - && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){ - // 宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1, 宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟 - WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); - WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue()); - // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- - RgvCommand rgvCommand = new RgvCommand(); - rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 - rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� - rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 - rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐� - rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 - rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� - rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� - rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 - rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐� - rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣 - rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 - if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) { - //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭 - log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); - } else { - // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓� - Date now = new Date(); - wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L); - wrkMast1.setCrnStrTime(now); - wrkMast1.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast1) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo()); - } - - wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L); - wrkMast2.setCrnStrTime(now); - wrkMast2.setModiTime(now); - if (wrkMastMapper.updateById(wrkMast2) == 0) { - log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo()); - } - } + //鍒ゆ柇RGV鏄惁绌洪棽锛屽伐浣�1鏄惁绌洪棽锛屽伐浣�1鏄惁鏈夌墿锛屾槸鍚︿负鐢佃剳妯″紡锛屽伐浣�1鏄惁鏈夊伐浣滃彿 + if (rgvProtocol.statusType1 == RgvStatusType.FETCHWAITING + && rgvProtocol.getModeType() == RgvModeType.AUTO + && rgvProtocol.getTaskNo1() != 0 + && rgvProtocol.getStatus() != 0 + && rgvProtocol.getStatus1() != 0 + ) { + WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); + if (wrkMast1 == null) { + log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1()); + continue; } + + if (wrkMast1.getWrkSts() == 3) {//3.RGV鍙栬揣涓� => 4.RGV鍙栬揣瀹屾垚 + wrkMast1.setWrkSts(4L); + }else if(wrkMast1.getWrkSts() == 5){//5.RGV鏀捐揣涓� => 6.RGV鏀捐揣瀹屾垚 + rgvProtocol.setTaskNo1((short) 0);//鍏ュ簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿 + wrkMast1.setWrkSts(6L); + } else if (wrkMast1.getWrkSts() == 24) {//24.RGV鍙栬揣涓� => 25.RGV鍙栬揣瀹屾垚 + wrkMast1.setWrkSts(25L);// + } else if (wrkMast1.getWrkSts() == 26) {//26.RGV鏀捐揣涓� => 27.RGV鏀捐揣瀹屾垚 + rgvProtocol.setTaskNo1((short) 0);//鍑哄簱浠诲姟瀹屾垚锛屾竻绌轰换鍔″彿 + wrkMast1.setWrkSts(27L);//27.RGV鏀捐揣瀹屾垚 + } + + wrkMast1.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast1) == 0) { + log.error("宸ヤ綅1淇敼宸ヤ綔妗g姸鎬佸け璐ワ紒锛侊紝宸ヤ綔鍙�={}", wrkMast1.getWrkNo()); + } + +// //宸ヤ綅1鍙栬揣瀹屾垚鍚庯紝宸ヤ綅2鏄棤璐х┖闂茬姸鎬佹椂锛屽噯澶囩粰宸ヤ綅2鍙戜换鍔★紝纭鏄惁鏈夊緟鎵цRGV浠诲姟 +// if (rgvProtocol.getModeType() == RgvModeType.AUTO +// && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() == 0 +// && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() == 0 +// && rgvProtocol.getStatusType2() == RgvStatusType.IDLE +// ) { +// WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); +// if (wrkMast1 == null) { +// log.error("RGV宸ヤ綅1澶勪簬绛夊緟纭涓斿彇璐т换鍔″畬鎴愮姸鎬侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�俁GV鍙�={}锛屽伐浣滃彿={}", rgv.getId(), rgvProtocol.getTaskNo1()); +// continue; +// } +// List<WrkMast> wrkMastTask = new ArrayList<>(); +// List<WrkMast> list = new ArrayList<>(); +// Integer type = 0;//1鍏ュ簱锛�2鍑哄簱 +// if(wrkMast1.getWrkSts()==6L){ +// wrkMastTask = getRgvInTask(rgv); +// list = wrkMastMapper.selectRgvInWorking(rgv.getId()); +// type = 1; +// } else if(wrkMast1.getWrkSts()==16L){ +// wrkMastTask = getRgvOutTask(rgv); +// list = wrkMastMapper.selectRgvOutWorking(rgv.getId()); +// type = 2; +// } +// if(wrkMastTask.size() > 0){//鏈夌户缁墽琛屼换鍔★紝涓嬪彂鍙栬揣浠诲姟缁欏伐浣�2 +// // 宸茬粡瀛樺湪RGV鎵ц浠诲姟鏃讹紝鍒欒繃婊� +// if (list.size() > 1) { +// continue; +// } +// WrkMast wrkMast2 = wrkMastTask.get(0); +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 +// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� +// rgvCommand.setTaskMode2(RgvTaskModeType.FETCH); // 宸ヤ綅2浠诲姟妯″紡: 鍙栬揣 +// rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐� +// rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣 +// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Crn, wrkMast2.getRgvNo(), new Task(5, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2鍐欎换鍔★紱 step=4锛屽伐浣�1鍐欎换鍔★紱 step=5锛屽伐浣�2鍐欎换鍔� +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); +// } else { +// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓� +// Date now = new Date(); +// wrkMast2.setWrkSts(type==1 ? 6L : 16L); +// wrkMast2.setCrnStrTime(now); +// wrkMast2.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast2) == 0) { +// log.error("宸ヤ綅2淇敼宸ヤ綔妗g姸鎬� 2/14.璁惧涓婅蛋 => 6/16.RGV鍏ュ簱鍙栬揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo()); +// } +// } +// } else {//娌℃湁缁х画鎵ц浠诲姟锛屼笅鍙戞斁璐т换鍔$粰宸ヤ綅1 +// if(type == 1 && wrkMast1.getWrkSts() != 6L){//RGV鍏ュ簱鍙栬揣涓� +// continue; +// } +// if(type == 2 && wrkMast1.getWrkSts() != 16L){//RGV鍑哄簱鍙栬揣涓� +// continue; +// } +// +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐� +// rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 +// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(4, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭 +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); +// } else { +// // 淇敼宸ヤ綔妗g姸鎬� 6.RGV鍏ュ簱鍙栬揣涓� => 7.RGV鍏ュ簱鏀捐揣涓� +// Date now = new Date(); +// wrkMast1.setWrkSts(type==1 ? 7L : 17L); +// wrkMast1.setCrnEndTime(now); +// wrkMast1.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast1) == 0) { +// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo()); +// } +// log.error("RGV鍛戒护涓嬪彂鎴愬姛锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); +// } +// } +// } else if (rgvProtocol.getModeType() == RgvModeType.AUTO +// && rgvProtocol.getTaskNo1() > 0 && rgvProtocol.getTaskNo2() > 0 +// && rgvProtocol.getLoaded1() > 0 && rgvProtocol.getLoaded2() > 0 +// && rgvProtocol.statusType2 == RgvStatusType.FETCHWAITING){ +// // 宸ヤ綅2鐘舵�侊細涔熸槸鍙栬揣瀹屾垚绛夊緟纭91 骞朵笖 浠诲姟瀹屾垚浣� = 1, 宸ヤ綅1銆�2鍚屾椂涓嬪彂鏀捐揣浠诲姟 +// WrkMast wrkMast1 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo1().intValue()); +// WrkMast wrkMast2 = wrkMastMapper.selectPakInStep3(rgvProtocol.getTaskNo2().intValue()); +// // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- +// RgvCommand rgvCommand = new RgvCommand(); +// rgvCommand.setRgvNo(rgv.getId()); // RGV缂栧彿 +// rgvCommand.setAckFinish1((short) 0); // 宸ヤ綅1浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo1(wrkMast1.getWrkNo().shortValue()); // 宸ヤ綅1宸ヤ綔鍙� +// rgvCommand.setTaskMode1(RgvTaskModeType.PUT); // 宸ヤ綅1浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setSourceStaNo1(wrkMast1.getRgvSstaNo().shortValue()); //宸ヤ綅1婧愮珯鐐� +// rgvCommand.setDestinationStaNo1(wrkMast1.getRgvDstaNo().shortValue()); //宸ヤ綅1鐩爣绔欑偣 +// rgvCommand.setAckFinish2((short) 0); // 宸ヤ綅2浠诲姟瀹屾垚纭浣� +// rgvCommand.setTaskNo2(wrkMast2.getWrkNo().shortValue()); // 宸ヤ綅2宸ヤ綔鍙� +// rgvCommand.setTaskMode2(RgvTaskModeType.PUT); // 宸ヤ綅2浠诲姟妯″紡: 鏀捐揣 +// rgvCommand.setSourceStaNo2(wrkMast2.getRgvSstaNo().shortValue()); //宸ヤ綅2婧愮珯鐐� +// rgvCommand.setDestinationStaNo2(wrkMast2.getRgvDstaNo().shortValue()); //宸ヤ綅2鐩爣绔欑偣 +// rgvCommand.setCommand((short) 0); //宸ヤ綅1銆�2浠诲姟纭 +// if (!MessageQueue.offer(SlaveType.Crn, wrkMast1.getRgvNo(), new Task(2, rgvCommand))) { +// //step=2,宸ヤ綅1銆�2浠诲姟纭锛� step=4锛屽伐浣�1纭锛� step=5锛屽伐浣�2浠诲姟纭 +// log.error("RGV鍛戒护涓嬪彂澶辫触锛孯GV鍙�={}锛屼换鍔℃暟鎹�={}", rgv.getId(), JSON.toJSON(rgvCommand)); +// } else { +// // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 6.RGV鍏ュ簱鍙栬揣涓� +// Date now = new Date(); +// wrkMast1.setWrkSts(wrkMast1.getWrkSts()==6L ? 7L : 17L); +// wrkMast1.setCrnStrTime(now); +// wrkMast1.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast1) == 0) { +// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast1.getWrkNo()); +// } +// +// wrkMast2.setWrkSts(wrkMast2.getWrkSts()==6L ? 7L : 17L); +// wrkMast2.setCrnStrTime(now); +// wrkMast2.setModiTime(now); +// if (wrkMastMapper.updateById(wrkMast2) == 0) { +// log.error("淇敼宸ヤ綔妗g姸鎬� 6/16.RGV鍏ュ簱鍙栬揣涓� => 7/17.RGV鍏ュ簱鏀捐揣涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast2.getWrkNo()); +// } +// } +// } } } diff --git a/src/main/java/com/zy/common/config/RedisConfig.java b/src/main/java/com/zy/common/config/RedisConfig.java index d356517..cf99252 100644 --- a/src/main/java/com/zy/common/config/RedisConfig.java +++ b/src/main/java/com/zy/common/config/RedisConfig.java @@ -5,6 +5,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.*; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; @@ -14,7 +15,7 @@ * Redis閰嶇疆绫� * Created by vincent on 2019-12-23 */ -//@Configuration +@Configuration //@EnableCaching // 寮�鍚暟鎹紦瀛樻満鍒� public class RedisConfig extends CachingConfigurerSupport { diff --git a/src/main/java/com/zy/common/utils/RedisUtil.java b/src/main/java/com/zy/common/utils/RedisUtil.java index b2df114..95da6dc 100644 --- a/src/main/java/com/zy/common/utils/RedisUtil.java +++ b/src/main/java/com/zy/common/utils/RedisUtil.java @@ -2,8 +2,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -13,13 +16,16 @@ * redisTemplate灏佽 * */ -//@Component +@Component public class RedisUtil { - @Autowired - private RedisTemplate<String, Object> redisTemplate; +// @Autowired +// private RedisTemplate<String, Object> redisTemplate; - public RedisUtil(RedisTemplate<String, Object> redisTemplate) { + @Autowired + private RedisTemplate redisTemplate; + + public RedisUtil(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } @@ -96,6 +102,21 @@ } /** + * 鑾峰彇鍏ㄩ儴鏁版嵁 + * @return + */ + public HashMap<Object, Object> getRedis() { + Set<String> keys = redisTemplate.keys("*"); + HashMap<Object, Object> map = new HashMap<>(); + for (String key : keys) { + Object value = redisTemplate.opsForValue().get(key); + map.put(key, value); + } + + return map;//杩斿洖鍏ㄩ儴鏁版嵁闆嗗悎 + } + + /** * 鏅�氱紦瀛樻斁鍏� * * @param key 閿� diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 9b954fc..490c4b9 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -68,8 +68,8 @@ mainService.rgvIoExecute(); // RGV鍏ュ簱 ===>> 鏍规嵁RGV瀹屾垚淇″彿,鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣� mainService.rgvFinished(); - // 鍏ュ嚭搴� ===>> RGV鍑哄簱绔欏埌绯荤粺鍏ュ嚭搴撶珯 - mainService.rgvDestStnToCrnStn(); +// // 鍏ュ嚭搴� ===>> RGV鍑哄簱绔欏埌绯荤粺鍏ュ嚭搴撶珯 +// mainService.rgvDestStnToCrnStn(); // // 鍑哄簱 ===>> RGV鍑哄簱绔欏埌绯荤粺鍑哄簱绔� // mainService.rgvOutDStnToOutStn(); ////////////////////////////////////////////////////////////////// diff --git a/src/main/resources/mapper/BasRgvPathMapper.xml b/src/main/resources/mapper/BasRgvPathMapper.xml new file mode 100644 index 0000000..1fc1904 --- /dev/null +++ b/src/main/resources/mapper/BasRgvPathMapper.xml @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.zy.asrs.mapper.BasRgvPathMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvPath"> + <result column="rgv_no" property="rgvNo" /> + <result column="path" property="path" /> + <result column="status" property="status" /> + <result column="create_by" property="createBy" /> + <result column="create_time" property="createTime" /> + <result column="update_by" property="updateBy" /> + <result column="update_time" property="updateTime" /> + <result column="memo" property="memo" /> + + </resultMap> + + <select id="selectByRgvNo" resultMap="BaseResultMap"> + select * from asr_bas_rgv_path + where 1=1 + and rgv_no = #{rgvNo} + </select> + +</mapper> diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index bf37b5f..ae4b2c5 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -240,6 +240,13 @@ <!-- RGV璋冨害鍏ュ嚭搴撶浉鍏� --> <!-- ==============================================RGV浠诲姟缁戝畾鐩稿叧 ============================================== --> + <select id="selectWaitBindRGV" resultMap="BaseResultMap"> + select * from dbo.asr_wrk_mast + where 1=1 + and wrk_sts in (2,22) + and rgv_no is null + </select> + <select id="selectRgvInSteWrkNo" resultMap="BaseResultMap"> select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and wrk_no=#{wrkNo} and rgv_no is null </select> @@ -248,6 +255,14 @@ select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =24 and wrk_no=#{wrkNo} and rgv_no is null </select> + <select id="selectIoRgvNo" resultMap="BaseResultMap"> + select * from dbo.asr_wrk_mast + where 1=1 + and wrk_sts in (2,4,23,25) + and rgv_no = #{rgvNo} + order by io_pri desc,io_time desc,wrk_no ASC + </select> + <select id="selectRgvInSteNo" resultMap="BaseResultMap"> select top 1 * from dbo.asr_wrk_mast where 1=1 and wrk_sts =12 and rgv_no=#{rgvNo} <if test="rgvNo == 1"> -- Gitblit v1.9.1