From 2f264c1b46174f861d10cd81b8b0eec1e4157db4 Mon Sep 17 00:00:00 2001 From: lsh <1> Date: 星期六, 17 二月 2024 14:06:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/core/model/CrnSlave.java | 3 src/main/java/com/zy/asrs/entity/WrkMastCrn.java | 293 +++++++++++++ src/main/java/com/zy/core/model/DevpSlave.java | 3 src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 589 ++++++++++++++++++++++++++ src/main/resources/mapper/WrkMastCrnMapper.xml | 36 + src/main/java/com/zy/core/MainProcess.java | 13 src/main/java/com/zy/asrs/mapper/WrkMastCrnMapper.java | 15 src/main/resources/application.yml | 328 +------------- 8 files changed, 966 insertions(+), 314 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/WrkMastCrn.java b/src/main/java/com/zy/asrs/entity/WrkMastCrn.java new file mode 100644 index 0000000..7cfdc2e --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/WrkMastCrn.java @@ -0,0 +1,293 @@ +package com.zy.asrs.entity; + +import com.baomidou.mybatisplus.annotations.TableField; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.annotations.TableName; +import com.baomidou.mybatisplus.enums.IdType; +import com.core.common.Cools; +import com.core.common.SpringUtils; +import com.zy.asrs.service.*; +import com.zy.system.entity.User; +import com.zy.system.service.UserService; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.text.SimpleDateFormat; +import java.util.Date; + +@Data +@TableName("asr_wrk_mast_crn") +public class WrkMastCrn implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 宸ヤ綔鍙� + */ + @ApiModelProperty(value= "宸ヤ綔鍙�") + @TableId(value = "wrk_no", type = IdType.INPUT) + @TableField("wrk_no") + private Long wrkNo; + + /** + * 宸ヤ綔鐘舵�� + */ + @ApiModelProperty(value= "宸ヤ綔鐘舵��") + @TableField("wrk_sts") + private Long wrkSts; + + /** + * 鍏ュ嚭搴撶被鍨� + */ + @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") + @TableField("io_type") + private Integer ioType; + + /** + * 鍫嗗灈鏈� + */ + @ApiModelProperty(value= "鍫嗗灈鏈�") + @TableField("crn_no") + private Integer crnNo; + + /** + * 鐩爣搴撲綅 + */ + @ApiModelProperty(value= "鐩爣搴撲綅") + @TableField("loc_no") + private String locNo; + + /** + * 鐩爣绔� + */ + @ApiModelProperty(value= "鐩爣绔�") + @TableField("sta_no") + private Integer staNo; + + /** + * 婧愮珯 + */ + @ApiModelProperty(value= "婧愮珯") + @TableField("source_sta_no") + private Integer sourceStaNo; + + /** + * 婧愬簱浣� + */ + @ApiModelProperty(value= "婧愬簱浣�") + @TableField("source_loc_no") + private String sourceLocNo; + + @ApiModelProperty(value= "") + @TableField("loc_sts") + private String locSts; + + /** + * 宸ヤ綔鏃堕棿 + */ + @ApiModelProperty(value= "宸ヤ綔鏃堕棿") + @TableField("io_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date ioTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("modi_user") + private String modiUser; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("modi_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modiTime; + + /** + * 宸ヤ綔鍙�1 + */ + @ApiModelProperty(value= "宸ヤ綔鍙�1") + @TableField("wrk_no_one") + private Long wrkNoOne; + + /** + * 宸ヤ綔鍙�2 + */ + @ApiModelProperty(value= "宸ヤ綔鍙�2") + @TableField("wrk_no_two") + private Long wrkNoTwo; + + /** + * 鐩爣搴撲綅1 + */ + @ApiModelProperty(value= "鐩爣搴撲綅1") + @TableField("loc_no_one") + private String locNoOne; + + /** + * 鐩爣搴撲綅2 + */ + @ApiModelProperty(value= "鐩爣搴撲綅2") + @TableField("loc_no_two") + private String locNoTwo; + + /** + * 鐩爣绔�1 + */ + @ApiModelProperty(value= "鐩爣绔�1") + @TableField("sta_no_one") + private Integer staNoOne; + + /** + * 鐩爣绔�2 + */ + @ApiModelProperty(value= "鐩爣绔�2") + @TableField("sta_no_two") + private Integer staNoTwo; + + /** + * 婧愮珯1 + */ + @ApiModelProperty(value= "婧愮珯1") + @TableField("source_sta_no_one") + private Integer sourceStaNoOne; + + /** + * 婧愮珯2 + */ + @ApiModelProperty(value= "婧愮珯2") + @TableField("source_sta_no_two") + private Integer sourceStaNoTwo; + + /** + * 婧愬簱浣�1 + */ + @ApiModelProperty(value= "婧愬簱浣�1") + @TableField("source_loc_no_one") + private String sourceLocNoOne; + + /** + * 婧愬簱浣�2 + */ + @ApiModelProperty(value= "婧愬簱浣�2") + @TableField("source_loc_no_two") + private String sourceLocNoTwo; + + public WrkMastCrn() {} + + public WrkMastCrn(Long wrkNo, Long wrkSts, Integer ioType, Integer crnNo, String locNo, Integer staNo, Integer sourceStaNo, String sourceLocNo, String locSts, Date ioTime, String modiUser, Date modiTime, Long wrkNoOne, Long wrkNoTwo, String locNoOne, String locNoTwo, Integer staNoOne, Integer staNoTwo, Integer sourceStaNoOne, Integer sourceStaNoTwo, String sourceLocNoOne, String sourceLocNoTwo) { + this.wrkNo = wrkNo; + this.wrkSts = wrkSts; + this.ioType = ioType; + this.crnNo = crnNo; + this.locNo = locNo; + this.staNo = staNo; + this.sourceStaNo = sourceStaNo; + this.sourceLocNo = sourceLocNo; + this.locSts = locSts; + this.ioTime = ioTime; + this.modiUser = modiUser; + this.modiTime = modiTime; + this.wrkNoOne = wrkNoOne; + this.wrkNoTwo = wrkNoTwo; + this.locNoOne = locNoOne; + this.locNoTwo = locNoTwo; + this.staNoOne = staNoOne; + this.staNoTwo = staNoTwo; + this.sourceStaNoOne = sourceStaNoOne; + this.sourceStaNoTwo = sourceStaNoTwo; + this.sourceLocNoOne = sourceLocNoOne; + this.sourceLocNoTwo = sourceLocNoTwo; + } + +// WrkMastCrn wrkMastCrn = new WrkMastCrn( +// null, // 宸ヤ綔鍙穂闈炵┖] +// null, // 宸ヤ綔鐘舵�� +// null, // 鍏ュ嚭搴撶被鍨� +// null, // 鍫嗗灈鏈� +// null, // 鐩爣搴撲綅 +// null, // 鐩爣绔� +// null, // 婧愮珯 +// null, // 婧愬簱浣� +// null, // +// null, // 宸ヤ綔鏃堕棿 +// null, // 淇敼浜哄憳 +// null, // 淇敼鏃堕棿 +// null, // 宸ヤ綔鍙�1 +// null, // 宸ヤ綔鍙�2 +// null, // 鐩爣搴撲綅1 +// null, // 鐩爣搴撲綅2 +// null, // 鐩爣绔�1 +// null, // 鐩爣绔�2 +// null, // 婧愮珯1 +// null, // 婧愮珯2 +// null, // 婧愬簱浣�1 +// null // 婧愬簱浣�2 +// ); + + public String getCrnNo$(){ + BasCrnpService service = SpringUtils.getBean(BasCrnpService.class); + BasCrnp basCrnp = service.selectById(this.crnNo); + if (!Cools.isEmpty(basCrnp)){ + return String.valueOf(basCrnp.getCrnNo()); + } + return null; + } + + public String getLocNo$(){ + LocMastService service = SpringUtils.getBean(LocMastService.class); + LocMast locMast = service.selectById(this.locNo); + if (!Cools.isEmpty(locMast)){ + return String.valueOf(locMast.getLocNo()); + } + return null; + } + + public String getStaNo$(){ + BasDevpService service = SpringUtils.getBean(BasDevpService.class); + BasDevp basDevp = service.selectById(this.staNo); + if (!Cools.isEmpty(basDevp)){ + return String.valueOf(basDevp.getDevNo()); + } + return null; + } + + public String getSourceStaNo$(){ + BasDevpService service = SpringUtils.getBean(BasDevpService.class); + BasDevp basDevp = service.selectById(this.sourceStaNo); + if (!Cools.isEmpty(basDevp)){ + return String.valueOf(basDevp.getDevNo()); + } + return null; + } + + public String getSourceLocNo$(){ + LocMastService service = SpringUtils.getBean(LocMastService.class); + LocMast locMast = service.selectById(this.sourceLocNo); + if (!Cools.isEmpty(locMast)){ + return String.valueOf(locMast.getLocNo()); + } + return null; + } + + public String getIoTime$(){ + if (Cools.isEmpty(this.ioTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); + } + + + public String getModiTime$(){ + if (Cools.isEmpty(this.modiTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); + } + + +} diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastCrnMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastCrnMapper.java new file mode 100644 index 0000000..27b8304 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/WrkMastCrnMapper.java @@ -0,0 +1,15 @@ +package com.zy.asrs.mapper; + +import com.baomidou.mybatisplus.mapper.BaseMapper; +import com.zy.asrs.entity.WrkMast; +import com.zy.asrs.entity.WrkMastCrn; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface WrkMastCrnMapper extends BaseMapper<WrkMastCrn> { + + WrkMastCrn selectWrkNoOneAndTwo(@Param("wrkNo")Integer wrkNo); +} 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 89bc94f..3cb6a63 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -101,6 +101,8 @@ private BasRgvMapMapper basRgvMapMapper; @Autowired private RgvOneSignMapper rgvOneSignMapper; + @Autowired + private WrkMastCrnMapper wrkMastCrnMapper; @Value("${wms.url}") private String wmsUrl; @@ -259,6 +261,175 @@ } } else { log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response); + } + + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + + } + + + } + } + + } + + /** + * 缁勬墭 + * 鍏ュ簱绔欙紝鏍规嵁鏉$爜鎵弿鐢熸垚鍏ュ簱宸ヤ綔妗o紝宸ヤ綔鐘舵�� 2 + */ + public synchronized void generateStoreWrkFileSingle() { + // 鏍规嵁杈撻�佺嚎plc閬嶅巻 + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻鍏ュ簱鍙� + for (DevpSlave.Sta inSta : devp.getInSingleSta()) { + // 鑾峰彇鏉$爜鎵弿浠俊鎭� + BarcodeThread barcodeThread = (BarcodeThread) SlaveConnection.get(SlaveType.Barcode, inSta.getBarcode()); + if (barcodeThread == null) { + continue; + } + String barcode = barcodeThread.getBarcode(); + + if (!Cools.isEmpty(barcode)) { +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); + if ("NG".endsWith(barcode) || "NoRead".equals(barcode)) { + continue; + } + } else { + continue; + } + + // 鑾峰彇鍏ュ簱绔欎俊鎭� +// SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(inSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 灏哄妫�娴嬪紓甯� + boolean back = false; + String errMsg = "寮傚父锛�"; + if (staProtocol.isFrontErr()) { + errMsg = errMsg+"鍓嶈秴闄愶紱"; + back = true; + } + if (staProtocol.isBackErr()) { + errMsg = errMsg+"鍚庤秴闄�"; + back = true; + } + if (staProtocol.isHighErr()) { + errMsg = errMsg+"楂樿秴闄�"; + back = true; + } + if (staProtocol.isLeftErr()) { + errMsg = errMsg+"宸﹁秴闄�"; + back = true; + } + if (staProtocol.isRightErr()) { + errMsg = errMsg+"鍙宠秴闄�"; + back = true; + } + if (staProtocol.isWeightErr()) { + errMsg = errMsg+"瓒呴噸"; + back = true; + } + if (staProtocol.isBarcodeErr()) { + errMsg = errMsg+"鎵爜澶辫触"; + back = true; + } + // 閫�鍥� + if (back) { + // led 寮傚父鏄剧ず + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + if (ledThread != null) { + MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(5, errMsg)); + } + continue; + } + + // 鍏ュ嚭搴撴ā寮忓垽鏂� +// if ( inSta.getStaNo()==203 && devpThread.ioModeOf2F != IoModeType.PAKIN_MODE) { continue; } +// if (inSta.getStaNo() == 203 && devpThread.ioModeOf2F == IoModeType.PAKOUT_MODE) { +// continue; +// } + + // 鍒ゆ柇鏄惁婊¤冻鍏ュ簱鏉′欢 + if (staProtocol.isAutoing() + && staProtocol.isLoading() + && staProtocol.isInEnable() + && !staProtocol.isEmptyMk() + && staProtocol.getWorkNo() == 0 + && staProtocol.isPakMk()) {// && !Cools.isEmpty(barcode)) { + +// if(Cools.isEmpty(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode)) { +// log.info("{}鍙锋潯鐮佹壂鎻忓櫒妫�娴嬫潯鐮佷俊鎭細{}", inSta.getBarcode(), barcode); +// //鏉$爜涓虹┖鎴栬�呬笉绗﹀悎锛岄��搴撳埌172绔欑偣 +// staProtocol.setWorkNo((short)32222); +// staProtocol.setStaNo((short)172); +// devpThread.setPakMk(staProtocol.getSiteId(), false); +// boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); +// if (!result) { +// throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); +// } +// continue; +// } + + // 鍒ゆ柇閲嶅宸ヤ綔妗� + WrkMast wrkMast = wrkMastMapper.selectPakInStep1(inSta.getStaNo(), barcode); + if (wrkMast != null) { + log.error("宸ヤ綔妗d腑宸插瓨鍦ㄨ绔欑姸鎬佷负锛� 2.璁惧涓婅蛋 锛夌殑鏁版嵁,宸ヤ綔鍙�={}", wrkMast.getWrkNo()); + continue; + } +// // 鑾峰彇鍏ュ簱閫氱煡妗� +// List<WaitPakin> waitPakins = waitPakinMapper.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", barcode).eq("io_status", "N")); +// if (waitPakins.isEmpty()) { +// log.error("鏃犳鍏ュ簱鏉$爜鏁版嵁銆傛潯鐮佸彿={}", barcode); +// continue; +// } + + try { + + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); + + SearchLocParam param = new SearchLocParam(); + param.setBarcode(barcode); + param.setIoType(1); + param.setSourceStaNo(inSta.getStaNo()); + param.setLocType1(locTypeDto.getLocType1()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/pair/station/single/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + + LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); + + + barcodeThread.setBarcode(""); + staProtocol.setWorkNo(dto.getWorkNo()); + + if(Cools.isEmpty(dto.getRgvNo()) || dto.getRgvNo() <= 0) { + staProtocol.setStaNo(dto.getStaNo()); + } else {//濡傛灉瀛樺湪RGV缂栧彿锛岃鏄庨渶瑕丷GV鎺ラ┏锛屽厛涓嬪彂浠诲姟鍒癛GV婧愮珯 + staProtocol.setStaNo(dto.getRgvSstaNo()); + } + + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pair/station/single/loc/v1", JSON.toJSONString(param), response); } } catch (Exception e) { @@ -972,20 +1143,44 @@ // 濡傛灉鏈�杩戜竴娆℃槸鍏ュ簱妯″紡 if (crnProtocol.getLastIo().equals("I")) { if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱 + switch (crn.getId()){ + case 1: + case 2: + this.crnStnToLoc1Single(crn, crnProtocol); // 鍏ュ簱 + default: + this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱 + } crnProtocol.setLastIo("O"); } else if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱 + switch (crn.getId()){ + case 1: + case 2: + this.locToCrnStn1Single(crn, crnProtocol); // 鍑哄簱 + default: + this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱 + } crnProtocol.setLastIo("I"); } } // 濡傛灉鏈�杩戜竴娆℃槸鍑哄簱妯″紡 else if (crnProtocol.getLastIo().equals("O")) { if (basCrnp.getOutEnable().equals("Y")) { - this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱 + switch (crn.getId()){ + case 1: + case 2: + this.locToCrnStn1Single(crn, crnProtocol); // 鍑哄簱 + default: + this.locToCrnStn1(crn, crnProtocol); // 鍑哄簱 + } crnProtocol.setLastIo("I"); } else if (basCrnp.getInEnable().equals("Y")) { - this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱 + switch (crn.getId()){ + case 1: + case 2: + this.crnStnToLoc1Single(crn, crnProtocol); // 鍏ュ簱 + default: + this.crnStnToLoc1(crn, crnProtocol); // 鍏ュ簱 + } crnProtocol.setLastIo("O"); } } @@ -1386,6 +1581,140 @@ } /** + * 鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鍒板簱浣� + * 2022-12-03 TQS淇敼锛屽厛閬嶅巻鏌ヨ鍚屽彴鍫嗗灈鏈哄伐浣滄。鎵�鏈夌珯鐐瑰叆搴撲换鍔IST锛屾牴鎹伐浣滄。浠诲姟鎺掑簭浼樺厛绾ч珮浜� 鏍规嵁鍫嗗灈鏈哄叆搴撶珯鐐规帓搴� + */ + public synchronized void crnStnToLoc1Single(CrnSlave slave, CrnProtocol crnProtocol) { + List<WrkMast> wrkMasts = wrkMastMapper.selectPakInStep12(slave.getId()); + for(WrkMast wrkMast : wrkMasts){ + if (wrkMast == null) { + continue; + } + + CrnSlave.CrnStn crnStn = null; + for (CrnSlave.CrnStn crnStn1 : slave.getCrnInStn()){ + if(crnStn1.getStaNo().equals(wrkMast.getStaNo())){ + crnStn = crnStn1; + break; + } + } + if(Cools.isEmpty(crnStn)){ + continue; + } + + boolean flag = false; + boolean flagOther = false; + // 鑾峰彇鍫嗗灈鏈哄叆搴撶珯淇℃伅 + DevpThread devpThread = (DevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + StaProtocol staProtocolOther = devpThread.getStation().get(crnStn.getStaNoOther()); + if (staProtocolOther == null) { + continue; + } else { + staProtocolOther = staProtocolOther.clone(); + } + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + continue; + } + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.getWorkNo() > 0 && staProtocol.isInEnable() + && staDetl.getCanining() != null && staDetl.getCanining().equals("Y")) { + flag = true; + } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetlOther = basDevpService.selectById(crnStn.getStaNoOther()); + if (staDetlOther == null) { + log.error("鍏ュ簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNoOther()); + continue; + } + if (staProtocolOther.isAutoing() && staProtocolOther.isLoading() && staProtocolOther.getWorkNo() > 0 && staProtocolOther.isInEnable() + && staDetlOther.getCanining() != null && staDetlOther.getCanining().equals("Y")) { + flagOther = true; + } + if (!flag || !flagOther) { + continue; + } + + //鏌ヨ鍫嗗灈鏈轰换鍔� + WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(wrkMast.getWrkNo()); + if (Cools.isEmpty(wrkMastCrn)){ + continue; + } + + WrkMast wrkMastOther = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue()); + + // 鑾峰彇搴撲綅淇℃伅 + LocMast locMast = locMastService.selectById(Utils.getRow(wrkMastCrn.getLocNo())%4>2? wrkMastCrn.getLocNoTwo():wrkMastCrn.getLocNoOne()); + if (locMast == null) { + log.error("鏌ヨ搴撳瓨鏃犳暟鎹�--搴撲綅鍙穥}", wrkMastCrn.getLocNo()); + continue; + } + if (!locMast.getLocSts().equals("S") && !locMast.getLocSts().equals("Q")) { + log.error("鍏ュ簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), locMast.getLocSts()); + continue; + } + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { + continue; + } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + continue; + } + + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + CrnCommand crnCommand = new CrnCommand(); + crnCommand.setCrnNo(slave.getId()); // 鍫嗗灈鏈虹紪鍙� + crnCommand.setTaskNo(wrkMast.getWrkNo().shortValue()); // 宸ヤ綔鍙� + crnCommand.setAckFinish((short) 0); // 浠诲姟瀹屾垚纭浣� + crnCommand.setTaskMode(CrnTaskModeType.LOC_MOVE); // 浠诲姟妯″紡: 搴撲綅绉昏浆 + crnCommand.setSourcePosX(crnStn.getRow().shortValue()); // 婧愬簱浣嶆帓 + crnCommand.setSourcePosY(crnStn.getBay().shortValue()); // 婧愬簱浣嶅垪 + crnCommand.setSourcePosZ(crnStn.getLev().shortValue()); // 婧愬簱浣嶅眰 + crnCommand.setDestinationPosX(locMast.getRow1().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(locMast.getBay1().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(locMast.getLev1().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.offer(SlaveType.Crn, wrkMast.getCrnNo(), new Task(2, crnCommand))) { + log.error("鍫嗗灈鏈哄懡浠や笅鍙戝け璐ワ紝鍫嗗灈鏈哄彿={}锛屼换鍔℃暟鎹�={}", wrkMast.getCrnNo(), JSON.toJSON(crnCommand)); + } else { + // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� + Date now = new Date(); + wrkMast.setWrkSts(3L); + wrkMast.setCrnStrTime(now); + wrkMast.setModiTime(now); + if (wrkMastMapper.updateById(wrkMast) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMast.getWrkNo()); + } + + // 淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� + wrkMastOther.setWrkSts(3L); + wrkMastOther.setCrnStrTime(now); + wrkMastOther.setModiTime(now); + if (wrkMastMapper.updateById(wrkMastOther) == 0) { + log.error("淇敼宸ヤ綔妗g姸鎬� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastOther.getWrkNo()); + } + + wrkMastCrn.setWrkSts(3L); + wrkMastCrn.setModiTime(now); + if (wrkMastCrnMapper.updateById(wrkMastCrn) == 0) { + log.error("淇敼鍫嗗灈鏈哄伐浣滄。鐘舵�� 2.璁惧涓婅蛋 => 3.鍚婅溅鍏ュ簱涓� 澶辫触锛侊紒锛屽伐浣滃彿={}", wrkMastCrn.getWrkNo()); + } + } + } + + } + + /** * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� * 2022-06-09 TQS淇敼锛屾煡璇㈠伐浣滄。LIST锛岄亶鍘嗕笅鍙戯紝闃叉绗竴涓换鍔″牭濉炲嚭搴� */ @@ -1528,6 +1857,160 @@ * 2022-12-03 TQS淇敼锛屽厛閬嶅巻鏌ヨ宸ヤ綔妗f墍鏈夌珯鐐瑰嚭搴撲换鍔IST锛屾牴鎹伐浣滄。浠诲姟鎺掑簭浼樺厛绾ч珮浜� 鏍规嵁鍫嗗灈鏈哄叆搴撶珯鐐规帓搴� */ public synchronized void locToCrnStn1(CrnSlave slave, CrnProtocol crnProtocol) { + List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId()); + for (WrkMast wrkMast : wrkMasts) { + if (wrkMast == null) { + continue; + } + + CrnSlave.CrnStn crnStn = null; + for (CrnSlave.CrnStn crnStn1 : slave.getCrnOutStn()){ + if(crnStn1.getStaNo().equals(wrkMast.getSourceStaNo())){ + crnStn = crnStn1; + break; + } + } + if(Cools.isEmpty(crnStn)){ + continue; + } + + // 宸ヤ綔妗g姸鎬佸垽鏂� + if (wrkMast.getIoType() < 100 || wrkMast.getSourceStaNo() == null) { + log.error("鏌ヨ宸ヤ綔妗f暟鎹笉绗﹀悎鏉′欢--鍏ュ嚭绫诲瀷/绔欑偣, 宸ヤ綔鍙�={}锛屾簮搴撲綅={}锛屽叆鍑虹被鍨�={}", wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getIoType()); + continue; + } + //閫�搴撴ā寮忚烦杩�118銆�119鍑哄簱浠诲姟 + if (wrkMast.getStaNo()==118 || wrkMast.getStaNo()==119){ + RgvOneSign rgvOneSign = rgvOneSignMapper.selectOneSign(); + if (Cools.isEmpty(rgvOneSign) || rgvOneSign.getRgvOneSign()==1){ + continue; + } + } + // 鑾峰彇婧愬簱浣嶄俊鎭� + LocMast sourceSta = locMastService.selectById(wrkMast.getSourceLocNo()); + if (!sourceSta.getLocSts().equals("R") && !sourceSta.getLocSts().equals("P")) { + log.error("鍑哄簱鎿嶄綔搴撲綅鐘舵�佷笉绗﹀悎--鐘舵��, 搴撲綅鍙�={}锛屽簱浣嶇姸鎬�={}", wrkMast.getLocNo(), sourceSta.getLocSts()); + continue; + } + // 鑾峰彇鍫嗗灈鏈哄嚭搴撶珯淇℃伅 + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, crnStn.getDevpPlcId()); + StaProtocol staProtocol = devpThread.getStation().get(crnStn.getStaNo()); + if (staProtocol == null) { + break; +// continue; + } else { + staProtocol = staProtocol.clone(); + } + +// // 鍏ュ嚭搴撴ā寮忓垽鏂� +// if (devpThread.ioMode != IoModeType.PAKOUT_MODE) { continue; } + if (wrkMast.getStaNo() == 204 && devpThread.ioModeOf2F != IoModeType.PAKOUT_MODE) { + continue; + } + + // 鏌ヨ绔欑偣璇︾粏淇℃伅 + BasDevp staDetl = basDevpService.selectById(crnStn.getStaNo()); + if (staDetl == null) { + log.error("鍑哄簱 ===>> 鍫嗗灈鏈虹珯鐐瑰湪鏁版嵁搴撲笉瀛樺湪, 绔欑偣缂栧彿={}", crnStn.getStaNo()); + break; +// continue; + } + // 鍒ゆ柇鍫嗗灈鏈哄嚭搴撶珯鐘舵�� + if (staProtocol.isAutoing() && !staProtocol.isLoading() && staDetl.getCanouting() != null && staDetl.getCanouting().equals("Y") + && staProtocol.getWorkNo() == 0 && staProtocol.isOutEnable()) { + // 鍛戒护涓嬪彂鍖� -------------------------------------------------------------------------- + + // 鍫嗗灈鏈烘帶鍒惰繃婊� + if (!crnProtocol.getStatusType().equals(CrnStatusType.IDLE) || crnProtocol.getTaskNo() != 0) { +// continue; + break; + } + + // 鍙屾繁搴撲綅涓旀祬搴撲綅鏈夎揣锛屽垯闇�鍏堝娴呭簱浣嶈繘琛屽簱浣嶇Щ杞� + if (Utils.isDeepLoc(slaveProperties, wrkMast.getSourceLocNo())) { + String shallowLocNo = Utils.getShallowLoc(slaveProperties, wrkMast.getSourceLocNo()); + LocMast shallowLoc = locMastService.selectById(shallowLocNo); + // O.绌哄簱浣嶃�丵.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴撱�丼.鍏ュ簱棰勭害銆乆.绂佺敤 鐩存帴鎼紒 + if (shallowLoc.getLocSts().equals("P") || shallowLoc.getLocSts().equals("R")) { + WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); + if (null == waitWrkMast) { + log.error("{}搴撲綅寮傚父锛屾湭妫�绱㈠埌鐩稿簲宸ヤ綔妗o紒", shallowLocNo); + } else { + if (waitWrkMast.getWrkSts() == 11) { + waitWrkMast.setIoPri(15D); + waitWrkMast.setModiTime(new Date()); + if (wrkMastMapper.updateById(waitWrkMast) == 0) { + log.error("璋冩暣宸ヤ綔妗d紭鍏堢骇澶辫触锛佸伐浣滃彿={}", waitWrkMast.getWrkNo()); + } + continue; + } else { + + } + } + } else if (shallowLoc.getLocSts().equals("F") || shallowLoc.getLocSts().equals("D")) { +// WrkMast waitWrkMast = wrkMastMapper.selectByLocNo(shallowLocNo); + //2022-08-16 modify,涓嶆牴鎹畊pdmk鏍囪绉诲簱浠诲姟(瀹规槗琚彇娑堝鑷村牭濉�)锛屾煡璇㈠伐浣滄。鏄惁瀛樺湪浠诲姟 + WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo); + // 姝ゆ爣璁伴伩鍏嶅娆℃墽琛岀Щ搴撲换鍔� +// if (Cools.isEmpty(wrkMast.getUpdMk()) || "N".equals(wrkMast.getUpdMk()) +// || Cools.isEmpty(waitWrkMast)) { + if (Cools.isEmpty(waitWrkMast)) { + wrkMast.setUpdMk("Y"); + wrkMastMapper.updateById(wrkMast); + // 鐢熸垚宸ヤ綔妗�,灏嗘祬搴撲綅绉昏浆鍒版柊鐨勫簱浣嶄腑 + moveLocForDeepLoc(slave, shallowLoc); + } + log.error("{}浠诲姟鍑哄簱澶辫触锛屾祬搴撲綅鍫靛锛佹祬搴撲綅鍙�:{}", wrkMast.getWrkNo(), shallowLocNo); + continue; + } else if (shallowLoc.getLocSts().equals("Q") || shallowLoc.getLocSts().equals("S")) { + WrkMast waitWrkMast = wrkMastMapper.selectByLocNo1(shallowLocNo); + if (null != waitWrkMast && waitWrkMast.getWrkSts() == 4) { + continue; + } + } + } + + // 宸茬粡瀛樺湪鍚婅溅鎵ц浠诲姟鏃讹紝鍒欒繃婊� + if (wrkMastMapper.selectWorking(slave.getId()) != null) { + break; +// return; + } + + // 1.鍫嗗灈鏈哄紑濮嬬Щ鍔� + 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(crnStn.getRow().shortValue()); // 鐩爣搴撲綅鎺� + crnCommand.setDestinationPosY(crnStn.getBay().shortValue()); // 鐩爣搴撲綅鍒� + crnCommand.setDestinationPosZ(crnStn.getLev().shortValue()); // 鐩爣搴撲綅灞� + if (!MessageQueue.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()); + } + break; + } + } + } + + } + + /** + * 鍑哄簱 ===>> 搴撲綅鍒板爢鍨涙満绔� + * 2022-12-03 TQS淇敼锛屽厛閬嶅巻鏌ヨ宸ヤ綔妗f墍鏈夌珯鐐瑰嚭搴撲换鍔IST锛屾牴鎹伐浣滄。浠诲姟鎺掑簭浼樺厛绾ч珮浜� 鏍规嵁鍫嗗灈鏈哄叆搴撶珯鐐规帓搴� + */ + public synchronized void locToCrnStn1Single(CrnSlave slave, CrnProtocol crnProtocol) { List<WrkMast> wrkMasts = wrkMastMapper.selectPakOutStep12(slave.getId()); for (WrkMast wrkMast : wrkMasts) { if (wrkMast == null) { @@ -1903,6 +2386,47 @@ if (crnProtocol.getTaskNo() == 32222) { // 鍫嗗灈鏈哄浣� crnThread.setResetFlag(true); + } else if (crnProtocol.getCrnNo()<3) { + // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 + WrkMastCrn wrkMastCrn = wrkMastCrnMapper.selectWrkNoOneAndTwo(crnProtocol.getTaskNo().intValue()); + if (wrkMastCrn == null) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } + // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 + WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); + if (wrkMast == null) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } + + // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 + WrkMast wrkMastOther = wrkMastMapper.selectPakInStep3(wrkMastCrn.getWrkNoTwo().intValue()); + if (wrkMastOther == null) { + log.error("鍫嗗灈鏈哄浜庣瓑寰呯‘璁や笖浠诲姟瀹屾垚鐘舵�侊紝浣嗘湭鎵惧埌宸ヤ綔妗c�傚爢鍨涙満鍙�={}锛屽伐浣滃彿={}", crn.getId(), crnProtocol.getTaskNo()); + continue; + } + // 鍏ュ簱 + 搴撲綅杞Щ ==> 4.鍏ュ簱瀹屾垚 + if (wrkMastCrn.getWrkSts() == 3 || (wrkMastCrn.getWrkSts() == 12 && wrkMastCrn.getIoType() == 11)) { + wrkMastCrn.setWrkSts(4L); + } else { + continue; + } + Date now = new Date(); + wrkMastCrn.setModiTime(now); + + wrkMast.setCrnEndTime(now); + wrkMast.setWrkSts(4L); + wrkMast.setModiTime(now); + + wrkMastOther.setCrnEndTime(now); + wrkMastOther.setWrkSts(4L); + wrkMastOther.setModiTime(now); + // 淇敼鎴愬姛鍚庡浣嶅爢鍨涙満 + if (wrkMastCrnMapper.updateById(wrkMastCrn) > 0 && wrkMastMapper.updateById(wrkMast) > 0 && wrkMastMapper.updateById(wrkMastOther) > 0 ) { + // 鍫嗗灈鏈哄浣� + crnThread.setResetFlag(true); + } } else { // 鑾峰彇鍏ュ簱寰呯‘璁ゅ伐浣滄。 WrkMast wrkMast = wrkMastMapper.selectPakInStep3(crnProtocol.getTaskNo().intValue()); @@ -2241,6 +2765,63 @@ } /** + * 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� + */ + public synchronized void storeEmptyPltSingle() { + for (DevpSlave devp : slaveProperties.getDevp()) { + // 閬嶅巻绌烘澘鍏ュ簱鍙� + for (DevpSlave.Sta emptyInSta : devp.getEmptyInSingleSta()) { + // 鑾峰彇绌烘澘鍏ュ簱绔欎俊鎭� + SiemensDevpThread devpThread = (SiemensDevpThread) SlaveConnection.get(SlaveType.Devp, devp.getId()); + StaProtocol staProtocol = devpThread.getStation().get(emptyInSta.getStaNo()); + if (staProtocol == null) { + continue; + } else { + staProtocol = staProtocol.clone(); + } + + // 绔欑偣鏉′欢鍒ゆ柇 + if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() + && staProtocol.isEmptyMk() && ((staProtocol.getWorkNo() > 32222 && staProtocol.getWorkNo() <= 63333) || staProtocol.getWorkNo()==0) && staProtocol.isPakMk()) { + + try { + LocTypeDto locTypeDto = new LocTypeDto(staProtocol); + + SearchLocParam param = new SearchLocParam(); + param.setIoType(10); + param.setSourceStaNo(emptyInSta.getStaNo()); + param.setLocType1(locTypeDto.getLocType1()); + String response = new HttpHandler.Builder() + .setUri(wmsUrl) + .setPath("/rpc/pakin/pair/station/single/loc/v1") + .setJson(JSON.toJSONString(param)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + if (jsonObject.getInteger("code").equals(200)) { + StartupDto dto = jsonObject.getObject("data", StartupDto.class); + + // 鏇存柊绔欑偣淇℃伅 涓� 涓嬪彂plc鍛戒护 + staProtocol.setWorkNo(dto.getWorkNo()); + staProtocol.setStaNo(dto.getStaNo()); + devpThread.setPakMk(staProtocol.getSiteId(), false); + boolean result = MessageQueue.offer(SlaveType.Devp, devp.getId(), new Task(2, staProtocol)); + if (!result) { + throw new CoolException("鏇存柊plc绔欑偣淇℃伅澶辫触"); + } + } else { + log.error("璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/pair/station/single/loc/v1", JSON.toJSONString(param), response); + } + } catch (Exception e) { + e.printStackTrace(); + TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); + } + } + } + } + } + + /** * 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満鍙犵洏 */ public synchronized void storeEmptyPlt2() { diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 3f24ad8..6ac0854 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -55,15 +55,16 @@ // mainService.ioConvert(); // 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。 mainService.generateStoreWrkFile(); // 缁勬墭 + mainService.generateStoreWrkFileSingle(); // 缁勬墭 鍙屽伐浣嶅崟浼� 灏忔枡绠� // 鍏ュ簱 ===>> 鐮佸灈浣嶈幏鍙栫┖鏉挎潯鐮佷俊鎭� - mainService.generateStoreWrkFileFull2LouM(); // 缁勬墭 +// mainService.generateStoreWrkFileFull2LouM(); // 缁勬墭 mainService.generateStoreWrkFile0(); // WMS鍏ュ簱 // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱 - mainService.stnToCrnStnPick(); +// mainService.stnToCrnStnPick(); // 鎷f枡銆佸苟鏉裤�佺洏鐐瑰啀鍏ュ簱鎷嗙洏鍖� 1妤兼媶鍨涗綅缃� - mainService.stnToCrnStnPick2(); +// mainService.stnToCrnStnPick2(); // 2妤�212鍛煎彨绌烘澘 - mainService.stnToCrnStnPick3Auto(i); +// mainService.stnToCrnStnPick3Auto(i); // 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯 mainService.crnStnToOutStn(); // 鍏ュ嚭搴� ===>> 鍫嗗灈鏈哄叆鍑哄簱浣滀笟涓嬪彂 @@ -98,8 +99,10 @@ // // 寮傚父淇℃伅璁板綍 // mainService.recErr(); -// // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� 2妤� + // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱 // mainService.storeEmptyPlt(); + // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱 + mainService.storeEmptyPltSingle(); // // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満绌烘澘鍏ュ簱 // mainService.storeEmptyPlt3(); // // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,1妤煎彔鐩樻満鍙犵洏 diff --git a/src/main/java/com/zy/core/model/CrnSlave.java b/src/main/java/com/zy/core/model/CrnSlave.java index cfee50d..0c2b392 100644 --- a/src/main/java/com/zy/core/model/CrnSlave.java +++ b/src/main/java/com/zy/core/model/CrnSlave.java @@ -37,6 +37,9 @@ // 鍫嗗灈鏈虹珯鐐圭紪鍙� private Integer staNo; + // 鍫嗗灈鏈虹珯鐐圭紪鍙� + private Integer staNoOther; + // 鎺� private Integer row; diff --git a/src/main/java/com/zy/core/model/DevpSlave.java b/src/main/java/com/zy/core/model/DevpSlave.java index 0cfa480..5b6f0b2 100644 --- a/src/main/java/com/zy/core/model/DevpSlave.java +++ b/src/main/java/com/zy/core/model/DevpSlave.java @@ -22,9 +22,12 @@ private List<Sta> inSta = new ArrayList<>(); private List<Sta> driveSta = new ArrayList<>(); private List<Sta> inWmsSta = new ArrayList<>(); + private List<Sta> inSingleSta = new ArrayList<>(); + private List<Sta> singleSta = new ArrayList<>(); private List<Sta> emptyInSta = new ArrayList<>(); private List<Sta> emptyInSta2 = new ArrayList<>(); + private List<Sta> emptyInSingleSta = new ArrayList<>(); private List<Sta> outSta = new ArrayList<>(); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 8c3a937..6a3039d 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -59,31 +59,19 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 102 - row: 3 + staNo: 153 + staNoOther: 152 + row: 4 bay: 1 lev: 1 - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 201 - row: 3 - bay: 1 - lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} staNo: 100 - row: 2 + staNoOther: 101 + row: 1 bay: 1 lev: 1 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 200 - row: 2 - bay: 1 - lev: 2 # 鍫嗗灈鏈�2 crn[1]: id: 2 @@ -97,178 +85,23 @@ # 鍫嗗灈鏈哄叆搴撶珯鐐� crnInStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 105 - row: 7 + staNo: 145 + staNoOther: 144 + row: 8 bay: 1 lev: 1 - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 203 - row: 7 - bay: 1 - lev: 2 # 鍫嗗灈鏈哄嚭搴撶珯鐐� crnOutStn[0]: devpPlcId: ${wcs-slave.devp[0].id} - staNo: 103 - row: 6 + staNo: 148 + staNoOther: 149 + row: 5 bay: 1 lev: 1 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 202 - row: 6 - bay: 1 - lev: 1 - # 鍫嗗灈鏈�3 - crn[2]: - id: 3 - ip: 192.168.18.29 - port: 102 - rack: 0 - slot: 0 - # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2 - offset: 2 - demo: false - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 108 - row: 11 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 205 - row: 11 - bay: 1 - lev: 2 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 106 - row: 10 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 204 - row: 10 - bay: 1 - lev: 2 - # 鍫嗗灈鏈�4 - crn[3]: - id: 4 - ip: 192.168.18.37 - port: 102 - rack: 0 - slot: 0 - # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2 - offset: 2 - demo: false - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 111 - row: 15 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 207 - row: 15 - bay: 1 - lev: 2 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 109 - row: 14 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 206 - row: 14 - bay: 1 - lev: 2 - # 鍫嗗灈鏈�5 - crn[4]: - id: 5 - ip: 192.168.18.45 - port: 102 - rack: 0 - slot: 0 - # 鍋忕Щ閲忥紝褰撳爢鍨涙満绔欑偣鍒楀彿=1鏃讹紝鍋忕Щ閲�=2 - offset: 2 - demo: false - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 114 - row: 19 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄叆搴撶珯鐐� - crnInStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 209 - row: 19 - bay: 1 - lev: 2 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 112 - row: 18 - bay: 1 - lev: 1 - # 鍫嗗灈鏈哄嚭搴撶珯鐐� - crnOutStn[1]: - devpPlcId: ${wcs-slave.devp[1].id} - staNo: 208 - row: 18 - bay: 1 - lev: 2 - # RGV绌挎杞�1 rgv[0]: id: 1 ip: 192.168.18.77 - port: 502 - rack: 0 - slot: 0 - #RGV鍏ュ簱婧愮珯鐐� - rgvInSStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 100 - rgvInSStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 101 - #RGV鍑哄簱婧愮珯鐐� - rgvOutSStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 110 - rgvOutSStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 112 - #RGV鐩爣绔欑偣 - rgvDestStn[0]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 102 - rgvDestStn[1]: - devpPlcId: ${wcs-slave.devp[0].id} - staNo: 103 - # RGV绌挎杞�2 - rgv[1]: - id: 2 - ip: 192.168.18.79 port: 502 rack: 0 slot: 0 @@ -301,119 +134,18 @@ port: 102 rack: 0 slot: 0 - # WMS鍏ュ簱鍙�1 - inWmsSta[0]: + # 灏忔枡绠� 鍙屽伐浣嶅崟浼� 鍏ュ簱鍙�1 + singleSta[0]: + staNo: 153 + # 灏忔枡绠� 鍙屽伐浣嶅崟浼� 鍏ュ簱鍙�1 + singleSta[1]: staNo: 145 - # 绌烘澘鍏ュ簱鍙�1 - emptyInSta[0]: - staNo: 122 - # 鎷嗗灈鍙犵洏鍙�1 - emptyInSta2[0]: - staNo: 118 - # 鎷嗗灈鍙犵洏鍙�2 - emptyInSta2[1]: - staNo: 119 - # 鎷嗗灈鍙犵洏鍙�3 - emptyInSta2[2]: - staNo: 120 - # 鎷嗗灈鍙犵洏鍙�4 - emptyInSta2[3]: - staNo: 121 - # 鍑哄簱鍙�1 - outSta[0]: - staNo: 122 - # 鎷f枡鍏ュ簱鍙�1 - pickSta2[0]: - staNo: 118 - # 鎷f枡鍏ュ簱鍙�1 - pickSta2[1]: - staNo: 119 - # 鎷f枡鍏ュ簱鍙�1 - pickSta2[2]: - staNo: 120 - # 鎷f枡鍏ュ簱鍙�1 - pickSta2[3]: - staNo: 121 - # 鎷f枡鍏ュ簱鍙�1 - pickSta[0]: - staNo: 122 - # Rgv鍑哄簱鍙�1 - outRgvSta[0]: - staNo: 102 - # Rgv鍑哄簱鍙�1 - outRgvSta[1]: - staNo: 105 - # Rgv鍑哄簱鍙�1 - outRgvSta[2]: - staNo: 108 - # Rgv鍑哄簱鍙�1 - outRgvSta[3]: - staNo: 111 - # Rgv鍑哄簱鍙�1 - outRgvSta[4]: - staNo: 114 - # Rgv鍑哄簱鍙�1 - outRgvSta[5]: - staNo: 117 - # Rgv鍏ュ簱鍙�1 - inRgvSta[0]: - staNo: 118 - # Rgv鍏ュ簱鍙�1 - inRgvSta[1]: - staNo: 119 - # Rgv鍏ュ簱鍙�1 - inRgvSta[2]: - staNo: 120 - # Rgv鍏ュ簱鍙�1 - inRgvSta[3]: - staNo: 121 - # Rgv鍏ュ簱鍙�1 - inRgvSta[4]: - staNo: 122 - # Rgv鍏ュ簱鍙�1 - inRgvSta[5]: - staNo: 123 - - # 杈撻�佺嚎 - devp[1]: - id: 2 - ip: 192.168.18.81 - port: 102 - rack: 0 - slot: 0 - # 鍏ュ簱鍙�1 - inSta[0]: - staNo: 217 - barcode: ${wcs-slave.barcode[0].id} - led: ${wcs-slave.led[2].id} - # 鍏ュ簱鍙�1 - inSta[1]: - staNo: 221 - barcode: ${wcs-slave.barcode[1].id} - led: ${wcs-slave.led[1].id} - # WMS鍏ュ簱鍙�1 - inWmsSta[0]: - staNo: 212 - # 绌烘澘鍏ュ簱鍙�1 - emptyInSta[0]: - staNo: 212 - # 鍑哄簱鍙�1 - outSta[0]: - staNo: 212 - # 鍑哄簱鍙�1 - outSta[1]: - staNo: 213 - # 鎷f枡鍏ュ簱鍙�1 - pickSta[0]: - staNo: 212 - # 2妤肩爜鍨涗綅缃� - driveSta[0]: - staNo: 215 - barcode: ${wcs-slave.barcode[3].id} - # 2妤肩爜鍨涗綅缃� - driveSta[1]: - staNo: 219 - barcode: ${wcs-slave.barcode[4].id} + # 灏忔枡绠� 鍙屽伐浣嶅崟浼� 鍏ュ簱鍙�1 + inSingleSta[0]: + staNo: 174 + # 灏忔枡绠� 鍙屽伐浣嶅崟浼� 绌烘澘鍏ュ簱鍙�1 + emptyInSingleSta[0]: + staNo: 104 # 鏉$爜鎵弿浠� barcode[0]: @@ -446,18 +178,4 @@ ip: 192.168.18.5 port: 5005 devpPlcId: ${wcs-slave.devp[0].id} - staArr: 144 - # LED2 - led[1]: - id: 2 - ip: 192.168.18.6 - port: 5005 - devpPlcId: ${wcs-slave.devp[1].id} - staArr: 221 - # LED3 - led[2]: - id: 3 - ip: 192.168.18.7 - port: 5005 - devpPlcId: ${wcs-slave.devp[1].id} - staArr: 217 \ No newline at end of file + staArr: 144 \ No newline at end of file diff --git a/src/main/resources/mapper/WrkMastCrnMapper.xml b/src/main/resources/mapper/WrkMastCrnMapper.xml new file mode 100644 index 0000000..47b38ef --- /dev/null +++ b/src/main/resources/mapper/WrkMastCrnMapper.xml @@ -0,0 +1,36 @@ +<?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.WrkMastCrnMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMastCrn"> + <result column="wrk_no" property="wrkNo" /> + <result column="wrk_sts" property="wrkSts" /> + <result column="io_type" property="ioType" /> + <result column="crn_no" property="crnNo" /> + <result column="loc_no" property="locNo" /> + <result column="sta_no" property="staNo" /> + <result column="source_sta_no" property="sourceStaNo" /> + <result column="source_loc_no" property="sourceLocNo" /> + <result column="loc_sts" property="locSts" /> + <result column="io_time" property="ioTime" /> + <result column="modi_user" property="modiUser" /> + <result column="modi_time" property="modiTime" /> + <result column="wrk_no_one" property="wrkNoOne" /> + <result column="wrk_no_two" property="wrkNoTwo" /> + <result column="loc_no_one" property="locNoOne" /> + <result column="loc_no_two" property="locNoTwo" /> + <result column="sta_no_one" property="staNoOne" /> + <result column="sta_no_two" property="staNoTwo" /> + <result column="source_sta_no_one" property="sourceStaNoOne" /> + <result column="source_sta_no_two" property="sourceStaNoTwo" /> + <result column="source_loc_no_one" property="sourceLocNoOne" /> + <result column="source_loc_no_two" property="sourceLocNoTwo" /> + + </resultMap> + + <select id="selectWrkNoOneAndTwo" resultMap="BaseResultMap"> + select top 1 * from dbo.asr_wrk_mast_crn where wrk_no=#{wrkNo} + </select> + +</mapper> -- Gitblit v1.9.1