From 3f02e208daff9a760d3a0ea5680a0138e0a23e03 Mon Sep 17 00:00:00 2001 From: tqs <56479841@qq.com> Date: 星期六, 03 十二月 2022 14:32:26 +0800 Subject: [PATCH] # --- src/main/resources/mapper/BasRgvErrLogMapper.xml | 32 +++ src/main/java/com/zy/asrs/mapper/BasRgvErrLogMapper.java | 12 + src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 140 +++++++++++++++ src/main/java/com/zy/asrs/service/BasRgvErrLogService.java | 13 + src/main/java/com/zy/asrs/entity/BasRgvErrLog.java | 261 +++++++++++++++++++++++++++++ src/main/java/com/zy/core/MainProcess.java | 4 src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java | 39 ++++ src/main/java/com/zy/common/CodeBuilder.java | 2 src/main/resources/application.yml | 2 9 files changed, 498 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java b/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java new file mode 100644 index 0000000..30a6a82 --- /dev/null +++ b/src/main/java/com/zy/asrs/entity/BasRgvErrLog.java @@ -0,0 +1,261 @@ +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 io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import com.baomidou.mybatisplus.annotations.TableName; +import java.io.Serializable; + +@Data +@TableName("asr_bas_rgv_err_log") +public class BasRgvErrLog implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value= "") + @TableId(value = "id", type = IdType.INPUT) + private Long id; + + /** + * 缂栧彿 + */ + @ApiModelProperty(value= "缂栧彿") + private String uuid; + + /** + * 宸ヤ綔鍙� + */ + @ApiModelProperty(value= "宸ヤ綔鍙�") + @TableField("wrk_no") + private Integer wrkNo; + + /** + * 鍙戠敓鏃堕棿 + */ + @ApiModelProperty(value= "鍙戠敓鏃堕棿") + @TableField("start_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date startTime; + + /** + * 缁撴潫鏃堕棿 + */ + @ApiModelProperty(value= "缁撴潫鏃堕棿") + @TableField("end_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date endTime; + + /** + * 宸ヤ綔鐘舵�� + */ + @ApiModelProperty(value= "宸ヤ綔鐘舵��") + @TableField("wrk_sts") + private Long wrkSts; + + /** + * 鍏ュ嚭搴撶被鍨� + */ + @ApiModelProperty(value= "鍏ュ嚭搴撶被鍨�") + @TableField("io_type") + private Integer ioType; + + /** + * 绌挎杞� + */ + @ApiModelProperty(value= "绌挎杞�") + @TableField("rtv_no") + private Integer rtvNo; + + /** + * plc + */ + @ApiModelProperty(value= "plc") + @TableField("plc_no") + private Integer plcNo; + + /** + * 鐩爣搴撲綅 + */ + @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= "鏉$爜") + private String barcode; + + /** + * 寮傚父鐮� + */ + @ApiModelProperty(value= "寮傚父鐮�") + @TableField("err_code") + private Integer errCode; + + /** + * 寮傚父 + */ + @ApiModelProperty(value= "寮傚父") + private String error; + + /** + * 寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� + */ + @ApiModelProperty(value= "寮傚父鎯呭喌 1: 鏈鐞� 2: 宸蹭慨澶� ") + private Integer status; + + /** + * 娣诲姞鏃堕棿 + */ + @ApiModelProperty(value= "娣诲姞鏃堕棿") + @TableField("create_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date createTime; + + /** + * 娣诲姞浜哄憳 + */ + @ApiModelProperty(value= "娣诲姞浜哄憳") + @TableField("create_by") + private Long createBy; + + /** + * 淇敼鏃堕棿 + */ + @ApiModelProperty(value= "淇敼鏃堕棿") + @TableField("update_time") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + private Date updateTime; + + /** + * 淇敼浜哄憳 + */ + @ApiModelProperty(value= "淇敼浜哄憳") + @TableField("update_by") + private Long updateBy; + + /** + * 澶囨敞 + */ + @ApiModelProperty(value= "澶囨敞") + private String memo; + + public BasRgvErrLog() {} + + public BasRgvErrLog(String uuid,Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer rtvNo,Integer plcNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo) { + this.uuid = uuid; + this.wrkNo = wrkNo; + this.startTime = startTime; + this.endTime = endTime; + this.wrkSts = wrkSts; + this.ioType = ioType; + this.rtvNo = rtvNo; + this.plcNo = plcNo; + this.locNo = locNo; + this.staNo = staNo; + this.sourceStaNo = sourceStaNo; + this.sourceLocNo = sourceLocNo; + this.barcode = barcode; + this.errCode = errCode; + this.error = error; + this.status = status; + this.createTime = createTime; + this.createBy = createBy; + this.updateTime = updateTime; + this.updateBy = updateBy; + this.memo = memo; + } + +// BasRgvErrLog basRgvErrLog = new BasRgvErrLog( +// null, // [闈炵┖] +// null, // 缂栧彿 +// null, // 宸ヤ綔鍙� +// null, // 鍙戠敓鏃堕棿 +// null, // 缁撴潫鏃堕棿 +// null, // 宸ヤ綔鐘舵�� +// null, // 鍏ュ嚭搴撶被鍨� +// null, // 绌挎杞� +// null, // plc +// null, // 鐩爣搴撲綅 +// null, // 鐩爣绔� +// null, // 婧愮珯 +// null, // 婧愬簱浣� +// null, // 鏉$爜 +// null, // 寮傚父鐮� +// null, // 寮傚父 +// null, // 寮傚父鎯呭喌 +// null, // 娣诲姞鏃堕棿 +// null, // 娣诲姞浜哄憳 +// null, // 淇敼鏃堕棿 +// null, // 淇敼浜哄憳 +// null // 澶囨敞 +// ); + + public String getStartTime$(){ + if (Cools.isEmpty(this.startTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); + } + + public String getEndTime$(){ + if (Cools.isEmpty(this.endTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); + } + + public String getStatus$(){ + if (null == this.status){ return null; } + switch (this.status){ + case 1: + return "鏈鐞�"; + case 2: + return "宸蹭慨澶�"; + default: + return String.valueOf(this.status); + } + } + + public String getCreateTime$(){ + if (Cools.isEmpty(this.createTime)){ + return ""; + } + return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); + } + + 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/BasRgvErrLogMapper.java b/src/main/java/com/zy/asrs/mapper/BasRgvErrLogMapper.java new file mode 100644 index 0000000..ba2d4f2 --- /dev/null +++ b/src/main/java/com/zy/asrs/mapper/BasRgvErrLogMapper.java @@ -0,0 +1,12 @@ +package com.zy.asrs.mapper; + +import com.zy.asrs.entity.BasRgvErrLog; +import com.baomidou.mybatisplus.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Repository; + +@Mapper +@Repository +public interface BasRgvErrLogMapper extends BaseMapper<BasRgvErrLog> { + +} diff --git a/src/main/java/com/zy/asrs/service/BasRgvErrLogService.java b/src/main/java/com/zy/asrs/service/BasRgvErrLogService.java new file mode 100644 index 0000000..d9ae3f1 --- /dev/null +++ b/src/main/java/com/zy/asrs/service/BasRgvErrLogService.java @@ -0,0 +1,13 @@ +package com.zy.asrs.service; + +import com.zy.asrs.entity.BasErrLog; +import com.zy.asrs.entity.BasRgvErrLog; +import com.baomidou.mybatisplus.service.IService; + +public interface BasRgvErrLogService extends IService<BasRgvErrLog> { + + BasRgvErrLog findLatestByTaskNo(Integer rgvNo, Integer taskNo); + + BasRgvErrLog findLatest(Integer rgvNo); + +} diff --git a/src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java new file mode 100644 index 0000000..68a6d6e --- /dev/null +++ b/src/main/java/com/zy/asrs/service/impl/BasRgvErrLogServiceImpl.java @@ -0,0 +1,39 @@ +package com.zy.asrs.service.impl; + +import com.baomidou.mybatisplus.mapper.EntityWrapper; +import com.zy.asrs.entity.BasErrLog; +import com.zy.asrs.mapper.BasRgvErrLogMapper; +import com.zy.asrs.entity.BasRgvErrLog; +import com.zy.asrs.service.BasRgvErrLogService; +import com.baomidou.mybatisplus.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service("basRgvErrLogService") +public class BasRgvErrLogServiceImpl extends ServiceImpl<BasRgvErrLogMapper, BasRgvErrLog> implements BasRgvErrLogService { + + @Override + public BasRgvErrLog findLatestByTaskNo(Integer rgvNo, Integer taskNo) { + List<BasRgvErrLog> basRgvErrLog = this.baseMapper.selectList(new EntityWrapper<BasRgvErrLog>() + .eq("rgv_no", rgvNo) + .eq("wrk_no", taskNo) + .orderBy("start_time", false)); + if (basRgvErrLog == null || basRgvErrLog.size() == 0) { + return null; + } else { + return basRgvErrLog.get(0); + } + } + + @Override + public BasRgvErrLog findLatest(Integer crnNo) { + List<BasRgvErrLog> basErrLogs = this.baseMapper.selectList(new EntityWrapper<BasErrLog>().eq("crn_no", crnNo).orderBy("start_time", false)); + if (basErrLogs == null || basErrLogs.size() == 0) { + return null; + } else { + return basErrLogs.get(0); + } + } + +} 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 40d0589..7769479 100644 --- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java @@ -9,6 +9,7 @@ import com.core.exception.CoolException; 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.*; @@ -68,8 +69,6 @@ @Autowired private WrkDetlService wrkDetlService; @Autowired - private WaitPakinMapper waitPakinMapper; - @Autowired private LocMastService locMastService; @Autowired private StaDescService staDescService; @@ -85,6 +84,10 @@ private BasErrLogService basErrLogService; @Autowired private BasCrnErrorMapper basCrnErrorMapper; + @Autowired + private BasRgvErrMapper basRgvErrMapper; + @Autowired + private BasRgvErrLogService basRgvErrLogService; @Value("${wms.url}") private String wmsUrl; @@ -1736,6 +1739,138 @@ } /** + * 寮傚父淇℃伅璁板綍 + */ + public synchronized void recErr() { + try { + this.recCrnErr(); + this.recRgvErr(); + } catch (Exception e) { + log.error("recErr fail", e); + } + } + + /** + * RGV寮傚父淇℃伅璁板綍 + */ + public synchronized void recRgvErr() { + Date now = new Date(); + for (RgvSlave rgv : slaveProperties.getRgv()) { + // 鑾峰彇RGV淇℃伅 + RgvThread rgvThread = (RgvThread) SlaveConnection.get(SlaveType.Rgv, rgv.getId()); + RgvProtocol rgvProtocol = rgvThread.getRgvProtocol(); + if (rgvProtocol == null) { + continue; + } + if (true) { + // 鏈変换鍔� + if (rgvProtocol.getTaskNo1() != 0 || rgvProtocol.getTaskNo2() != 0) { + Integer taskNo = rgvProtocol.getTaskNo1() > 0 ? rgvProtocol.getTaskNo1().intValue() : rgvProtocol.getTaskNo2().intValue(); + BasRgvErrLog latest = basRgvErrLogService.findLatestByTaskNo(rgv.getId(), taskNo); + // 鏈夊紓甯� + if (latest == null) { + if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) { + WrkMast wrkMast = wrkMastMapper.selectById(taskNo); + if (wrkMast == null) { + continue; + } + BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); + String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName(); + BasRgvErrLog basRgvErrLog = new BasRgvErrLog( + null, // 缂栧彿 + wrkMast.getWrkNo(), // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + wrkMast.getWrkSts(), // 宸ヤ綔鐘舵�� + wrkMast.getIoType(), // 鍏ュ嚭搴撶被鍨� + rgv.getId(), // 鍫嗗灈鏈� + null, // plc + wrkMast.getLocNo(), // 鐩爣搴撲綅 + wrkMast.getStaNo(), // 鐩爣绔� + wrkMast.getSourceStaNo(), // 婧愮珯 + wrkMast.getSourceLocNo(), // 婧愬簱浣� + wrkMast.getBarcode(), // 鏉$爜 + (int) rgvProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "浠诲姟涓紓甯�" // 澶囨敞 + ); + + if (!basRgvErrLogService.insert(basRgvErrLog)) { + log.error("RGV寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", rgv.getId(), errName); + } + } + } else { + // 寮傚父淇 + if (rgvProtocol.getAlarm() == null || rgvProtocol.getAlarm() == 0) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basRgvErrLogService.updateById(latest)) { + log.error("鍫嗗灈鏈簆lc寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId()); + } + } + } + // 鏃犱换鍔� + } else { + BasRgvErrLog latest = basRgvErrLogService.findLatest(rgv.getId()); + // 鏈夊紓甯� + if (rgvProtocol.getAlarm() != null && rgvProtocol.getAlarm() > 0) { + // 璁板綍鏂板紓甯� + if (latest == null || (latest.getErrCode() != rgvProtocol.getAlarm().intValue())) { + BasRgvErr rgvErr = basRgvErrMapper.selectById(rgvProtocol.getAlarm()); + String errName = rgvErr == null ? String.valueOf(rgvProtocol.getAlarm()) : rgvErr.getErrName(); + BasRgvErrLog basRgvErrLog = new BasRgvErrLog( + null, // 缂栧彿 + null, // 宸ヤ綔鍙� + now, // 鍙戠敓鏃堕棿 + null, // 缁撴潫鏃堕棿 + null, // 宸ヤ綔鐘舵�� + null, // 鍏ュ嚭搴撶被鍨� + rgv.getId(), // 鍫嗗灈鏈� + null, // plc + null, // 鐩爣搴撲綅 + null, // 鐩爣绔� + null, // 婧愮珯 + null, // 婧愬簱浣� + null, // 鏉$爜 + (int) rgvProtocol.getAlarm(), // 寮傚父鐮� + errName, // 寮傚父 + 1, // 寮傚父鎯呭喌 + now, // 娣诲姞鏃堕棿 + null, // 娣诲姞浜哄憳 + now, // 淇敼鏃堕棿 + null, // 淇敼浜哄憳 + "鏃犱换鍔″紓甯�" // 澶囨敞 + ); + + if (!basRgvErrLogService.insert(basRgvErrLog)) { + log.error("RGV寮傚父璁板綍澶辫触 ===>> [id:{}] [error:{}]", rgv.getId(), errName); + } + } + // 鏃犲紓甯� + } else { + // 寮傚父淇 + if (latest != null && latest.getStatus() == 1) { + latest.setEndTime(now); + latest.setUpdateTime(now); + latest.setStatus(2); + if (!basRgvErrLogService.updateById(latest)) { + log.error("RGV寮傚父璁板綍淇澶辫触 ===>> [id:{}] [errLogId:{}]", rgv.getId(), latest.getId()); + } + } + } + } + } + + } + } + + /** * 鍫嗗灈鏈哄紓甯镐俊鎭褰� */ public synchronized void recCrnErr() { @@ -1852,7 +1987,6 @@ } } - // ------------------------------------------------------------------------------- diff --git a/src/main/java/com/zy/common/CodeBuilder.java b/src/main/java/com/zy/common/CodeBuilder.java index d0c963a..33131f2 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="localhost:1433;databasename=xjhsasrs"; generator.username="sa"; generator.password="sa@123"; - generator.table="asr_bas_rgv_err"; + generator.table="asr_bas_rgv_err_log"; generator.packagePath="com.zy.asrs"; generator.controller = false; diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java index 9634d57..ad935a8 100644 --- a/src/main/java/com/zy/core/MainProcess.java +++ b/src/main/java/com/zy/core/MainProcess.java @@ -72,8 +72,8 @@ // mainService.rgvOutDStnToOutStn(); ////////////////////////////////////////////////////////////////// - // 鍫嗗灈鏈哄紓甯镐俊鎭褰� - mainService.recCrnErr(); + // 寮傚父淇℃伅璁板綍 + mainService.recErr(); // 鍏ュ簱 ===>> 绌烘爤鏉垮垵濮嬪寲鍏ュ簱,鍙夎溅鍏ュ簱绔欐斁璐� mainService.storeEmptyPlt(); // 鍑哄簱 ===>> 宸ヤ綔妗d俊鎭啓鍏ed鏄剧ず鍣� diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index e62f9fb..a0150f3 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -36,7 +36,7 @@ enable: false wms: - url: localhost:8080/stwms + url: localhost:8080/hswms # 涓嬩綅鏈洪厤缃� wcs-slave: diff --git a/src/main/resources/mapper/BasRgvErrLogMapper.xml b/src/main/resources/mapper/BasRgvErrLogMapper.xml new file mode 100644 index 0000000..534d97b --- /dev/null +++ b/src/main/resources/mapper/BasRgvErrLogMapper.xml @@ -0,0 +1,32 @@ +<?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.BasRgvErrLogMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasRgvErrLog"> + <result column="id" property="id" /> + <result column="uuid" property="uuid" /> + <result column="wrk_no" property="wrkNo" /> + <result column="start_time" property="startTime" /> + <result column="end_time" property="endTime" /> + <result column="wrk_sts" property="wrkSts" /> + <result column="io_type" property="ioType" /> + <result column="rtv_no" property="rtvNo" /> + <result column="plc_no" property="plcNo" /> + <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="barcode" property="barcode" /> + <result column="err_code" property="errCode" /> + <result column="error" property="error" /> + <result column="status" property="status" /> + <result column="create_time" property="createTime" /> + <result column="create_by" property="createBy" /> + <result column="update_time" property="updateTime" /> + <result column="update_by" property="updateBy" /> + <result column="memo" property="memo" /> + + </resultMap> + +</mapper> -- Gitblit v1.9.1