From d8060afba15f67e443bb2f89410313905bdc7ebe Mon Sep 17 00:00:00 2001
From: pjb <pjb123456>
Date: 星期一, 23 六月 2025 08:58:13 +0800
Subject: [PATCH] 米多泉泉州wcs功能完善
---
src/main/java/com/zy/utils/HttpHandler.java | 2
src/main/resources/mapper/LocDetlMapper.xml | 14 +
src/main/java/com/zy/mapper/LocDetlMapper.java | 1
src/main/java/com/zy/service/LocDetlService.java | 1
src/main/resources/mapper/WrkMastMapper.xml | 18 ++
src/main/java/com/zy/entity/LocDetl.java | 43 +++++
src/main/java/com/zy/service/impl/MainServiceImpl.java | 225 ++++++++++++++++++++++++---
src/main/java/com/zy/entity/param/StockOutParam.java | 79 +++++++++
src/main/java/com/zy/core/model/protocol/StaProtocol.java | 3
src/main/java/com/zy/service/impl/LocDetlServiceImpl.java | 5
src/main/java/com/zy/core/thread/SiemensCrnThread.java | 6
src/main/java/com/zy/common/model/CanningLineInLocParam.java | 3
src/main/java/com/zy/core/MainProcess.java | 13
src/main/java/com/zy/core/thread/SiemensDevpThread.java | 17 +
src/main/java/com/zy/entity/WrkMast.java | 8 +
src/main/java/com/zy/mapper/WrkMastMapper.java | 6
16 files changed, 400 insertions(+), 44 deletions(-)
diff --git a/src/main/java/com/zy/common/model/CanningLineInLocParam.java b/src/main/java/com/zy/common/model/CanningLineInLocParam.java
index 7c8c0b2..f20026b 100644
--- a/src/main/java/com/zy/common/model/CanningLineInLocParam.java
+++ b/src/main/java/com/zy/common/model/CanningLineInLocParam.java
@@ -28,6 +28,9 @@
// 澶嶆閲嶉噺
private double grossWeight;
+ // 缃愯閲�
+ private double cannedVolume;
+
// 澶嶆鍚堟牸鍚�
private boolean reinspection;
diff --git a/src/main/java/com/zy/core/MainProcess.java b/src/main/java/com/zy/core/MainProcess.java
index 071347c..a9c795b 100644
--- a/src/main/java/com/zy/core/MainProcess.java
+++ b/src/main/java/com/zy/core/MainProcess.java
@@ -54,22 +54,18 @@
// 1090寮傚父鍙i噸鏂板叆搴撳垎閰嶅簱浣�
mainService.abnormalMouthWarehousing();
- Thread.sleep(1000);
// 鍏ュ簱 ===>> 鍏ュ簱绔欏埌鍫嗗灈鏈虹珯锛屾牴鎹潯鐮佹壂鎻忕敓鎴愬叆搴撳伐浣滄。
mainService.generateStoreWrkFile(1); // 缁勬墭
-
- Thread.sleep(1000);
// 鐢熸垚 绌哄瓙/姣嶆墭鐩樺嚭搴撲换鍔�
mainService.generateEmptyPalletStoreWrk();
// 鍏ュ簱 ===>> 姣嶆墭鐩樺彔婊″叆搴�
mainService.autoEmptyIn();
- Thread.sleep(1000);
// 瀛愭墭鐩樺簳涓嬫瘝鎵樼洏鍥炲彔鐩樻満
-// mainService.motherTrayReflow();
+ mainService.motherTrayReflow();
// 鍑哄簱 ===>> 鍫嗗灈鏈哄嚭搴撶珯鍒板嚭搴撶珯
mainService.crnStnToOutStn(4);
@@ -80,12 +76,17 @@
// 鍏ュ簱 ===>> 鎵ц瀵瑰伐浣滄。鐨勫畬鎴愭搷浣�
mainService.storeFinished(6);
+ // 鍫嗗灈鏈哄洖鍘熺偣
+ mainService.originGo();
+
// 绌烘《鍒拌揪缃愯绾垮叆鍙� 鍛婅瘔缃愯绾垮叆搴撴《淇℃伅
mainService.inGzxBefore();
// 绌烘《缃愯瀹屾垚鍒拌揪缃愯绾垮嚭鍙� 瀹屾垚鐩翠緵缃愯绾夸换鍔″拰绌烘《鍑哄簱浠诲姟锛屽垱寤烘垚鍝佹《鍏ュ簱浠诲姟
mainService.canningLineTaskFinish();
- Thread.sleep(1000);
+
+ // 璇昏妗朵俊鍙凤紝鑷姩鍑虹┖妗�
+ mainService.autoOutEmptyBucket();
// 鍫嗗灈鏈哄紓甯镐俊鎭褰�
mainService.recCrnErr(7);
diff --git a/src/main/java/com/zy/core/model/protocol/StaProtocol.java b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
index a3f26f6..7a3f8cb 100644
--- a/src/main/java/com/zy/core/model/protocol/StaProtocol.java
+++ b/src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -108,6 +108,9 @@
// 澶嶆鍚堟牸鍚�
private boolean reinspection;
+ // 缃愯閲�
+ private double cannedVolume;
+
// 鍑虹綈瑁呯嚎浠诲姟瀹屾垚锛岀粰缃愯绾垮啓鍙斁淇″彿 1鍙斁锛�2涓嶅彲鏀�-------------------------------------
private int placeableFlag;
diff --git a/src/main/java/com/zy/core/thread/SiemensCrnThread.java b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
index 1b5e722..1d1b603 100644
--- a/src/main/java/com/zy/core/thread/SiemensCrnThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensCrnThread.java
@@ -366,6 +366,12 @@
}
}while (writeCount2<5);
}
+ } else {
+ BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+ BasCrnp basCrnp = basCrnpService.selectById(slave.getId());
+ basCrnp.setModiTime(new Date());
+ basCrnpService.updateById(basCrnp);
+ log.info("鏇存柊{}鍙峰爢鍨涙満鎵ц浠诲姟瀹屾垚澶嶄綅鏃堕棿",slave.getId());
}
try {
diff --git a/src/main/java/com/zy/core/thread/SiemensDevpThread.java b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
index a6d3c39..891c701 100644
--- a/src/main/java/com/zy/core/thread/SiemensDevpThread.java
+++ b/src/main/java/com/zy/core/thread/SiemensDevpThread.java
@@ -63,7 +63,7 @@
}};
public static final ArrayList<Integer> rgvSiteBackWrkNo2= new ArrayList<Integer>() {{
- add(1044);
+ add(1044);add(1090);
}};
public static final ArrayList<Integer> rgvSiteBackWrkNo3= new ArrayList<Integer>() {{
@@ -224,7 +224,7 @@
// 璇荤綈瑁呯嚎鍙嶉淇℃伅
if (slave.getId() > 3) {
// log.info("璇诲彇{}鍙风綈瑁呯嚎plc淇℃伅鎴愬姛",slave.getId());
- OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 60);
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB101.0", (short) 64);
if (read.IsSuccess) {
// 15绉掓墦鍗颁竴涓嬫棩蹇�
if (System.currentTimeMillis() - lastLogTime >= 15000) {
@@ -253,6 +253,7 @@
staProtocol.setBatch(siemensS7Net.getByteTransform().TransString(read.Content, 40,10,"UTF-8"));
staProtocol.setManuDate(siemensS7Net.getByteTransform().TransString(read.Content, 50,8,"UTF-8"));
staProtocol.setReinspection(siemensS7Net.getByteTransform().TransInt16(read.Content, 58) == 1);
+ staProtocol.setCannedVolume(siemensS7Net.getByteTransform().TransSingle(read.Content, 60));
}
return;
}
@@ -504,15 +505,17 @@
do {
write = siemensS7Net.Write("DB100.0", common);
Thread.sleep(200);
- OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.4", (short) 2);
+ OperateResultExOne<byte[]> read = siemensS7Net.Read("DB100.0", (short) 6);
if(write.IsSuccess && read.IsSuccess){
- short i = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
- if ( i != staProtocol.getWorkNo().shortValue()) {
+ short bucketType = siemensS7Net.getByteTransform().TransInt16(read.Content, 0);
+ short bucketCount = siemensS7Net.getByteTransform().TransInt16(read.Content, 2);
+ short workNo = siemensS7Net.getByteTransform().TransInt16(read.Content, 4);
+ if ( workNo != common[2] || bucketCount != common[1] || bucketType != common[0]) {
writeCount++;
- log.error("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屼絾鍥炶澶辫触锛氬啓鍏ヤ换鍔″彿锛歿},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), i, slave.getId(), writeCount);
+ log.error("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屼絾鍥炶澶辫触锛氬啓鍏ヤ换鍔″彿锛歿},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}", Arrays.toString(common), bucketType +"-" + bucketCount + "-" + workNo, slave.getId(), writeCount);
continue;
}
- log.info("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屽洖璇绘垚鍔燂細浠诲姟鍙凤細{},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), i, slave.getId(), writeCount);
+ log.info("缁欑綈瑁呯嚎鍐欏叆妗跺瀷淇℃伅鎴愬姛锛屽洖璇绘垚鍔燂細浠诲姟鍙凤細{},鍥炶浠诲姟鍙凤細{}锛岃緭閫佺嚎plc缂栧彿={}锛屽啓鍏ユ鏁�={}",staProtocol.getWorkNo().shortValue(), Arrays.toString(common), slave.getId(), writeCount);
break;
}
else {
diff --git a/src/main/java/com/zy/entity/LocDetl.java b/src/main/java/com/zy/entity/LocDetl.java
index ba69072..b1ddc6d 100644
--- a/src/main/java/com/zy/entity/LocDetl.java
+++ b/src/main/java/com/zy/entity/LocDetl.java
@@ -98,9 +98,11 @@
private Double weight;
@ApiModelProperty(value= "闀垮害")
- private Double length;
+ @TableField("man_length")
+ private Double manLength;
@ApiModelProperty(value= "浣撶Н")
+ @TableField("volume")
private Double volume;
@ApiModelProperty(value= "涓夋柟缂栫爜")
@@ -154,6 +156,45 @@
@ApiModelProperty(value= "澶囨敞")
private String memo;
+ /**
+ * 澶囩敤1
+ */
+ @ApiModelProperty(value= "澶囩敤1")
+ private String standby1 = "";
+
+ /**
+ * 澶囩敤2
+ */
+ @ApiModelProperty(value= "澶囩敤2")
+ private String standby2 = "";
+
+ /**
+ * 澶囩敤3
+ */
+ @ApiModelProperty(value= "澶囩敤3")
+ private String standby3 = "";
+
+ /**
+ * 澶囩敤1
+ */
+ @ApiModelProperty(value= "澶囩敤1")
+ @TableField("box_type1")
+ private String boxType1 = "1";
+
+ /**
+ * 澶囩敤2
+ */
+ @ApiModelProperty(value= "澶囩敤2")
+ @TableField("box_type2")
+ private String boxType2 = "1";
+
+ /**
+ * 澶囩敤3
+ */
+ @ApiModelProperty(value= "澶囩敤3")
+ @TableField("box_type3")
+ private String boxType3 = "1";
+
public String getLocNo$(){
LocMastService service = SpringUtils.getBean(LocMastService.class);
LocMast locMast = service.selectById(this.locNo);
diff --git a/src/main/java/com/zy/entity/WrkMast.java b/src/main/java/com/zy/entity/WrkMast.java
index 47285a4..0b2f717 100644
--- a/src/main/java/com/zy/entity/WrkMast.java
+++ b/src/main/java/com/zy/entity/WrkMast.java
@@ -310,6 +310,14 @@
@TableField("rgv_dsta_no")
private Integer rgvDstaNo;
+ @ApiModelProperty(value= "rgv鍛戒护涓嬪彂鏃堕棿")
+ @TableField("rgv_create_time")
+ private Date rgvCreateTime;
+
+ @ApiModelProperty(value= "rgv浠诲姟瀹屾垚鏃堕棿")
+ @TableField("rgv_finish_time")
+ private Date rgvFinishTime;
+
@TableField("work_no_other")
private Integer workNoOther;
diff --git a/src/main/java/com/zy/entity/param/StockOutParam.java b/src/main/java/com/zy/entity/param/StockOutParam.java
new file mode 100644
index 0000000..061eb27
--- /dev/null
+++ b/src/main/java/com/zy/entity/param/StockOutParam.java
@@ -0,0 +1,79 @@
+package com.zy.entity.param;
+
+import com.baomidou.mybatisplus.annotations.TableField;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/13
+ */
+@Data
+public class StockOutParam {
+
+ // 鍑虹珯鍙�
+ private Integer outSite;
+
+ // 鐗╂枡缂栧彿闆嗗悎
+ private List<LocDetl> locDetls;
+
+ @Data
+ public static class LocDetl {
+
+ // 搴撲綅鍙�
+ private String locNo;
+
+ // 鍟嗗搧缂栧彿
+ private String matnr;
+
+ // 搴忓垪鐮�
+ private String batch;
+
+ // 鏁伴噺
+ private Double count;
+
+ private String brand;
+
+ /**
+ * 澶囩敤1
+ */
+ @ApiModelProperty(value= "澶囩敤1")
+ private String standby1 = "";
+
+ /**
+ * 澶囩敤2
+ */
+ @ApiModelProperty(value= "澶囩敤2")
+ private String standby2 = "";
+
+ /**
+ * 澶囩敤3
+ */
+ @ApiModelProperty(value= "澶囩敤3")
+ private String standby3 = "";
+
+ /**
+ * 澶囩敤1
+ */
+ @ApiModelProperty(value= "澶囩敤1")
+ @TableField("box_type1")
+ private String boxType1 = "1";
+
+ /**
+ * 澶囩敤2
+ */
+ @ApiModelProperty(value= "澶囩敤2")
+ @TableField("box_type2")
+ private String boxType2 = "1";
+
+ /**
+ * 澶囩敤3
+ */
+ @ApiModelProperty(value= "澶囩敤3")
+ @TableField("box_type3")
+ private String boxType3 = "1";
+
+ }
+
+}
diff --git a/src/main/java/com/zy/mapper/LocDetlMapper.java b/src/main/java/com/zy/mapper/LocDetlMapper.java
index 595007c..5880a7b 100644
--- a/src/main/java/com/zy/mapper/LocDetlMapper.java
+++ b/src/main/java/com/zy/mapper/LocDetlMapper.java
@@ -28,4 +28,5 @@
@Select("SELECT ld.loc_no FROM asr_loc_detl ld LEFT JOIN asr_loc_mast lm ON ld.loc_no = lm.loc_no WHERE (1 = 1 AND ld.matnr = #{matnr} AND (lm.row1 >= #{start} AND lm.row1 <= #{end}) AND lm.loc_sts = 'F' AND DateDiff(dd, lm.modi_time, getdate()) = 0) ORDER BY lm.modi_time ASC")
List<String> selectSameDetlToday(@Param("matnr") String matnr, @Param("start") Integer start, @Param("end") Integer end);
+ List<LocDetl> selectListByMatnr(@Param("bucketType") int bucketType);
}
diff --git a/src/main/java/com/zy/mapper/WrkMastMapper.java b/src/main/java/com/zy/mapper/WrkMastMapper.java
index 4892ba1..b525888 100644
--- a/src/main/java/com/zy/mapper/WrkMastMapper.java
+++ b/src/main/java/com/zy/mapper/WrkMastMapper.java
@@ -11,6 +11,12 @@
@Repository
public interface WrkMastMapper extends BaseMapper<WrkMast> {
+ /**
+ * 鏌ヨ鍏ョ亴瑁呯嚎绔欑偣鍦ㄩ�斾换鍔℃暟锛堟湭杩涚綈瑁呯嚎閲岄潰锛�
+ * @param site 鍏ョ綈瑁呯嚎绔欑偣
+ */
+ int selectInGzxCount(@Param("site") int site);
+
WrkMast selectByLocNo(@Param("sourceLocNo") String sourceLocNo);
WrkMast selectByLocNo1(@Param("sourceLocNo") String sourceLocNo);
diff --git a/src/main/java/com/zy/service/LocDetlService.java b/src/main/java/com/zy/service/LocDetlService.java
index 04ab78f..0e3d412 100644
--- a/src/main/java/com/zy/service/LocDetlService.java
+++ b/src/main/java/com/zy/service/LocDetlService.java
@@ -24,4 +24,5 @@
*/
List<String> getSameDetlToday(String matnr, Integer start, Integer end);
+ List<LocDetl> selectListByMatnr(int bucketType);
}
diff --git a/src/main/java/com/zy/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/service/impl/LocDetlServiceImpl.java
index ecac30e..21a880b 100644
--- a/src/main/java/com/zy/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/LocDetlServiceImpl.java
@@ -40,4 +40,9 @@
return this.baseMapper.selectSameDetlToday(matnr, start, end);
}
+ @Override
+ public List<LocDetl> selectListByMatnr(int bucketType) {
+ return this.baseMapper.selectListByMatnr(bucketType);
+ }
+
}
diff --git a/src/main/java/com/zy/service/impl/MainServiceImpl.java b/src/main/java/com/zy/service/impl/MainServiceImpl.java
index c550397..a300dec 100644
--- a/src/main/java/com/zy/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/service/impl/MainServiceImpl.java
@@ -26,8 +26,11 @@
import com.zy.core.thread.LedThread;
import com.zy.core.thread.SiemensDevpThread;
import com.zy.entity.*;
+import com.zy.entity.param.StockOutParam;
import com.zy.mapper.*;
import com.zy.service.*;
+import com.zy.system.entity.Config;
+import com.zy.system.service.ConfigService;
import com.zy.utils.*;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@@ -36,6 +39,7 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
+import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
@@ -136,6 +140,9 @@
private WrkMastService wrkMastService;
@Autowired
private BasRgvMapService basRgvMapService;
+
+ @Resource
+ private ConfigService configService;
@Value("${wms.url}")
private String wmsUrl;
@@ -884,7 +891,7 @@
}
newLocNo = newLocNo + locNo.substring(2);
// 瀵瑰簲搴撲綅鏈夋棤浠诲姟
- WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", newLocNo));
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_loc_no", newLocNo).eq("wrk_sts",11));
if(wrkMast1 == null) {
if(locNo.startsWith("10") || locNo.startsWith("11")){ // 娴呭簱浣�
@@ -1075,7 +1082,7 @@
// 鐘舵�侊細绛夊緟纭 骞朵笖 浠诲姟瀹屾垚浣� = 1
if (crnProtocol.statusType == CrnStatusType.WAITING && crnProtocol.getTaskNo() != 0) {
News.warnNoLog(""+mark+" - 0"+" - 寮�濮嬫墽琛屽宸ヤ綔妗g殑瀹屾垚鎿嶄綔");
- if (crnProtocol.getTaskNo() == 9999) {
+ if (crnProtocol.getTaskNo() == 9999) { // 鍥炲師鐐逛换鍔″彿
// 鍫嗗灈鏈哄浣�
crnThread.setResetFlag(true);
} else {
@@ -1121,6 +1128,51 @@
// News.infoNoLog(""+mark+" - 0"+" - 瀵瑰伐浣滄。鐨勫畬鎴愭搷浣滄墽琛屽畬鎴�");
}
+ /**
+ * 鍫嗗灈鏈哄洖鍘熺偣
+ */
+ public synchronized void originGo() {
+
+ for (CrnSlave crn : slaveProperties.getCrn()) {
+ // 鑾峰彇鍫嗗灈鏈轰俊鎭�
+ CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, crn.getId());
+ CrnProtocol crnProtocol = crnThread.getCrnProtocol();
+ if (crnProtocol == null) {
+ continue;
+ }
+ if (crnProtocol.getStatusType() == CrnStatusType.IDLE && crnProtocol.getTaskNo() == 0 && crnProtocol.getModeType() == CrnModeType.AUTO
+ && crnProtocol.getLoaded() == 0 && crnProtocol.getForkPos() == 0) {
+ // 鍒ゆ柇鏄笉鏄凡鍦ㄥ師鐐�
+ if(crnProtocol.getBay() == 0 && crnProtocol.getLevel() == 1) {
+ continue;
+ }
+ // 鍒ゆ柇鏄笉鏄┖闂蹭笁鍒嗛挓
+ BasCrnp basCrnp = basCrnpService.selectById(crn.getId());
+ Date now = new Date();
+ Date modiTime = basCrnp.getModiTime();
+ long diffInMillis = now.getTime()-modiTime.getTime();
+ if(diffInMillis < 3 * 60 * 1000) {
+ continue;
+ }
+
+ CrnCommand crnCommand = new CrnCommand();
+ crnCommand.setCrnNo(crn.getId()); // 鍫嗗灈鏈虹紪鍙�
+ crnCommand.setTaskNo((short) 9999); // 宸ヤ綔鍙�
+ crnCommand.setTaskMode(CrnTaskModeType.GO_ORIGIN); // 浠诲姟妯″紡: 鍥炲師鐐�
+ crnCommand.setSourcePosX((short) (crn.getId() == 1 ? 4 : crn.getId() == 2 ? 6 : crn.getId() == 3 ? 7 : 11)); // 婧愬簱浣嶆帓
+ crnCommand.setSourcePosY((short) 0); // 婧愬簱浣嶅垪
+ crnCommand.setSourcePosZ((short) 1); // 婧愬簱浣嶅眰
+ crnCommand.setDestinationPosX((short) 0); // 鐩爣搴撲綅鎺�
+ crnCommand.setDestinationPosY((short) 0); // 鐩爣搴撲綅鍒�
+ crnCommand.setDestinationPosZ((short) 0); // 鐩爣搴撲綅灞�
+ if (!MessageQueue.offer(SlaveType.Crn, crn.getId(), new Task(2, crnCommand))) {
+ News.error("鍥炲師鐐逛换鍔′笅鍙戝け璐�", crn.getId(), JSON.toJSON(crnCommand));
+ } else {
+ log.info("{}鍙峰爢鍨涙満鍥炲師鐐逛换鍔′笅鍙戞垚鍔燂細{}", crn.getId(), JSON.toJSON(crnCommand));
+ }
+ }
+ }
+ }
/**
* 鍫嗗灈鏈哄紓甯镐俊鎭褰�
*/
@@ -1565,6 +1617,9 @@
case 1019:dismantlingMachine = 1020;break;
case 1034:dismantlingMachine = 1035;break;
}
+ if(staProtocol.getSiteId() == 1034 && staProtocol.isHigh()) {
+ continue;
+ }
if (wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 110).eq("sta_no", dismantlingMachine)).size() > 0) {
// log.warn("{}绔欑偣宸茬粡瀛樺湪涓や釜绌烘澘鍑哄簱浠诲姟", entry.getKey());
continue;
@@ -1584,7 +1639,7 @@
if (jsonObject.getInteger("code").equals(200)) {
log.info("绌烘墭鍑哄簱璇锋眰鎴愬姛锛氳姹傚弬鏁皗}锛岃繑鍥炲��:{}", map, response);
} else {
- log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
+// log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
}
} catch (Exception e) {
log.error("绌烘嫋鍑哄簱璇锋眰鎺ュ彛寮傚父锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/auto/emptyOut/v1", map, response);
@@ -1615,10 +1670,17 @@
log.error("鍛煎彨rgv,浠诲姟鍙蜂笉瀛樺湪:{}",staProtocol.getWorkNo());
continue;
}
- if (staProtocol.getSiteId() == 1090 && wrkMast.getLocNo() == null) {
+ if (staProtocol.getSiteId() == 1090 && wrkMast.getStaNo() == 1090) {
continue;
}
- if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && wrkMast.getRgvNo() == null) {
+ if ((wrkMast.getWrkSts() == 2 || wrkMast.getWrkSts() == 15) && (wrkMast.getRgvNo() == null || wrkMast.getRgvDstaNo() == 1090)) {
+ // 鏈�1090鐨勪换鍔¤烦杩噐gv鍒嗛厤
+ if(wrkMast.getStaNo() == 1090) {
+ int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().where("sta_no = 1090 or source_sta_no = 1090 "));
+ if (count > 1) {
+ continue;
+ }
+ }
wrkMast.setRgvNo(0);
wrkMast.setRgvSstaNo(site);
wrkMast.setRgvDstaNo(taskStaNoToRgvStaNoMap.get(wrkMast.getStaNo()));
@@ -1655,15 +1717,18 @@
if(wrkMast.getIoType() == 3 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) { // 鍒�1024鍑哄簱鍙o紝鏀惧埌杈撻�佺嚎鍚庝换鍔″畬鎴�
if(wrkMast.getWrkSts() != 2 ){
- log.warn("rgv鏀捐揣瀹屾垚锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+ log.warn("rgv鏀捐揣瀹屾垚3锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
continue;
}
wrkMast.setWrkSts(5L);
+// if(wrkMast.getStaNo() == 1090) {
+// wrkMast.setWrkSts(3L);
+// }
wrkMast.setModiTime(new Date());
wrkMastService.updateById(wrkMast);
} else if(wrkMast.getIoType() == 101 && (wrkMast.getStaNo() == 1024 || wrkMast.getStaNo() == 1016 || wrkMast.getStaNo() == 1043)) {
if(wrkMast.getWrkSts() != 2 ) {
- log.warn("rgv鏀捐揣瀹屾垚锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
+ log.warn("rgv鏀捐揣瀹屾垚101锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}", wrkMast.getRgvNo(), wrkMast.getWrkNo(), wrkMast.getWrkSts());
continue;
}
wrkMast.setWrkSts(15L);
@@ -1671,7 +1736,7 @@
wrkMastService.updateById(wrkMast);
} else if(wrkMast.getIoType() == 110 && (wrkMast.getStaNo() == 1002 || wrkMast.getStaNo() == 1020 ||wrkMast.getStaNo() == 1035)) {
if(wrkMast.getWrkSts() != 2 ){
- log.warn("rgv鏀捐揣瀹屾垚锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
+ log.warn("rgv鏀捐揣瀹屾垚110锛宺gv鏈浣�:rgv鍙穥}锛屼换鍔″彿锛歿}锛屼换鍔$姸鎬亄}",wrkMast.getRgvNo(),wrkMast.getWrkNo(),wrkMast.getWrkSts());
continue;
}
wrkMast.setWrkSts(15L);
@@ -1709,16 +1774,16 @@
log.error("寮傚父鍙e叆搴撲换鍔″彿鏃犱换鍔�:{}", staProtocol.getWorkNo());
return;
} else if (wrkMast.getLocNo() != null) {
- log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
+// log.info("寮傚父鍙e叆搴撳簱浣嶅凡鍒嗛厤:{}", wrkMast.getLocNo());
return;
} else if(wrkMast.getStaNo() != 1090) {
- log.info("寮傚父鍙e叆搴撳叆搴撶洰鏍囩珯鐐瑰凡鍒嗛厤:{}", wrkMast.getStaNo());
+// log.info("寮傚父鍙e叆搴撳叆搴撶洰鏍囩珯鐐瑰凡鍒嗛厤:{}", wrkMast.getStaNo());
return;
}
try {
CanningLineInLocParam param = new CanningLineInLocParam();
- param.setWrkNo(staProtocol.getWrkNo());
+ param.setWrkNo(staProtocol.getWorkNo());
param.setSourceStaNo(1090);
param.setTbFlag(staProtocol.isInEnable()); // true鍏ユ垚鍝佸簱锛宖alse鍏ョ┖妗跺簱
@@ -1731,19 +1796,7 @@
log.info("寮傚父鍙e叆搴撹姹倃ms鍘熷杩斿洖锛�" + response);
JSONObject jsonObject = JSON.parseObject(response);
if (jsonObject.getInteger("code").equals(200)) {
-// StartupDto dto = jsonObject.getObject("data", StartupDto.class);
-// staProtocol.setWorkNo(dto.getWorkNo());
-// staProtocol.setStaNo(dto.getStaNo().shortValue());
-// devpThread.setPakMk(staProtocol.getSiteId(), false);
-// boolean result = MessageQueue.offer(SlaveType.Devp, 2, new Task(2, staProtocol));
-// if (result) {
-// log.info("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-// News.info("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护鎴愬姛锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-// } else {
-// log.error("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-// News.error("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触锛�" + dto.getWorkNo() + "," + 1090 + "," + dto.getStaNo());
-// throw new CoolException("寮傚父鍙e叆搴撴帹閫佽緭閫佺嚎鍛戒护澶辫触:" + 1090);
-// }
+ log.error("寮傚父鍙e叆搴撹姹傛帴鍙f垚鍔熷父锛寀rl:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
} else {
log.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紝url:{}锛宺equest:{},response:{}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
News.error("寮傚父鍙e叆搴撹姹傛帴鍙e紓甯革紒锛侊紒url锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/CanningLine/loc/v1", JSON.toJSONString(param), response);
@@ -1821,7 +1874,12 @@
}
// 绔欑偣鏉′欢鍒ゆ柇
- if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable() && staProtocol.getWrkNo() == 0) {
+ if (staProtocol.isAutoing() && staProtocol.isLoading() && staProtocol.isInEnable()
+ && staProtocol.getWorkNo() == 0 && staProtocol.isHigh()) {
+ WrkMast wrkMast1 = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 3).eq("source_sta_no", 1034).eq("sta_no", 1024));
+ if (wrkMast1 != null) {
+ return;
+ }
Date now = new Date();
// 淇濆瓨宸ヤ綔妗�
@@ -1830,6 +1888,7 @@
wrkMast.setIoTime(now);
wrkMast.setWrkSts(2L);
wrkMast.setIoType(3);
+ wrkMast.setIoPri(15D);
wrkMast.setSourceStaNo(1034); // 婧愮珯
wrkMast.setStaNo(1024); // 鐩爣绔�
wrkMast.setAppeTime(now);
@@ -1845,6 +1904,116 @@
log.error("瀛愭墭鐩樺簳搴ф瘝鎵樼洏鍥炴祦鍛戒护鎺ㄩ�侀槦鍒楀け璐ワ細" + wrkMast.getWrkNo() + "," + staProtocol.getSiteId());
}
}
+ }
+
+ public synchronized void autoOutEmptyBucket() {
+ Config config = configService.selectOne(new EntityWrapper<Config>().eq("code","autoOutEmptyBucket").eq("status",1));
+ if (config == null || Cools.isEmpty(config.getValue())) {
+ return;
+ }
+
+ // 闇�瑕佽嚜鍔ㄨˉ绌烘《鐨勭珯鐐�
+ String[] split = config.getValue().split("=");
+
+ for (SearchLocParam.WantBucket wantBucket : getWantBucketFlag()) {
+ if (wantBucket.getBucketType() != 0) { // 缃愯绾挎湁瑕佹《淇″彿
+ boolean flag = true; // 鏄惁闇�瑕佽嚜鍔ㄨˉ锛宼rue涓嶉渶瑕侊紝false闇�瑕�
+ for(String item: split) {
+ if(String.valueOf(wantBucket.getSite()).equals(item)) {
+ flag = false;
+ break;
+ }
+ }
+ if(flag) {
+ return;
+ }
+ // <4 < 2 < 4
+ int count = wrkMastMapper.selectInGzxCount(wantBucket.getSite());
+ if (wantBucket.getSite() == 1071 && count <= 2 || wantBucket.getSite() == 1064 && count == 0 || wantBucket.getSite() == 1078 && count <= 2) {
+ // 鍒ゆ柇搴撻噷鏈夋棤绌烘《缁�
+ List<LocDetl> locDetlList = locDetlService.selectListByMatnr(wantBucket.getBucketType());
+ for (int i = 0; i < locDetlList.size(); i++) {
+ LocDetl locDetl = locDetlList.get(i);
+ String loc1 = locDetl.getLocNo();
+ String aisle1 = loc1.substring(0, 2);
+ String column1 = loc1.substring(2, 5);
+ String level1 = loc1.substring(5, 7);
+
+ for (int j = i + 1; j < locDetlList.size(); j++) {
+ LocDetl locDetl1 = locDetlList.get(j);
+ String loc2 = locDetl1.getLocNo();
+ String aisle2 = loc2.substring(0, 2);
+ String column2 = loc2.substring(2, 5);
+ String level2 = loc2.substring(5, 7);
+
+ // 妫�鏌ユ槸鍚︽弧瓒崇粍闃熸潯浠�
+ if (isSameAisleGroup(aisle1, aisle2) && column1.equals(column2) && level1.equals(level2)) {
+ // 鍒涘缓绌烘《鍑哄簱浠诲姟
+ try {
+ StockOutParam param = new StockOutParam();
+ param.setOutSite(wantBucket.getSite());
+ List<StockOutParam.LocDetl> locDetls = new ArrayList<>();
+ StockOutParam.LocDetl locDetl2 = new StockOutParam.LocDetl();
+ locDetl2.setLocNo(locDetl.getLocNo());
+ locDetl2.setMatnr(locDetl.getMatnr());
+ locDetl2.setBatch(locDetl.getBatch());
+ locDetl2.setBrand(locDetl.getBrand());
+ locDetl2.setCount(locDetl.getAnfme());
+ locDetl2.setBoxType1(locDetl.getBoxType1());
+ locDetl2.setBoxType2(locDetl.getBoxType2());
+ locDetl2.setBoxType3(locDetl.getBoxType3());
+ locDetl2.setStandby1(locDetl.getStandby1());
+ locDetl2.setStandby2(locDetl.getStandby2());
+ locDetl2.setStandby3(locDetl.getStandby3());
+ locDetls.add(locDetl2);
+
+ StockOutParam.LocDetl locDetl3 = new StockOutParam.LocDetl();
+ locDetl3.setLocNo(locDetl1.getLocNo());
+ locDetl3.setMatnr(locDetl1.getMatnr());
+ locDetl3.setBatch(locDetl1.getBatch());
+ locDetl3.setBrand(locDetl1.getBrand());
+ locDetl3.setCount(locDetl1.getAnfme());
+ locDetl3.setBoxType1(locDetl1.getBoxType1());
+ locDetl3.setBoxType2(locDetl1.getBoxType2());
+ locDetl3.setBoxType3(locDetl1.getBoxType3());
+ locDetl3.setStandby1(locDetl1.getStandby1());
+ locDetl3.setStandby2(locDetl1.getStandby2());
+ locDetl3.setStandby3(locDetl1.getStandby3());
+ locDetls.add(locDetl3);
+ param.setLocDetls(locDetls);
+
+ String response = new HttpHandler.Builder()
+ .setUri(wmsUrl)
+ .setPath("/rpc/autoOutEmptyBucket")
+ .setJson(JSON.toJSONString(param))
+ .build()
+ .doPost();
+ log.info("鑷姩鍑虹┖妗惰姹倃ms鍘熷杩斿洖锛�" + response);
+ JSONObject jsonObject = JSON.parseObject(response);
+ if (jsonObject.getInteger("code").equals(200)) {
+ log.info("鑷姩鍑虹┖妗舵垚鍔�:{}",wantBucket.getSite());
+ return;
+ } else {
+ News.error("鑷姩绌烘《鍑哄簱" + ":璇锋眰鎺ュ彛澶辫触锛侊紒锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", wmsUrl + "/rpc/pakin/loc/v1", JSON.toJSONString(param), response);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ // 鍒ゆ柇涓や釜鎺掓槸鍚﹀睘浜庡悓涓�缁�
+ private static boolean isSameAisleGroup(String aisle1, String aisle2) {
+ return (aisle1.equals("09") && aisle2.equals("10")) ||
+ (aisle1.equals("10") && aisle2.equals("09")) ||
+ (aisle1.equals("11") && aisle2.equals("12")) ||
+ (aisle1.equals("12") && aisle2.equals("11"));
}
/**
@@ -1885,12 +2054,12 @@
param.setMatnr(staProtocol.getMatnr().trim());
param.setBatch(staProtocol.getBatch().trim());
param.setManuDate(staProtocol.getManuDate());
- param.setWeight(staProtocol.getWeight());
- param.setGrossWeight(staProtocol.getGrossWeight());
+ param.setWeight(Math.round(staProtocol.getWeight() * 100.0) / 100.0);
+ param.setGrossWeight(Math.round(staProtocol.getGrossWeight() * 100.0) / 100.0);
param.setReinspection(staProtocol.isReinspection());
param.setSourceStaNo(site + 2);
param.setTbFlag(staProtocol2.isBarcodeErr());
-
+ param.setCannedVolume(Math.round(staProtocol.getCannedVolume() * 100.0) / 100.0);
// param.setWrkNo(57);
// param.setMatnr("101");
// param.setBatch("tt1");
diff --git a/src/main/java/com/zy/utils/HttpHandler.java b/src/main/java/com/zy/utils/HttpHandler.java
index eb9dacd..8d0d26c 100644
--- a/src/main/java/com/zy/utils/HttpHandler.java
+++ b/src/main/java/com/zy/utils/HttpHandler.java
@@ -15,7 +15,7 @@
*/
public class HttpHandler {
- private static final Integer DEFAULT_TIMEOUT_SECONDS = 5;
+ private static final Integer DEFAULT_TIMEOUT_SECONDS = 30;
private static final MediaType MEDIA_TYPE = MediaType.parse("application/json;charset=utf-8");
private String uri;
diff --git a/src/main/resources/mapper/LocDetlMapper.xml b/src/main/resources/mapper/LocDetlMapper.xml
index 48cfab8..58822f7 100644
--- a/src/main/resources/mapper/LocDetlMapper.xml
+++ b/src/main/resources/mapper/LocDetlMapper.xml
@@ -27,7 +27,7 @@
<result column="item_num" property="itemNum" />
<result column="safe_qty" property="safeQty" />
<result column="weight" property="weight" />
- <result column="length" property="length" />
+ <result column="man_length" property="manLength" />
<result column="volume" property="volume" />
<result column="three_code" property="threeCode" />
<result column="supp" property="supp" />
@@ -44,6 +44,14 @@
<result column="appe_user" property="appeUser" />
<result column="appe_time" property="appeTime" />
<result column="memo" property="memo" />
+ <result column="standby1" property="standby1" />
+ <result column="standby2" property="standby2" />
+ <result column="standby3" property="standby3" />
+ <result column="box_type1" property="boxType1" />
+ <result column="box_type2" property="boxType2" />
+ <result column="box_type3" property="boxType3" />
+ <result column="box_type2" property="boxType2" />
+ <result column="box_type3" property="boxType3" />
</resultMap>
<sql id="stockOutCondition">
@@ -81,6 +89,10 @@
) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
</select>
+ <select id="selectListByMatnr" resultMap="BaseResultMap">
+ select * from asr_loc_detl ald left join asr_loc_mast alm on ald.loc_no = alm.loc_no where alm.loc_sts = 'F' and ald.matnr = #{bucketType}
+ </select>
+
<select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer">
select
count(1)
diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml
index e1113c7..8efb41d 100644
--- a/src/main/resources/mapper/WrkMastMapper.xml
+++ b/src/main/resources/mapper/WrkMastMapper.xml
@@ -63,9 +63,27 @@
<result column="rgv_no" property="rgvNo" />
<result column="rgv_ssta_no" property="rgvSstaNo" />
<result column="rgv_dsta_no" property="rgvDstaNo" />
+ <result column="rgv_create_time" property="rgvCreateTime" />
+ <result column="rgv_finish_time" property="rgvFinishTime" />
<result column="work_no_other" property="workNoOther" />
</resultMap>
+ <select id="selectInGzxCount" resultType="java.lang.Integer">
+ SELECT
+ count(DISTINCT m.wrk_no)
+ FROM
+ asr_wrk_mast m
+ LEFT JOIN asr_bas_devp d ON
+ m.wrk_no = d.wrk_no
+ WHERE
+ (m.wrk_sts IN (2, 9 ,10,14)
+ AND m.sta_no = #{site}
+ AND d.wrk_no IS NOT NULL)
+ OR (m.wrk_sts IN(10,11,12,14)
+ AND m.sta_no = #{site}
+ AND d.wrk_no IS NULL)
+ </select>
+
<select id="selectByLocNo" resultMap="BaseResultMap">
select top 1 * from asr_wrk_mast where source_loc_no = #{sourceLocNo} and (ctn_no is null or ctn_no != 'Y')
</select>
--
Gitblit v1.9.1