diff --git a/web/src/main/java/com/zhehekeji/web/entity/CheckStreetSummary.java b/web/src/main/java/com/zhehekeji/web/entity/CheckStreetSummary.java index 429e7cb..a3f6b59 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CheckStreetSummary.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CheckStreetSummary.java @@ -16,9 +16,7 @@ import java.time.LocalDateTime; @ExcelIgnoreUnannotated public class CheckStreetSummary { - @TableId(type = IdType.AUTO) - private Integer id; - + @TableField private Integer streetId; @TableField(exist = false) diff --git a/web/src/main/java/com/zhehekeji/web/entity/CheckSummary.java b/web/src/main/java/com/zhehekeji/web/entity/CheckSummary.java index 2338305..b610103 100644 --- a/web/src/main/java/com/zhehekeji/web/entity/CheckSummary.java +++ b/web/src/main/java/com/zhehekeji/web/entity/CheckSummary.java @@ -10,13 +10,9 @@ import java.time.LocalDateTime; @Data public class CheckSummary { - @TableId(type = IdType.AUTO) - private Integer id; - + @TableId private String taskId; - private Integer type; - @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss") private LocalDateTime startTime; diff --git a/web/src/main/java/com/zhehekeji/web/mapper/CheckStreetSummaryMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/CheckStreetSummaryMapper.java index d0d4b4e..379d921 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/CheckStreetSummaryMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/CheckStreetSummaryMapper.java @@ -3,6 +3,7 @@ package com.zhehekeji.web.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.zhehekeji.web.entity.CheckStreetSummary; import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; import java.util.List; @@ -13,4 +14,16 @@ public interface CheckStreetSummaryMapper extends BaseMapper " on c.street_id = t.id" + " where c.task_id = #{taskId} ") List list(String taskId); + + @Select("select * from check_street_summary where task_id = #{taskId} and street_id = #{streetId} limit 1") + CheckStreetSummary get(Integer streetId,String taskId); + + @Update("update check_street_summary set empty_count = #{count} where task_id = #{taskId} and street_id = #{streetId}") + void updateEmptyCount(Integer streetId,String taskId,Integer count); + + @Update("update check_street_summary set empty_goods_count = #{count} where task_id = #{taskId} and street_id = #{streetId}") + void updateEmptyGoodsCount(Integer streetId,String taskId,Integer count); + + @Update("update check_street_summary set goods_count = #{count} where task_id = #{taskId} and street_id = #{streetId}") + void updateGoodsCount(Integer streetId,String taskId,Integer count); } diff --git a/web/src/main/java/com/zhehekeji/web/mapper/CheckSummaryMapper.java b/web/src/main/java/com/zhehekeji/web/mapper/CheckSummaryMapper.java index 1560f56..be92835 100644 --- a/web/src/main/java/com/zhehekeji/web/mapper/CheckSummaryMapper.java +++ b/web/src/main/java/com/zhehekeji/web/mapper/CheckSummaryMapper.java @@ -5,4 +5,5 @@ import com.zhehekeji.web.entity.CheckSummary; import com.zhehekeji.web.entity.LightSource; public interface CheckSummaryMapper extends BaseMapper { + } diff --git a/web/src/main/java/com/zhehekeji/web/service/EmptyCheckService.java b/web/src/main/java/com/zhehekeji/web/service/EmptyCheckService.java index 9bd6608..5c77279 100644 --- a/web/src/main/java/com/zhehekeji/web/service/EmptyCheckService.java +++ b/web/src/main/java/com/zhehekeji/web/service/EmptyCheckService.java @@ -119,7 +119,13 @@ public class EmptyCheckService { log.error(" no SRMNumer:{}",SRMNUmber); return; } - + CheckSummary checkSummary = checkSummaryMapper.selectById(taskId); + if(checkSummary == null){ + checkSummary = new CheckSummary(); + checkSummary.setTaskId(taskId); + checkSummary.setStartTime(LocalDateTime.now()); + checkSummaryMapper.insert(checkSummary); + } Map map = new HashMap<>(); //将这些位置的旧数据清空 UpdateWrapper wrapper = new UpdateWrapper<>(); @@ -133,11 +139,51 @@ public class EmptyCheckService { checkStreetSummary.setTaskId(taskId); checkStreetSummary.setStartTime(LocalDateTime.now()); checkStreetSummary.setStreetId(street.getId()); + checkStreetSummary.setEmptyCount(0); + checkStreetSummary.setGoodsCount(0); + checkStreetSummary.setEmptyGoodsCount(0); checkStreetSummaryMapper.insert(checkStreetSummary); } } + public void updateEmptyCheckLastTime(String taskId,String SRMNumber){ + CheckSummary checkSummary = new CheckSummary(); + checkSummary.setTaskId(taskId); + checkSummary.setEndTime(LocalDateTime.now()); + checkSummaryMapper.updateById(checkSummary); + Street street = streetService.getStreetByPlcId(SRMNumber); + + if(street != null){ + CheckStreetSummary checkStreetSummary = checkStreetSummaryMapper.get(street.getId(),taskId); + Integer count = emptyCheckMapper.selectCount(new QueryWrapper().eq("task_id",taskId).eq("street_id",street.getId()).eq("empty_status",1)); + checkStreetSummary.setEmptyCount(count); + checkStreetSummary.setEndTime(LocalDateTime.now()); + checkStreetSummaryMapper.updateEmptyCount(street.getId(),taskId,count); + } + } + + public void updateCheckLastTime(String taskId,String SRMNumber,String goodsCode){ + CheckSummary checkSummary = new CheckSummary(); + checkSummary.setTaskId(taskId); + checkSummary.setEndTime(LocalDateTime.now()); + checkSummaryMapper.updateById(checkSummary); + Street street = streetService.getStreetByPlcId(SRMNumber); + + if(street != null){ + CheckStreetSummary checkStreetSummary = checkStreetSummaryMapper.get(street.getId(),taskId); + //托盤組 11111111 + if(goodsCode.equals("11111111")){ + int c = checkStreetSummary.getEmptyGoodsCount() + 1; + checkStreetSummaryMapper.updateEmptyGoodsCount(street.getId(),taskId,c); + }else { + int c = checkStreetSummary.getGoodsCount() + 1; + checkStreetSummaryMapper.updateGoodsCount(street.getId(),taskId,c); + } + + } + } + public String getEmptyStatus(Integer streetId,Integer side,Integer leftRight,Integer row,Integer startColumn,Integer endColumn){ List emptyChecks = emptyCheckMapper.selectList(new QueryWrapper().eq("`row`",row).eq("street_id",streetId).eq("direction",leftRight).eq("side",side).ge("`column`",startColumn).le("`column`",endColumn)); diff --git a/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java b/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java index 3b3343a..26a15f4 100644 --- a/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/client/Decoder.java @@ -92,6 +92,8 @@ public class Decoder extends DelimiterBasedFrameDecoder { PuTianNettyClient.write(ptData); //添加到实时信息里 RealtimeCheckMap.put(tmTransmission.getSRMNumber(),tmTransmission.checkInfo()); + //更新盤點統計 + emptyCheckService.updateCheckLastTime(tmTransmission.getTaskNo(),tmTransmission.getSRMNumber(),stock.getCode()); } in.release(); }else if(body.startsWith(CETransmission.getHEADER())){ diff --git a/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java b/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java index 3985019..fc02ab6 100644 --- a/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java +++ b/web/src/main/java/com/zhehekeji/web/service/putian/PTDecoder.java @@ -88,18 +88,21 @@ public class PTDecoder extends LineBasedFrameDecoder { //通知客户端开始检测 ClientChanel.write(startEmptyCheckStr,checkContent.getSRMNUmber()); EmptyCheckCodeInfo.start(checkContent.getSRMNUmber(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); + }else if(ptData.getType().equals(PTData.EMPTY_CHECK_02)){ log.info("空货位检测结束"); PTEmptyCheckContent checkContent = PTEmptyCheckContent.EmptyCheck(ptData.getContent()); String endEmptyCheckStr = ECTransmission.toEmptyCheckEndString(checkContent.getSRMNUmber(),checkContent.getTaskNo(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); //通知客户端结束检测 ClientChanel.write(endEmptyCheckStr,checkContent.getSRMNUmber()); + //等待2s把空货位盘点的结果发给普天 try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } + emptyCheckService.updateEmptyCheckLastTime(checkContent.getTaskNo(),checkContent.getSRMNUmber()); Map map = emptyCheckService.getAllEmptyStatus(checkContent.getSRMNUmber(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn()); map.forEach((k,v)->{ PTEmptyCheckContent ptEmptyCheckContent = PTEmptyCheckContent.emptyCheckResponse(checkContent.getSRMNUmber(),checkContent.getTaskNo(),checkContent.getRow(),checkContent.getStartColumn(),checkContent.getEndColumn(),k,v);