From 3fd78eacff528f59e625be99ebadfb7609c8f265 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期五, 21 六月 2024 14:36:35 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java | 12 + src/main/java/com/zy/core/thread/JarThread.java | 132 ++++++++++- src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 56 +++ src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java | 12 + src/main/java/com/zy/core/model/protocol/JarProtocol.java | 14 + src/main/resources/mapper/BasJarMastMapper.xml | 28 ++ src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java | 28 ++ src/main/java/com/zy/asrs/service/BasJarMastService.java | 10 src/main/resources/mapper/WrkMastExecuteMapper.xml | 28 ++ src/main/java/com/zy/common/CodeBuilder.java | 2 src/main/java/com/zy/asrs/entity/WrkMastExecute.java | 280 +++++++++++++++++++++++ src/main/java/com/zy/asrs/entity/BasJarMastStatus.java | 3 src/main/java/com/zy/core/enums/JarModeType.java | 43 +++ src/main/java/com/zy/asrs/service/WrkMastExecuteService.java | 8 src/main/java/com/zy/asrs/entity/BasJarMast.java | 7 src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java | 11 16 files changed, 650 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/BasJarMast.java b/src/main/java/com/zy/asrs/entity/BasJarMast.java index 0780b72..f69f651 100644 --- a/src/main/java/com/zy/asrs/entity/BasJarMast.java +++ b/src/main/java/com/zy/asrs/entity/BasJarMast.java @@ -139,6 +139,13 @@ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date appeTime; + /** + * 搴撲綅鍙� + */ + @ApiModelProperty(value= "搴撲綅鍙�") + @TableField("jar_loc_digit") + private Integer jarLocDigit; + public BasJarMast() {} public BasJarMast(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer enterSteNo,Integer outSteId,Integer enterRgvId,Integer outRgvId,Date ioTime,Date modiTime,Date appeTime) { diff --git a/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java b/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java index 3231faf..9ab421c 100644 --- a/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java +++ b/src/main/java/com/zy/asrs/entity/BasJarMastStatus.java @@ -1,5 +1,7 @@ package com.zy.asrs.entity; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; import io.swagger.annotations.ApiModelProperty; @@ -17,6 +19,7 @@ * ID */ @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) private Long id; /** diff --git a/src/main/java/com/zy/asrs/entity/WrkMastExecute.java b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java new file mode 100644 index 0000000..246e53b --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/WrkMastExecute.java @@ -0,0 +1,280 @@ +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 java.text.SimpleDateFormat; +import java.util.Date; +import org.springframework.format.annotation.DateTimeFormat; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.text.SimpleDateFormat; +import java.util.Date; +import com.core.common.SpringUtils; +import com.zy.asrs.service.BasJarMastStatusService; +import com.zy.asrs.entity.BasJarMastStatus; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("jar_wrk_mast_execute") +public class WrkMastExecute implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * ID + */ + @ApiModelProperty(value= "ID") + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 宸ヤ綔鍙� + */ + @ApiModelProperty(value= "宸ヤ綔鍙�") + @TableField("wrk_no") + private Long wrkNo; + + /** + * 鍏ュ簱婧愮珯鐐� + */ + @ApiModelProperty(value= "鍏ュ簱婧愮珯鐐�") + @TableField("enter_sta_no") + private Integer enterStaNo; + + /** + * 鍏ュ簱鐩爣绔欑偣 + */ + @ApiModelProperty(value= "鍏ュ簱鐩爣绔欑偣") + @TableField("out_sta_no") + private Integer outStaNo; + + /** + * 鍏ョ~鍖栫綈绔欑偣 + */ + @ApiModelProperty(value= "鍏ョ~鍖栫綈绔欑偣") + @TableField("jar_enter_sta_no") + private Integer jarEnterStaNo; + + /** + * 鍑虹~鍖栫綈绔欑偣 + */ + @ApiModelProperty(value= "鍑虹~鍖栫綈绔欑偣") + @TableField("jar_out_sta_no") + private Integer jarOutStaNo; + + /** + * 璁惧ID + */ + @ApiModelProperty(value= "璁惧ID") + @TableField("jar_id") + private Integer jarId; + + /** + * 鍖哄煙 + */ + @ApiModelProperty(value= "鍖哄煙") + @TableField("jar_regin") + private Integer jarRegin; + + /** + * 鐘舵�� + */ + @ApiModelProperty(value= "鐘舵��") + private Integer status; + + /** + * 绌挎鏉� + */ + @ApiModelProperty(value= "绌挎鏉�") + @TableField("ste_id") + private Integer steId; + + /** + * RGV + */ + @ApiModelProperty(value= "RGV") + @TableField("rgv_id") + private Integer rgvId; + + /** + * 浣滀笟鏃堕棿 + */ + @ApiModelProperty(value= "浣滀笟鏃堕棿") + @TableField("io_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date ioTime; + + /** + * 鍒涘缓鏃堕棿 + */ + @ApiModelProperty(value= "鍒涘缓鏃堕棿") + @TableField("modi_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date modiTime; + + /** + * 鏇存柊鏃堕棿 + */ + @ApiModelProperty(value= "鏇存柊鏃堕棿") + @TableField("appe_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date appeTime; + + /** + * 浠诲姟鐘舵�� 0: 鍒濆 1: 浣滀笟涓� 2: 瀹屾垚 + */ + @ApiModelProperty(value= "浠诲姟鐘舵�� 0: 鍒濆 1: 浣滀笟涓� 2: 瀹屾垚 ") + @TableField("wrk_type") + private Integer wrkType; + + /** + * 宸ヤ綔鐘舵�� + */ + @ApiModelProperty(value= "宸ヤ綔鐘舵��") + @TableField("wrk_sts") + private Integer wrkSts; + + /** + * 浠诲姟绫诲瀷 0: 鏈煡 1: 寮�闂� 2: 鍏抽棬 3: 鍏ョ~鍖栫綈 4: 鍏ュ喎鍗存Ы 5: 绌挎杞﹁繘鍐峰嵈妲� 6: 绌挎杞︾寮�鍐峰嵈妲� 7: 鍑哄喎鍗存Ы + */ + @ApiModelProperty(value= "浠诲姟绫诲瀷 0: 鏈煡 1: 寮�闂� 2: 鍏抽棬 3: 鍏ョ~鍖栫綈 4: 鍏ュ喎鍗存Ы 5: 绌挎杞﹁繘鍐峰嵈妲� 6: 绌挎杞︾寮�鍐峰嵈妲� 7: 鍑哄喎鍗存Ы ") + @TableField("io_type") + private Integer ioType; + + /** + * 璁惧 0: 鏈煡 1: 纭寲缃� 2: 鍐峰嵈妲� + */ + @ApiModelProperty(value= "璁惧 0: 鏈煡 1: 纭寲缃� 2: 鍐峰嵈妲� ") + private Integer type; + + public WrkMastExecute() {} + + public WrkMastExecute(Long wrkNo,Integer enterStaNo,Integer outStaNo,Integer jarEnterStaNo,Integer jarOutStaNo,Integer jarId,Integer jarRegin,Integer status,Integer steId,Integer rgvId,Date ioTime,Date modiTime,Date appeTime,Integer wrkType,Integer wrkSts,Integer ioType,Integer type) { + this.wrkNo = wrkNo; + this.enterStaNo = enterStaNo; + this.outStaNo = outStaNo; + this.jarEnterStaNo = jarEnterStaNo; + this.jarOutStaNo = jarOutStaNo; + this.jarId = jarId; + this.jarRegin = jarRegin; + this.status = status; + this.steId = steId; + this.rgvId = rgvId; + this.ioTime = ioTime; + this.modiTime = modiTime; + this.appeTime = appeTime; + this.wrkType = wrkType; + this.wrkSts = wrkSts; + this.ioType = ioType; + this.type = type; + } + +// WrkMastExecute wrkMastExecute = new WrkMastExecute( +// null, // 宸ヤ綔鍙穂闈炵┖] +// null, // 鍏ュ簱婧愮珯鐐筟闈炵┖] +// null, // 鍏ュ簱鐩爣绔欑偣[闈炵┖] +// null, // 鍏ョ~鍖栫綈绔欑偣[闈炵┖] +// null, // 鍑虹~鍖栫綈绔欑偣[闈炵┖] +// null, // 璁惧ID[闈炵┖] +// null, // 鍖哄煙[闈炵┖] +// null, // 鐘舵�乕闈炵┖] +// null, // 绌挎鏉縖闈炵┖] +// null, // RGV[闈炵┖] +// null, // 浣滀笟鏃堕棿 +// null, // 鍒涘缓鏃堕棿 +// null, // 鏇存柊鏃堕棿 +// null, // 浠诲姟鐘舵�乕闈炵┖] +// null, // 宸ヤ綔鐘舵�乕闈炵┖] +// null, // 浠诲姟绫诲瀷[闈炵┖] +// 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); + } + + public String getAppeTime$(){ + if (Cools.isEmpty(this.appeTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); + } + + public String getWrkType$(){ + if (null == this.wrkType){ return null; } + switch (this.wrkType){ + case 0: + return "鍒濆"; + case 1: + return "浣滀笟涓�"; + case 2: + return "瀹屾垚"; + default: + return String.valueOf(this.wrkType); + } + } + + public String getWrkSts$(){ + BasJarMastStatusService service = SpringUtils.getBean(BasJarMastStatusService.class); + BasJarMastStatus basJarMastStatus = service.selectById(this.wrkSts); + if (!Cools.isEmpty(basJarMastStatus)){ + return String.valueOf(basJarMastStatus.getId()); + } + return null; + } + + public String getIoType$(){ + if (null == this.ioType){ return null; } + switch (this.ioType){ + case 0: + return this.ioType+":鏈煡"; + case 1: + return this.ioType+":寮�闂�"; + case 2: + return this.ioType+":鍏抽棬"; + case 3: + return this.ioType+":鍏ョ~鍖栫綈"; + case 4: + return this.ioType+":鍏ュ喎鍗存Ы"; + case 5: + return this.ioType+":绌挎杞﹁繘鍐峰嵈妲�"; + case 6: + return this.ioType+":绌挎杞︾寮�鍐峰嵈妲�"; + case 7: + return this.ioType+":鍑哄喎鍗存Ы"; + default: + return String.valueOf(this.ioType); + } + } + + public String getType$(){ + if (null == this.type){ return null; } + switch (this.type){ + case 0: + return "鏈煡"; + case 1: + return "纭寲缃�"; + case 2: + return "鍐峰嵈妲�"; + default: + return String.valueOf(this.type); + } + } + + +} diff --git a/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java b/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java index 3cb926c..1d4626b 100644 --- a/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/BasJarMastMapper.java @@ -3,10 +3,21 @@ import com.zy.asrs.entity.BasJarMast; import com.baomidou.mybatisplus.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; + +import java.util.List; @Mapper @Repository public interface BasJarMastMapper extends BaseMapper<BasJarMast> { + List<BasJarMast> getJarMastByJarId(@Param("jarId") Long jarId); + + BasJarMast getJarMastByJarIdMax(@Param("jarId") Long jarId); + + BasJarMast getJarMastByJarIdMin(@Param("jarId") Long jarId); + + Integer getJarMastByJarIdCount(@Param("jarId") Long jarId); + } diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java new file mode 100644 index 0000000..53d39fc --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/WrkMastExecuteMapper.java @@ -0,0 +1,12 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.WrkMastExecute; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface WrkMastExecuteMapper extends BaseMapper<WrkMastExecute> { + +} diff --git a/src/main/java/com/zy/asrs/service/BasJarMastService.java b/src/main/java/com/zy/asrs/service/BasJarMastService.java index 1a16f9d..2744d04 100644 --- a/src/main/java/com/zy/asrs/service/BasJarMastService.java +++ b/src/main/java/com/zy/asrs/service/BasJarMastService.java @@ -3,6 +3,16 @@ import com.zy.asrs.entity.BasJarMast; import com.baomidou.mybatisplus.service.IService; +import java.util.List; + public interface BasJarMastService extends IService<BasJarMast> { + List<BasJarMast> getJarMastByJarId(Long jarId); + + BasJarMast getJarMastByJarIdMax(Long jarId); + + BasJarMast getJarMastByJarIdMin(Long jarId); + + Integer getJarMastByJarIdCount(Long jarId); + } diff --git a/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java new file mode 100644 index 0000000..bca4c26 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/WrkMastExecuteService.java @@ -0,0 +1,8 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.WrkMastExecute; +import com.baomidou.mybatisplus.service.IService; + +public interface WrkMastExecuteService extends IService<WrkMastExecute> { + +} diff --git a/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java index 93a7343..b4a3364 100644 --- a/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/BasJarMastServiceImpl.java @@ -6,7 +6,35 @@ import com.baomidou.mybatisplus.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; + @Service("basJarMastService") public class BasJarMastServiceImpl extends ServiceImpl<BasJarMastMapper, BasJarMast> implements BasJarMastService { + @Override + public List<BasJarMast> getJarMastByJarId(Long jarId) { + return this.baseMapper.getJarMastByJarId(jarId); + } + + /* + * 鑾峰彇jarLocDigit鏈�澶х殑BasJarMast + * */ + @Override + public BasJarMast getJarMastByJarIdMax(Long jarId) { + return this.baseMapper.getJarMastByJarIdMax(jarId); + } + + /* + * 鑾峰彇jarLocDigit鏈�灏忕殑BasJarMast + * */ + @Override + public BasJarMast getJarMastByJarIdMin(Long jarId) { + return this.baseMapper.getJarMastByJarIdMin(jarId); + } + + @Override + public Integer getJarMastByJarIdCount(Long jarId) { + return this.baseMapper.getJarMastByJarIdCount(jarId); + } + } 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 a1284f4..99755c1 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -34,13 +34,11 @@ import com.zy.core.model.command.RgvCommand; import com.zy.core.model.cpmmandParam.CrnCommandParam; import com.zy.core.model.protocol.CrnProtocol; +import com.zy.core.model.protocol.JarProtocol; import com.zy.core.model.protocol.RgvProtocol; import com.zy.core.model.protocol.StaProtocol; import com.zy.core.properties.SlaveProperties; -import com.zy.core.thread.BarcodeThread; -import com.zy.core.thread.LedThread; -import com.zy.core.thread.RgvThread; -import com.zy.core.thread.SiemensDevpThread; +import com.zy.core.thread.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -107,11 +105,14 @@ private WrkMastCrnMapper wrkMastCrnMapper; @Autowired private WrkMastSplitTwinMapper wrkMastSplitTwinMapper; + @Autowired + private WrkMastSplitTwinService wrkMastSplitTwinService; + @Autowired + private BasJarMastService basJarMastService; @Value("${wms.url}") private String wmsUrl; - @Autowired - private WrkMastSplitTwinService wrkMastSplitTwinService; + /** * 缁勬墭 @@ -4409,12 +4410,45 @@ * Jar浠诲姟鍒涘缓 */ public synchronized void jarGenerateWrkMastSta() { - try{ - - }catch (Exception e){ - log.error("灏忚溅澶嶄綅绾跨▼鎶ラ敊锛�"+e); + for (JarSlave jarSlave : slaveProperties.getJar()) { + try{ + Integer count = basJarMastService.getJarMastByJarIdCount(jarSlave.getId().longValue()); + if (count>=7){ + continue; + } + BasJarMast jarMastByJarIdMax = basJarMastService.getJarMastByJarIdMax(jarSlave.getId().longValue()); + if (jarMastByJarIdMax.getJarLocDigit()==7){ + continue; + } + jarGenerateWrkMastStaExecute(jarSlave); + }catch (Exception e){ + log.error(jarSlave.getId()+"鍙峰皬杞﹀浣嶇嚎绋嬫姤閿欙紒"+e); + } } } + + /** + * Jar浠诲姟鍒涘缓 鎵ц + */ + public synchronized boolean jarGenerateWrkMastStaExecute(JarSlave jarSlave) { + try{ + // 鑾峰彇鍫嗗灈鏈轰俊鎭� + JarThread jarThread = (JarThread) SlaveConnection.get(SlaveType.Jar, jarSlave.getId()); + JarProtocol jarProtocol = jarThread.getJarProtocol(); + if (jarProtocol == null) { + return false; + } + if (jarProtocol.modeType != JarModeType.AUTO){ + return false; + } + // 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1 + + } catch (Exception e){ +// log.error("鍫嗗灈鏈哄伐浣嶄簩瀹屾垚绛夊緟纭寮傚父,鍫嗗灈鏈哄彿={},寮傚父淇℃伅={},宸ヤ綅鍙�={}",crn.getId(),e.getMessage(),2); + } + return false; + } + /** * Jar浠诲姟鎵ц @@ -4499,7 +4533,7 @@ return false; } /* - * 灏忚溅鍙栫┖鏉胯嚦宸ヤ綅浠诲姟 婊″彇 + * 绌挎鏉跨Щ鍔� * */ public synchronized boolean jarRgvTake8(Integer rgvId,BasJarMast basJarMast){ return false; diff --git a/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java new file mode 100644 index 0000000..06f9976 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/WrkMastExecuteServiceImpl.java @@ -0,0 +1,12 @@ +package com.zy.asrs.service.impl; + +import com.zy.asrs.mapper.WrkMastExecuteMapper; +import com.zy.asrs.entity.WrkMastExecute; +import com.zy.asrs.service.WrkMastExecuteService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +@Service("wrkMastExecuteService") +public class WrkMastExecuteServiceImpl extends ServiceImpl<WrkMastExecuteMapper, WrkMastExecute> implements WrkMastExecuteService { + +} diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java index 05f6638..91f0ec4 100644 --- a/src/main/java/com/zy/common/CodeBuilder.java +++ b/src/main/java/com/zy/common/CodeBuilder.java @@ -20,7 +20,7 @@ generator.url="192.168.4.15:1433;databasename=ahyxasrs"; generator.username="sa"; generator.password="sa@123"; - generator.table="asr_bas_jar_mast"; + generator.table="jar_wrk_mast_execute"; generator.packagePath="com.zy.asrs"; generator.controller = false; diff --git a/src/main/java/com/zy/core/enums/JarModeType.java b/src/main/java/com/zy/core/enums/JarModeType.java new file mode 100644 index 0000000..6e86ac9 --- /dev/null +++ b/src/main/java/com/zy/core/enums/JarModeType.java @@ -0,0 +1,43 @@ +package com.zy.core.enums; + +public enum JarModeType { + + NONE(-1, "绂荤嚎"), + STOP(0, "缁翠慨"), + HAND(1, "鎵嬪姩"), + HALF_AUTO(2, "鍗婅嚜鍔�"), + AUTO(3, "鑷姩"), + AUTO2(100, "鍏跺畠"), + ; + + public Integer id; + public String desc; + JarModeType(Integer id, String desc) { + this.id = id; + this.desc = desc; + } + + public static JarModeType get(Integer id) { + if (null == id) { + return null; + } + for (JarModeType type : JarModeType.values()) { + if (type.id.equals(id)) { + return type; + } + } + return null; + } + + public static JarModeType get(JarModeType type) { + if (null == type) { + return null; + } + for (JarModeType jarModeType : JarModeType.values()) { + if (jarModeType == type) { + return jarModeType; + } + } + return null; + } +} diff --git a/src/main/java/com/zy/core/model/protocol/JarProtocol.java b/src/main/java/com/zy/core/model/protocol/JarProtocol.java index 0488b50..4bc415b 100644 --- a/src/main/java/com/zy/core/model/protocol/JarProtocol.java +++ b/src/main/java/com/zy/core/model/protocol/JarProtocol.java @@ -1,6 +1,8 @@ package com.zy.core.model.protocol; import com.zy.asrs.entity.BasJar; +import com.zy.core.enums.CrnModeType; +import com.zy.core.enums.JarModeType; import com.zy.core.enums.JarStatusType; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -22,6 +24,9 @@ * 0 = 鑴辨満妯″紡 */ public Integer mode; + + public JarModeType modeType; + /** IDLE(0, "绌洪棽"), @@ -84,6 +89,15 @@ this.status = JarStatusType.get(type).id.shortValue(); } + public void setMode(Integer mode) { + this.mode = mode; + this.modeType = JarModeType.get(mode); + } + + public void setMode(JarModeType type) { + this.modeType = type; + this.mode = JarModeType.get(type).id; + } public BasJar toSqlModel(BasJar basJar){ if (jarErr!=null) { diff --git a/src/main/java/com/zy/core/thread/JarThread.java b/src/main/java/com/zy/core/thread/JarThread.java index f185a81..1684250 100644 --- a/src/main/java/com/zy/core/thread/JarThread.java +++ b/src/main/java/com/zy/core/thread/JarThread.java @@ -4,11 +4,15 @@ import HslCommunication.Core.Types.OperateResultExOne; import HslCommunication.Profinet.Siemens.SiemensPLCS; import HslCommunication.Profinet.Siemens.SiemensS7Net; +import com.alibaba.fastjson.JSON; +import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.SpringUtils; import com.core.exception.CoolException; import com.zy.asrs.entity.BasJar; +import com.zy.asrs.entity.BasSteOpt; import com.zy.asrs.service.BasJarService; +import com.zy.asrs.service.BasSteOptService; import com.zy.core.News; import com.zy.core.ThreadHandler; import com.zy.core.cache.MessageQueue; @@ -17,7 +21,9 @@ import com.zy.core.enums.SlaveType; import com.zy.core.model.JarSlave; import com.zy.core.model.Task; +import com.zy.core.model.command.SteCommand; import com.zy.core.model.protocol.JarProtocol; +import com.zy.core.model.protocol.StaProtocol; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -57,6 +63,10 @@ // 璇绘暟鎹� case 1: readStatus(); + break; + // 鍐欐暟鎹� ID+鐩爣绔� + case 2: + write(null); break; default: break; @@ -110,23 +120,21 @@ */ private void readStatus(){ try { - OperateResultExOne<byte[]> result = siemensS7Net.Read("DB101.0", (short) 10); + OperateResultExOne<byte[]> result = siemensS7Net.Read("V300", (short) 26); if (result.IsSuccess) { if (null == jarProtocol) { jarProtocol = new JarProtocol(); jarProtocol.setJarNo(slave.getId()); } - jarProtocol.setMode(siemensS7Net.getByteTransform().TransInt32(result.Content, 2)); - jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鐘舵�� - jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鐘舵�� - jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙紑 - jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//宸﹂棬鍙叧 - jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙紑 - jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鍙抽棬鍙叧 - jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransBool(result.Content, 4));//鑷� - jarProtocol.setJarErr(siemensS7Net.getByteTransform().TransInt32(result.Content, 4));//寮傚父鐮� - - + jarProtocol.setMode((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 0)); + jarProtocol.setLeftDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 2) != 0);//宸﹂棬鐘舵�� + jarProtocol.setRightDoor(siemensS7Net.getByteTransform().TransInt16(result.Content, 4) != 0);//鍙抽棬鐘舵�� + jarProtocol.setLeftInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 6) != 0);//宸﹂棬鍙紑 + jarProtocol.setLeftOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 8) != 0);//宸﹂棬鍙叧 + jarProtocol.setRightInEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 10) != 0);//鍙抽棬鍙紑 + jarProtocol.setRightOutEnable(siemensS7Net.getByteTransform().TransInt16(result.Content, 12) != 0);//鍙抽棬鍙叧 + jarProtocol.setJarErr((int)siemensS7Net.getByteTransform().TransInt16(result.Content, 14));//寮傚父鐮� + jarProtocol.setAutoing(siemensS7Net.getByteTransform().TransInt16(result.Content, 16) != 0);//妯″紡 // 鏍规嵁瀹炴椂淇℃伅鏇存柊鏁版嵁搴� BasJarService service = SpringUtils.getBean(BasJarService.class); if (null != service) { @@ -151,6 +159,106 @@ } + /** + * 鍐欏叆鏁版嵁 + */ + private synchronized boolean write(SteCommand command){ + if (null == command) { + News.error("绌挎杞﹀啓鍏ュ懡浠や负绌�"); + return false; + } + command.setSteNo(slave.getId()); + OperateResult result = null; + // 寮�濮嬩换鍔� + if (!command.getComplete()) { + //缁勭粐浠诲姟鍓嶏紝鍏堟竻绌哄啓浠诲姟纭浣嶏紝浠ュ強浠诲姟瀹屾垚纭浣� + OperateResult result01 = siemensS7Net.Write("V2000.0", false); + OperateResult result02 = siemensS7Net.Write("V2000.1", false); + // 1.浠诲姟鍙� + OperateResult result0 = siemensS7Net.Write("V998", command.getTaskNo().shortValue()); + try { + Thread.sleep(200); + } catch (InterruptedException e) { + e.printStackTrace(); + } + // 浣滀笟 + if (command.getTaskMode() != 0) { + // 2.浣滀笟 + OperateResult result1 = siemensS7Net.Write("V1000", command.getTaskMode()); + // 3.纭寮�濮嬩换鍔� + if (result0.IsSuccess && result1.IsSuccess) { + result = siemensS7Net.Write("V2000.0", true); + } + } + + // 浠诲姟瀹屾垚 + } else { + siemensS7Net.Write("V998", (short) 0); + siemensS7Net.Write("V1000", (short) 0); + siemensS7Net.Write("V2000.0", false); + result = siemensS7Net.Write("V2000.1", true); + } + + try { + // 鏃ュ織璁板綍 + if (!command.getComplete() && command.getTaskMode() != 0) { + BasSteOptService bean = SpringUtils.getBean(BasSteOptService.class); + if (null != bean) { + BasSteOpt basSteOpt = new BasSteOpt( + command.getTaskNo(), // 浠诲姟鍙� + command.getSteNo(), // 绌挎杞� + new Date(), // 涓嬪彂鏃堕棿 + command.getTaskModeType().desc, // 浣滀笟 + null, // 婧愭帓 + null, // 婧愬垪 + null, // 婧愬眰 + null, // 婧愮珯 + null, // 鐩爣鎺� + null, // 鐩爣鍒� + null, // 鐩爣灞� + null, // 鐩爣绔� + null, // 鍝嶅簲缁撴灉 + null, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + null // 澶囨敞 + ); + bean.insert(basSteOpt); + } + } + + } catch (Exception ignore) {} + + if (result != null && result.IsSuccess) { + + + News.info("绌挎杞﹀懡浠や笅鍙慬id:{}] >>>>> {}", slave.getId(), JSON.toJSON(command)); + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆慬id:{1}] >>>>> 鍛戒护涓嬪彂锛� {2}", DateUtils.convert(new Date()), slave.getId(), JSON.toJSON(command))); + + try { + Thread.sleep(500); + } catch (Exception e){ + + } + OperateResultExOne<byte[]> result1 = siemensS7Net.Read("V998", (short) 4); + if (result1.IsSuccess) { + short taskNo = siemensS7Net.getByteTransform().TransInt16(result1.Content, 0); + short taskType = siemensS7Net.getByteTransform().TransInt16(result1.Content, 2); +// readStatus(); + } + return true; + } else { + OutputQueue.STE.offer(MessageFormat.format("銆恵0}銆戝啓鍏ョ┛姊溅plc鏁版嵁澶辫触 ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), slave.getId(), slave.getIp(), slave.getPort())); + News.error("鍐欏叆绌挎杞lc鏁版嵁澶辫触 ===>> [id:{}] [ip:{}] [port:{}]", slave.getId(), slave.getIp(), slave.getPort()); + + //鍐欏叆澶辫触鍚庯紝閲嶆柊娣诲姞commanddao 浠诲姟闃熷垪涓�,骞剁珛鍗冲洖璇讳竴娆¤澶囩姸鎬� +// MessageQueue.offer(SlaveType.Ste, slave.getId(), new Task(2, command)); +// readStatus(); + + initSte(); + return false; + } + } + @Override public void close() { // siemensS7Net.ConnectClose(); diff --git a/src/main/resources/mapper/BasJarMastMapper.xml b/src/main/resources/mapper/BasJarMastMapper.xml index a73dd49..8d7ed8a 100644 --- a/src/main/resources/mapper/BasJarMastMapper.xml +++ b/src/main/resources/mapper/BasJarMastMapper.xml @@ -20,7 +20,35 @@ <result column="io_time" property="ioTime" /> <result column="modi_time" property="modiTime" /> <result column="appe_time" property="appeTime" /> + <result column="jar_loc_digit" property="jarLocDigit" /> </resultMap> + <select id="getJarMastByJarId" resultMap="BaseResultMap"> + select * from asr_bas_jar_mast + where 1=1 + and jar_id = #{jarId} + order by jar_loc_digit + </select> + + <select id="getJarMastByJarIdMax" resultMap="BaseResultMap"> + select top 1 * from asr_bas_jar_mast + where 1=1 + and jar_id = #{jarId} + order by jar_loc_digit desc + </select> + + <select id="getJarMastByJarIdMin" resultMap="BaseResultMap"> + select top 1 * from asr_bas_jar_mast + where 1=1 + and jar_id = #{jarId} + order by jar_loc_digit asc + </select> + + <select id="getJarMastByJarIdCount" resultType="Integer"> + select count(1) from asr_bas_jar_mast + where 1=1 + and jar_id = #{jarId} + </select> + </mapper> diff --git a/src/main/resources/mapper/WrkMastExecuteMapper.xml b/src/main/resources/mapper/WrkMastExecuteMapper.xml new file mode 100644 index 0000000..6e40ecc --- /dev/null +++ b/src/main/resources/mapper/WrkMastExecuteMapper.xml @@ -0,0 +1,28 @@ +<?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.WrkMastExecuteMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.WrkMastExecute"> + <id column="id" property="id" /> + <result column="wrk_no" property="wrkNo" /> + <result column="enter_sta_no" property="enterStaNo" /> + <result column="out_sta_no" property="outStaNo" /> + <result column="jar_enter_sta_no" property="jarEnterStaNo" /> + <result column="jar_out_sta_no" property="jarOutStaNo" /> + <result column="jar_id" property="jarId" /> + <result column="jar_regin" property="jarRegin" /> + <result column="status" property="status" /> + <result column="ste_id" property="steId" /> + <result column="rgv_id" property="rgvId" /> + <result column="io_time" property="ioTime" /> + <result column="modi_time" property="modiTime" /> + <result column="appe_time" property="appeTime" /> + <result column="wrk_type" property="wrkType" /> + <result column="wrk_sts" property="wrkSts" /> + <result column="io_type" property="ioType" /> + <result column="type" property="type" /> + + </resultMap> + +</mapper> -- Gitblit v1.9.1