From 203e2664c13883f8bb64f638cb1794c0b4480ec2 Mon Sep 17 00:00:00 2001 From: pang.jiabao <pang_jiabao@163.com> Date: 星期日, 27 四月 2025 08:24:20 +0800 Subject: [PATCH] 完成米多泉州wms开发 --- license.lic | 0 src/main/resources/mapper/WrkMastLogMapper.xml | 4 src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | 10 src/main/resources/mapper/LocMastMapper.xml | 3 src/main/java/com/zy/asrs/entity/WrkMast.java | 28 ++ src/main/resources/mapper/WrkMastMapper.xml | 7 src/main/java/com/zy/asrs/entity/WrkMastLog.java | 32 ++ src/main/webapp/static/js/wrkMast/wrkMast.js | 6 src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 2 src/main/java/com/zy/common/web/WcsController.java | 419 +++++++++++++++++++++++++++++-- src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java | 9 src/main/java/com/zy/common/web/param/SearchLocParam.java | 17 + src/main/webapp/static/js/wrkMastLog/wrkMastLog.js | 2 src/main/java/com/zy/common/web/param/CanningLineInLocParam.java | 23 + src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 24 + src/main/java/com/zy/asrs/mapper/WrkMastMapper.java | 5 src/main/webapp/views/staDesc/staDesc.html | 2 src/main/java/com/zy/common/service/CommonService.java | 141 ++++++++++ src/main/resources/license.lic | 0 19 files changed, 674 insertions(+), 60 deletions(-) diff --git a/license.lic b/license.lic index d49d1c0..dd30251 100644 --- a/license.lic +++ b/license.lic Binary files differ diff --git a/src/main/java/com/zy/asrs/entity/WrkMast.java b/src/main/java/com/zy/asrs/entity/WrkMast.java index 83298e9..013ab54 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMast.java +++ b/src/main/java/com/zy/asrs/entity/WrkMast.java @@ -321,6 +321,34 @@ @TableField("take_none") private String takeNone; + /** + * RGV鍙� + */ + @ApiModelProperty(value= "RGV") + @TableField("rgv_no") + private Integer rgvNo; + + /** + * RGV婧愮珯 + */ + @ApiModelProperty(value= "RGV婧愮珯") + @TableField("rgv_ssta_no") + private Integer rgvSstaNo; + + /** + * RGV鐩爣绔� + */ + @ApiModelProperty(value= "RGV鐩爣绔�") + @TableField("rgv_dsta_no") + private Integer rgvDstaNo; + + /** + * 浼寸敓宸ヤ綔鍙� + */ + @ApiModelProperty(value= "浼寸敓宸ヤ綔鍙�") + @TableField("work_no_other") + private Integer workNoOther; + public WrkMast() {} public String getYmd$(){ diff --git a/src/main/java/com/zy/asrs/entity/WrkMastLog.java b/src/main/java/com/zy/asrs/entity/WrkMastLog.java index 77b7e24..4fe2a57 100644 --- a/src/main/java/com/zy/asrs/entity/WrkMastLog.java +++ b/src/main/java/com/zy/asrs/entity/WrkMastLog.java @@ -4,11 +4,11 @@ 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 com.core.common.Cools; -import com.core.common.SpringUtils; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -324,6 +324,34 @@ @TableField("take_none") private String takeNone; + /** + * RGV鍙� + */ + @ApiModelProperty(value= "RGV") + @TableField("rgv_no") + private Integer rgvNo; + + /** + * RGV婧愮珯 + */ + @ApiModelProperty(value= "RGV婧愮珯") + @TableField("rgv_ssta_no") + private Integer rgvSstaNo; + + /** + * RGV鐩爣绔� + */ + @ApiModelProperty(value= "RGV鐩爣绔�") + @TableField("rgv_dsta_no") + private Integer rgvDstaNo; + + /** + * 浼寸敓宸ヤ綔鍙� + */ + @ApiModelProperty(value= "浼寸敓宸ヤ綔鍙�") + @TableField("work_no_other") + private Integer workNoOther; + public WrkMastLog() {} public String getWrkNo$(){ diff --git a/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java b/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java index a0b3a9e..c084ce0 100644 --- a/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java +++ b/src/main/java/com/zy/asrs/entity/result/FindLocNoAttributeVo.java @@ -11,6 +11,7 @@ private String batch = ""; private String grade = ""; private String brand = ""; + private String model = ""; private String standby1 = ""; private String standby2 = ""; private String standby3 = ""; @@ -73,6 +74,7 @@ this.matnr = waitPakin.getMatnr(); this.specs = waitPakin.getSpecs(); this.batch = waitPakin.getBatch(); + this.model = waitPakin.getModel(); // this.grade = waitPakin.g; this.brand = waitPakin.getBrand(); this.standby1 = waitPakin.getStandby1(); @@ -111,6 +113,13 @@ this.boxType3 = locDetl.getBoxType3(); } + public String getModel() { + return model; + } + + public void setModel(String model) { + this.model = model; + } public String getBoxType1() { return boxType1; } diff --git a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java index 8d0111e..3f3c399 100644 --- a/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java +++ b/src/main/java/com/zy/asrs/mapper/WrkMastMapper.java @@ -25,4 +25,9 @@ , @Param("standby1")String standby1, @Param("standby2")String standby2, @Param("standby3")String standby3 , @Param("boxType1")String boxType1, @Param("boxType2")String boxType2, @Param("boxType3")String boxType3, @Param("crnNo") Integer crnNo); + /** + * 鏌ヨ鍏ョ┖妗跺簱浠诲姟 + */ + List<WrkMast> selectLastInEmptyLoc(); + } diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java index 7bbe338..4c73c11 100644 --- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java @@ -347,6 +347,7 @@ wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); wrkMast.setBarcode(locMast.getBarcode()); + wrkMast.setPdcType(dto.getLocDetlDtos().get(0).getLocDetl().getModel()); wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); @@ -643,7 +644,7 @@ wrkMast.setWrkNo(workNo); wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 + wrkMast.setIoType(locMast.getLocSts().equals("M") ? 111 : 112); // 鍏ュ嚭搴撶姸鎬� wrkMast.setIoPri(10D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� @@ -664,7 +665,7 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 - if (locMast.getLocSts().equals("D")){ + if (locMast.getLocSts().equals("M") || locMast.getLocSts().equals("Z")){ locMast.setLocSts("R"); locMast.setModiUser(1L); locMast.setModiTime(now); @@ -1086,13 +1087,18 @@ // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { locNo = wrkMast.getSourceLocNo(); - // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { - locSts = "F"; - // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 110) { + if (wrkMast.getIoType() == 110) { locSts = "D"; - // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� + // 鍑哄簱 M.绌烘瘝鎵樼洏 + } else if (wrkMast.getIoType() == 111) { + locSts = "M"; + // 鍑哄簱Z.绌哄瓙鎵樼洏 + } else if (wrkMast.getIoType() == 112) { + locSts = "Z"; + } else if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { + // 鍑哄簱 ===>> F.鍦ㄥ簱 + locSts = "F"; + // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� } else if (wrkMast.getIoType() == 11) { locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; // 搴撲綅杞Щ锛氱洰鏍囧簱浣� @@ -1277,7 +1283,7 @@ } LocTypeDto locTypeDto = new LocTypeDto(); locTypeDto.setLocType1((short) 1); - return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list); + return wcsController.startupFullPutStore(301, list.get(0).getZpallet(), locTypeDto, list.get(0),1,false); } @Override diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java index dc6f573..f351aa7 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java @@ -64,7 +64,7 @@ // 鍏ュ簱 -------------------------------------------------------------------------------- if (wrkMast.getWrkSts() == 5) { // 鍏ㄦ澘鍏ュ簱 - if (wrkMast.getIoType() == 1) { + if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 2) { // 鍏ュ簱閫氱煡鍗� if (!Cools.isEmpty(wrkMast.getBarcode())) { // 淇濆瓨鍏ュ簱閫氱煡妗e巻鍙叉。 diff --git a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java index 2326428..df2e686 100644 --- a/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java @@ -55,12 +55,12 @@ Date now = new Date(); LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); try { - if (null == locMast) { + if (null == locMast && wrkMast.getIoType() != 2) { // exceptionHandle("宸ヤ綔妗workNo={0}]搴撲綅鍙烽敊璇痆locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return FAIL.setMsg("宸ヤ綔妗workNo=" + wrkMast.getWrkNo() + "]搴撲綅鍙烽敊璇痆locNo=" + wrkMast.getLocNo() + "]"); } - assert locMast != null; + switch (wrkMast.getIoType()) { // 绌烘澘鍏ュ簱 case 10: @@ -69,7 +69,7 @@ if (!Cools.isEmpty(wrkMast.getBarcode())) { locMast.setBarcode(wrkMast.getBarcode()); } - locMast.setLocSts("D"); + locMast.setLocSts(wrkMast.getSourceStaNo() == 1027 || wrkMast.getSourceStaNo() == 1020 ? "M" : "Z"); locMast.setIoTime(now); locMast.setModiTime(now); if (!locMastService.updateById(locMast)) { @@ -518,6 +518,10 @@ break; // 绌烘澘鍑哄簱 case 110: + // 绌烘瘝鎵樼洏鍑哄簱 + case 111: + // 绌哄瓙鎵樼洏鍑哄簱 + case 112: // 淇敼搴撲綅鐘舵�� R ===>> O if (locMast.getLocSts().equals("R")) { locMast.setLocSts("O"); diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index e659ad1..9dea891 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -3,28 +3,25 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; -import com.core.common.Arith; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.result.FindLocNoAttributeVo; -import com.zy.asrs.entity.result.KeyValueVo; +import com.zy.asrs.mapper.WrkMastMapper; import com.zy.asrs.service.*; import com.zy.asrs.utils.Utils; import com.zy.asrs.utils.VersionUtils; import com.zy.common.model.LocTypeDto; -import com.zy.common.model.Shelves; import com.zy.common.model.StartupDto; import com.zy.common.properties.SlaveProperties; +import com.zy.common.web.param.SearchLocParam; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; +import javax.annotation.Resource; import java.util.List; /** @@ -57,6 +54,14 @@ private SlaveProperties slaveProperties; @Autowired private WrkDetlService wrkDetlService; + + @Resource + private WrkMastMapper wrkMastMapper; + + /** + * 缃愯绾垮彿鏄犲皠鐩爣绔欑偣 涓嬫爣:鐩爣绔欑偣 + */ + private static final int[] fillingLineMappingSite = {0,1079,1065,1072}; /** * 鐢熸垚宸ヤ綔鍙� @@ -156,6 +161,128 @@ return null; } + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto getLocNoNew(Integer staDescId, Integer sourceStaNo, FindLocNoAttributeVo findLocNoAttributeVo, int locArea) { + + // 鐩爣搴撲綅 + LocMast locMast; + + // 鍏ョ┖妗跺簱 + if (staDescId == 1 && locArea == 2) { + String model = findLocNoAttributeVo.getModel(); // 褰撳墠妗剁被鍨� + List<WrkMast> wrkMastList = wrkMastMapper.selectLastInEmptyLoc(); // 鍓嶉潰鍏ョ┖妗跺簱鐨勪换鍔�(鏈墽琛屽爢鍨涙満鍏ュ簱) + + if (wrkMastList.size() == 0) { + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { + WrkMast wrkMast = wrkMastList.get(0); // 鏈�鍚庝竴涓叆绌烘《搴撲换鍔� + // 鍓嶄竴涓换鍔℃槑缁� + WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no",wrkMast.getWrkNo())); + // 鍓嶄竴涓换鍔℃《绫诲瀷 + String oldModel = wrkDetl.getModel(); + // 鍓嶄竴涓换鍔″熬鎵樻爣璇� + Integer oldCtnType = wrkMast.getCtnType(); + if(model.equals(oldModel)) { // 褰撳墠妗朵笌鍓嶆《鏄竴绉嶇被鍨� + // 褰撳墠妗剁被鍨嬬殑浠诲姟鏈夊嚑涓� + long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count(); + if (count % 2 == 0) { // 鍋舵暟锛屽彇涓�缁勬柊搴撲綅 + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 濂囨暟锛屽彇鍓嶄竴搴撲綅瀵瑰簲鐨勭┖搴撲綅 + String locNo = wrkMast.getLocNo(); + int row = Integer.parseInt(locNo.substring(0, 2)); + if(row == 9 || row == 11) { + String newLocNo = (row + 1) + locNo.substring(2); + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", newLocNo).eq("loc_sts","O")); + if (locMast == null) { + log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屾槸9锛�11鎺�,浣嗘槸瀵瑰簲搴撲綅涓嶄负绌�"); + } + } else { + log.error("-----涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓�鏍凤紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁版槸濂囨暟锛屼絾鏄笉鏄�9锛�11鎺�"); + } + } + } else { // 褰撳墠妗朵笌鍓嶆《涓嶆槸涓�绉嶇被鍨� + if(oldCtnType == 1) { // 鍓嶉潰鏄熬妗� + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 鍓嶉潰涓嶆槸灏炬《 + // 鍒ゆ柇鍓嶉潰鍏ョ┖妗跺簱浠诲姟鏁伴噺(鏈墽琛屽爢鍨涙満鍏ュ簱) + long count = wrkMastList.stream().filter(wrkMast1 -> wrkMast1.getPdcType().equals(oldModel)).count(); + if (count % 2 == 0) { // 鍋舵暟锛屽彲浠ュ叆搴� + // 鍙栨柊搴撲綅缁勭殑绗竴涓簱浣� + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 9, 11).orderBy("lev1").orderBy("bay1").orderBy("row1")); + } else { // 濂囨暟锛屼笉鍙互鍏ュ簱 + log.error("-----涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱----"); + throw new CoolException("涓庡墠闈㈡《绫诲瀷涓嶄竴鏍凤紝鍓嶉潰妗朵笉鏄熬妗讹紝鍓嶉潰璇ユ《绫诲瀷浠诲姟鏁颁笉鏄伓鏁帮紝涓嶈兘鍏ュ簱"); + } + } + } + } + + } else if ((staDescId == 1 && locArea == 1) || staDescId == 10) { // 婊℃澘鍏ユ垚鍝佸簱鎴栬�呯┖鏉垮叆鎴愬搧搴� + // 鎸夊眰鍒楁帓椤哄簭鑾峰彇涓�涓狢anningLineInLocParam param搴撲綅 + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 1, 4, 5, 6, 7, 8).orderBy("lev1").orderBy("bay1").orderBy("row1")); + + // 娴呭簱浣嶆病鏈変簡鍒欒幏鍙栦竴涓祬搴撲綅 + if (locMast == null) { + locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", 'O').in("row1", 2, 3).orderBy("lev1").orderBy("bay1").orderBy("row1")); + if (locMast == null) { + log.error("-----搴撲綅涓嶈冻----"); + throw new CoolException("搴撲綅涓嶈冻"); + } else { + int count = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", 'O')); + if (count <= 10) { + log.error("-----搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�----"); + throw new CoolException("搴撲綅涓嶈冻锛岄鐣�10涓簱浣嶇敤鏉ュ簱浣嶈浆绉�"); + } + } + } + } else { + log.error("鍏ュ簱绫诲瀷閿欒锛宻taDescId={}", staDescId); + throw new CoolException("鍏ュ簱绫诲瀷閿欒锛宻taDescId=" + staDescId); + } + // 杩斿洖dto + StartupDto startupDto = new StartupDto(); + StaDesc staDesc = staDescService.selectOne(new EntityWrapper<StaDesc>() + .eq("type_no", staDescId) + .eq("stn_no", sourceStaNo) + .eq("crn_no", locMast.getCrnNo())); + if (Cools.isEmpty(staDesc)) { + log.error("type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, locMast.getCrnNo()); + throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); + } else { + BasDevp staNo = basDevpService.selectById(staDesc.getCrnStn()); + if (!staNo.getAutoing().equals("Y")) { + log.error("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); + throw new CoolException("鐩爣绔�" + staDesc.getCrnStn() + "涓嶅彲鐢�"); + } + startupDto.setStaNo(staNo.getDevNo()); + } + + // 鐢熸垚宸ヤ綔鍙� + int workNo = getWorkNo(0); + startupDto.setWorkNo(workNo); + startupDto.setCrnNo(locMast.getCrnNo()); + startupDto.setSourceStaNo(sourceStaNo); + startupDto.setLocNo(locMast.getLocNo()); + return startupDto; + } + + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto getLocNo(SearchLocParam param, Integer wantBucketFlag) { + + // 杩斿洖dto + StartupDto startupDto = new StartupDto(); + + startupDto.setWorkNo(getWorkNo(0)); // 宸ヤ綔鍙� + startupDto.setSourceStaNo(param.getSourceStaNo()); // 婧愮珯鐐� + startupDto.setStaNo(fillingLineMappingSite[wantBucketFlag]); // 鐩爣绔欑偣 + startupDto.setCrnNo(wantBucketFlag); // 璁板綍缃愯绾垮彿锛寃cs娓呴櫎瑕佹《淇″彿 + return startupDto; + } + /** * 妫�绱㈠簱浣嶅彿 * diff --git a/src/main/java/com/zy/common/web/WcsController.java b/src/main/java/com/zy/common/web/WcsController.java index d20e59f..7026987 100644 --- a/src/main/java/com/zy/common/web/WcsController.java +++ b/src/main/java/com/zy/common/web/WcsController.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; +import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.core.exception.CoolException; @@ -10,19 +11,23 @@ import com.zy.asrs.entity.result.FindLocNoAttributeVo; import com.zy.asrs.mapper.LocMastMapper; import com.zy.asrs.service.*; -import com.zy.common.CodeRes; import com.zy.common.model.LocTypeDto; import com.zy.common.model.StartupDto; import com.zy.common.service.CommonService; +import com.zy.common.web.param.CanningLineInLocParam; import com.zy.common.web.param.SearchLocParam; +import com.zy.system.service.ConfigService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.Map; /** * Created by vincent on 2020/10/30 @@ -54,8 +59,15 @@ @Resource private LocMastMapper locMastMapper; + @Resource + private MatService matService; + + @Resource + private ConfigService configService; + @PostMapping("/pakin/loc/v1") @ResponseBody + @Transactional public synchronized R getLocNo(@RequestBody SearchLocParam param) { log.info("鏀跺埌WCS鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); if (Cools.isEmpty(param.getIoType())) { @@ -64,24 +76,26 @@ if (Cools.isEmpty(param.getSourceStaNo())) { return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); } - List<WaitPakin> waitPakins = null; + WaitPakin waitPakin = null; if (param.getIoType() == 1) { - if (Cools.isEmpty(param.getBarcode())) { - return R.error("鏉$爜涓嶈兘涓虹┖"); - } - waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); - if (Cools.isEmpty(waitPakins)) { - WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); - if (wrkMast != null && wrkMast.getIoType() == 103) { - return R.parse(CodeRes.PICK_600); - } - return R.parse(CodeRes.NO_COMB_700); - } - int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); - int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); - if (countLoc > 0 || countWrk > 0) { - return R.error(CodeRes.EXIST_500); - } + // 鍏堝垱寤哄叆搴撻�氱煡妗� + waitPakin = comb(param.getBarcode(),param.getBucketType(),param.getBucketCount()); +// if (Cools.isEmpty(param.getBarcode())) { +// return R.error("鏉$爜涓嶈兘涓虹┖"); +// } +// waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBarcode())); +// if (Cools.isEmpty(waitPakins)) { +// WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBarcode()); +// if (wrkMast != null && wrkMast.getIoType() == 103) { +// return R.parse(CodeRes.PICK_600); +// } +// return R.parse(CodeRes.NO_COMB_700); +// } +// int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); +// int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); +// if (countLoc > 0 || countWrk > 0) { +// return R.error(CodeRes.EXIST_500); +// } } if (Cools.isEmpty(param.getLocType1())){ return R.error("楂樹綆妫�娴嬩俊鍙蜂笉鑳戒负绌�"); @@ -93,19 +107,270 @@ LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); StartupDto dto = null; + + if(param.getIoType() == 1) { + Map<Integer, String> wantBucketFlag = param.getWantBucketFlag(); + if(!wantBucketFlag.isEmpty()) { + if(waitPakin == null) { + return R.error("鍏ュ簱閫氱煡妗d负绌�"); + } else { + dto = startupFullPutStore(param,waitPakin); // 鐩翠緵缃愯绾夸换鍔� + if (dto != null) { + log.info("WCS鍏ュ簱鐩翠緵缃愯绾挎帴鍙h繑鍙�:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); + return R.ok().add(dto); + } + } + } + } + switch (param.getIoType()) { case 1://婊℃墭鐩樺叆搴� - assert waitPakins != null; - dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakins); + assert waitPakin != null; + dto = startupFullPutStore(param.getSourceStaNo(), param.getBarcode(), locTypeDto, waitPakin, param.getLocArea(),param.isTailSupportFlag()); break; case 10://绌烘墭鐩樺叆搴� - dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode()); + dto = emptyPlateIn(param.getSourceStaNo(), locTypeDto, param.getBarcode(), 1); break; default: break; } log.info("WCS鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, param.getBarcode()); return R.ok().add(dto); + } + + // 缃愯瀹屾垚鍏ュ簱 + @PostMapping("/pakin/CanningLine/loc/v1") + @ResponseBody + @Transactional + public synchronized R getLocNo(@RequestBody CanningLineInLocParam param) { + log.info("鏀跺埌WCS缃愯鍏ュ簱鎺ュ彛璇锋眰====>>鍏ュ弬:{}", param); + if (Cools.isEmpty(param.getWrkNo())) { + return R.error("宸ヤ綔鍙蜂笉鑳戒负绌�"); + } + if (Cools.isEmpty(param.getSourceStaNo())) { + return R.error("婧愮珯缂栧彿涓嶈兘涓虹┖"); + } + + // 鏍规嵁浠诲姟鍙锋煡璇换鍔� + WrkMast wrkMast1 = wrkMastService.selectById(param.getWrkNo()); + // 鏍规嵁浠诲姟鍙锋煡璇换鍔℃槑缁� + WrkDetl wrkDetl1 = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast1.getWrkNo())); + // 鍒嗛厤搴撲綅 + StartupDto dto = commonService.getLocNoNew(1, param.getSourceStaNo(), null, 1); + + // 鍒涘缓鏂颁换鍔� + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); + wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(wrkMast1.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(wrkMast1.getCtnType()); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(wrkMast1.getPdcType()); // 绌烘《绫诲瀷 + wrkMast.setAppeTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + // 鐢熸垚宸ヤ綔妗f槑缁� + // todo 鍏ユ垚鍝佹《搴撶殑鐗╂枡 杩欓噷鍏堟牴鎹┖妗剁被鍨嬫寚瀹氭垚鍝佹《鐗╂枡 + String matnr; + if(wrkMast1.getPdcType().equals("208L")) { + matnr = "YJ2025011814414206"; + } else { + matnr = "YJ2025011814412359"; + } + Mat mat = matService.selectByMatnr(matnr); + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(mat); + wrkDetl.setWrkNo(workNo); + wrkDetl.setAnfme(wrkDetl1.getAnfme()); + wrkDetl.setZpallet(wrkMast1.getBarcode()); + wrkDetl.setIoTime(now); + wrkDetl.setAppeTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + + // 瀹屾垚鏃т换鍔�(鐩翠緵缃愯绾夸换鍔℃墜鍔ㄥ畬鎴�,鍑哄簱浠诲姟浠诲姟鍙锋秷澶变細鑷姩瀹屾垚) + if (wrkMast1.getIoType() == 2) { + wrkMast1.setWrkSts(4L); + wrkMast1.setModiTime(now); + wrkMastService.updateById(wrkMast1); + } + + // 鏇存柊婧愮珯鐐逛俊鎭� + BasDevp basDevp = basDevpService.selectById(param.getSourceStaNo()); + basDevp.setWrkNo(workNo); + basDevp.setModiTime(now); + if (!basDevpService.updateById(basDevp)) { + throw new CoolException("鏇存柊婧愮珯澶辫触"); + } + + // 鏇存柊鐩爣搴撲綅鐘舵�� + LocMast locMast = locMastService.selectById(dto.getLocNo()); + if (locMast.getLocSts().equals("O")) { + locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 + locMast.setModiTime(now); + if (!locMastService.updateById(locMast)) { + throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); + } + } else { + log.error(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); + throw new CoolException(dto.getLocNo() + "鐩爣搴撲綅宸茶鍗犵敤"); + } + + log.info("WCS缃愯鍏ュ簱鎺ュ彛杩斿弬:{},鎵樼洏鐮�:{}", dto, wrkMast1.getBarcode()); + return R.ok(dto); + } + + @Transactional(propagation = Propagation.REQUIRED) + public WaitPakin comb(String barcode, String matnr,int bucketCount) { + if (Cools.isEmpty(barcode, matnr,bucketCount)) { + throw new CoolException(BaseRes.PARAM); + } + + // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁 + if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). + eq("zpallet", barcode).eq("io_status", "N")) > 0) { + throw new CoolException(barcode + "鏁版嵁姝e湪杩涜鍏ュ簱"); + } + + if(barcode.length()!=8){ + throw new CoolException("鏉$爜闀垮害涓嶆槸8浣�===>>" + barcode); + } + + int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",barcode)); + int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",barcode)); + int countwait = waitPakinService.selectCount(new EntityWrapper<WaitPakin>().eq("zpallet",barcode)); + if (countLoc > 0 || countWrk > 0 || countwait > 0) { + throw new CoolException("缁勬墭妗�/宸ヤ綔妗�/搴撳瓨鏉$爜鏁版嵁宸插瓨鍦�===>>" + barcode); + } + + Date now = new Date(); + + // 鏃犲崟缁勬墭 +// if (Cools.isEmpty(param.getOrderNo())) { + + // 鐢熸垚鍏ュ簱閫氱煡妗� +// List<DetlDto> detlDtos = new ArrayList<>(); +// param.getCombMats().forEach(elem -> { +// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), +// elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); +// if (DetlDto.has(detlDtos, detlDto)) { +// DetlDto one = DetlDto.findDto(detlDtos, detlDto); +// assert one != null; +// one.setAnfme(one.getAnfme() + detlDto.getAnfme()); +// } else { +// detlDtos.add(detlDto); +// } +// }); + + +// for (DetlDto detlDto : detlDtos) { + Mat mat = matService.selectByMatnr(matnr); + if (Cools.isEmpty(mat)) { + throw new CoolException(matnr + "鍟嗗搧妗f涓嶅瓨鍦�"); + } +// // 鍒ゆ柇绌烘《绫诲瀷 +// Config config = configService.selectConfigByCode("EmptyBucketType"); +// if (config == null) { +// log.info("閰嶇疆鍏ュ簱绌烘《绫诲瀷涓虹┖"); +// throw new CoolException("閰嶇疆鍏ュ簱绌烘《绫诲瀷涓虹┖"); +// } +// String[] split = config.getValue().split("="); +// String bucketType = split[0]; +// Integer sum = Integer.valueOf(split[1]); +// int count = bucketType.equals("IBC") ? 1 : 4; + WaitPakin waitPakin = new WaitPakin(); + waitPakin.sync(mat); +// waitPakin.setBatch(detlDto.getBatch()); + waitPakin.setZpallet(barcode); // 鎵樼洏鐮� + waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� + waitPakin.setAnfme((double) bucketCount); // 鏁伴噺 + waitPakin.setStatus("Y"); // 鐘舵�� + waitPakin.setAppeUser(29L); + waitPakin.setAppeTime(now); + waitPakin.setModiUser(29L); + waitPakin.setModiTime(now); + if (!waitPakinService.insert(waitPakin)) { + throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); + } + return waitPakin; +// } + // 鍏宠仈缁勬墭 +// } else { +//// Order order = orderService.selectByNo(param.getOrderNo()); +// Order order = OrderInAndOutUtil.selectByNo(Boolean.TRUE, param.getOrderNo()); +// if (Cools.isEmpty(order) || order.getSettle() > 2) { +// throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�"); +// } +// // 鐢熸垚鍏ュ簱閫氱煡妗� +// List<DetlDto> detlDtos = new ArrayList<>(); +// param.getCombMats().forEach(elem -> { +// +// // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙 +//// OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch()); +// OrderDetl orderDetl = OrderInAndOutUtil.selectItem(Boolean.TRUE, order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), +// elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3()); +// if (elem.getAnfme() > orderDetl.getEnableQty()) { +// throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�"); +// } +// // 淇敼璁㈠崟浣滀笟鏁伴噺 +//// if (!orderDetlService.increaseWorkQty(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme())) { +//// throw new CoolException("淇敼鍗曟嵁浣滀笟鏁伴噺澶辫触"); +//// } +// OrderInAndOutUtil.increaseWorkQty(Boolean.TRUE,order.getId(), elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), +// elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); +// DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(),elem.getBrand(),elem.getStandby1(),elem.getStandby2(),elem.getStandby3(), +// elem.getBoxType1(),elem.getBoxType2(),elem.getBoxType3(), elem.getAnfme()); +// if (DetlDto.has(detlDtos, detlDto)) { +// DetlDto one = DetlDto.findDto(detlDtos, detlDto); +// assert one != null; +// one.setAnfme(one.getAnfme() + detlDto.getAnfme()); +// } else { +// detlDtos.add(detlDto); +// } +// }); +// for (DetlDto detlDto : detlDtos) { +// Mat mat = matService.selectByMatnr(detlDto.getMatnr()); +// if (Cools.isEmpty(mat)) { +// throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�"); +// } +// WaitPakin waitPakin = new WaitPakin(); +// waitPakin.sync(mat); +// waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿 +// waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮� +// waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮� +// waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵�� +// waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺 +// waitPakin.setStatus("Y"); // 鐘舵�� +// waitPakin.setAppeUser(userId); +// waitPakin.setAppeTime(now); +// waitPakin.setModiUser(userId); +// waitPakin.setModiTime(now); +// if (!waitPakinService.insert(waitPakin)) { +// throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�"); +// } +// } +//// orderService.updateSettle(order.getId(), 2L, userId); +// OrderInAndOutUtil.updateOrder(Boolean.TRUE,order.getId(), 2L, userId); +// } + } @PostMapping("/auto/emptyIn/v1") @@ -177,16 +442,16 @@ /** * 鍏ㄦ澘鍏ュ簱 */ - @Transactional - public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, List<WaitPakin> waitPakins) { + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto startupFullPutStore(Integer devpNo, String barcode, LocTypeDto locTypeDto, WaitPakin waitPakins, int locArea,boolean tailSupportFlag) { // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 妫�绱㈠簱浣� // List<String> matnrs = waitPakins.stream().map(WaitPakin::getMatnr).distinct().collect(Collectors.toList()); // List<String> batchs = waitPakins.stream().map(WaitPakin::getBatch).distinct().collect(Collectors.toList()); // FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(matnrs.get(0), batchs.get(0)); - FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); - StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); + FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins); + StartupDto dto = commonService.getLocNoNew( 1, devpNo,findLocNoAttributeVo, locArea); int workNo = dto.getWorkNo(); Date now = new Date(); // 鐢熸垚宸ヤ綔妗� @@ -206,7 +471,8 @@ wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("Y"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 + wrkMast.setCtnType(tailSupportFlag ? 1 : 0); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(waitPakins.getModel()); // 绌烘《绫诲瀷 // 鎿嶄綔浜哄憳鏁版嵁 wrkMast.setAppeTime(now); wrkMast.setModiTime(now); @@ -215,9 +481,8 @@ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } // 鐢熸垚宸ヤ綔妗f槑缁� - waitPakins.forEach(waitPakin -> { WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(waitPakin); + wrkDetl.sync(waitPakins); wrkDetl.setWrkNo(wrkMast.getWrkNo()); wrkDetl.setIoTime(wrkMast.getIoTime()); wrkDetl.setAppeTime(now); @@ -225,7 +490,6 @@ if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); } - }); // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() .eq("zpallet", barcode); @@ -256,14 +520,103 @@ return dto; } + /** + * 鐩翠緵缃愯绾� + */ + @Transactional(propagation = Propagation.REQUIRED) + public StartupDto startupFullPutStore(SearchLocParam param,WaitPakin waitPakin) { + + // 婧愮珯鐐圭姸鎬佹娴� + BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getSourceStaNo(), true); + + String model = waitPakin.getModel(); + + Integer wantBucketFlag = 0; // 缃愯绾垮彿 + String wantBucketType; // 妗剁被鍨� + boolean flag = true; + for(Map.Entry<Integer,String> entry :param.getWantBucketFlag().entrySet()) { + wantBucketFlag = entry.getKey(); + wantBucketType = entry.getValue(); + if(model.equals(wantBucketType)) { // 褰撳墠妗剁被鍨嬫槸缃愯绾胯鐨勭被鍨� + // 绌烘《搴撴棤璇ョ被鍨嬫《 + int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("model", model).where("CAST(SUBSTRING(loc_no, 1, 2) as int) >= 9")); + if (count == 0) { + flag = false; + break; + } + } + } + if (flag) { // 涓嶆弧瓒崇洿渚涚綈瑁呯嚎鏉′欢 + return null; + } + + StartupDto dto = commonService.getLocNo(param,wantBucketFlag); + int workNo = dto.getWorkNo(); + Date now = new Date(); + // 鐢熸垚宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(2); // 鍏ュ嚭搴撶姸鎬侊細2.鐩翠緵缃愯绾� + wrkMast.setIoPri(13D); // 浼樺厛绾� + wrkMast.setCrnNo(dto.getCrnNo()); + wrkMast.setSourceStaNo(dto.getSourceStaNo()); + wrkMast.setStaNo(dto.getStaNo()); +// wrkMast.setLocNo(dto.getLocNo()); + wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� + wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 + wrkMast.setPicking("N"); // 鎷f枡 + wrkMast.setExitMk("N"); // 閫�鍑� + wrkMast.setEmptyMk("N"); // 绌烘澘 + wrkMast.setLinkMis("Y"); + wrkMast.setCtnType(param.isTailSupportFlag() ? 1 : 0); // 灏炬墭鏍囪瘑 + wrkMast.setPdcType(model); // 绌烘《绫诲瀷 + // 鎿嶄綔浜哄憳鏁版嵁 + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + // 鐢熸垚宸ヤ綔妗f槑缁� + WrkDetl wrkDetl = new WrkDetl(); + wrkDetl.sync(waitPakin); + wrkDetl.setWrkNo(wrkMast.getWrkNo()); + wrkDetl.setIoTime(wrkMast.getIoTime()); + wrkDetl.setAppeTime(now); + wrkDetl.setModiTime(now); + if (!wrkDetlService.insert(wrkDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + // 鏇存柊鍏ュ簱閫氱煡妗� ioStatus ===>> Y + Wrapper<WaitPakin> wrapper = new EntityWrapper<WaitPakin>() + .eq("zpallet", param.getBarcode()); + WaitPakin setParam = new WaitPakin(); + setParam.setLocNo(dto.getLocNo()); + setParam.setIoStatus("Y"); + setParam.setModiTime(now); + if (!waitPakinService.update(setParam, wrapper)) { + throw new CoolException("鏇存柊閫氱煡妗eけ璐�"); + } + // 鏇存柊婧愮珯鐐逛俊鎭� + sourceStaNo.setWrkNo(workNo); + sourceStaNo.setModiTime(now); + if (!basDevpService.updateById(sourceStaNo)){ + throw new CoolException("鏇存柊婧愮珯澶辫触"); + } + + return dto; + } + @Transactional - public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode) { + public StartupDto emptyPlateIn(Integer devpNo, LocTypeDto locTypeDto, String barcode, int locArea) { // 婧愮珯鐐圭姸鎬佹娴� BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); // 妫�绱㈠簱浣� FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(); - StartupDto dto = commonService.getLocNo( 10, devpNo, findLocNoAttributeVo, locTypeDto); + StartupDto dto = commonService.getLocNoNew( 10, devpNo, findLocNoAttributeVo, locArea); int workNo = dto.getWorkNo(); // 鐢熸垚宸ヤ綔妗� WrkMast wrkMast = new WrkMast(); diff --git a/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java b/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java new file mode 100644 index 0000000..23494aa --- /dev/null +++ b/src/main/java/com/zy/common/web/param/CanningLineInLocParam.java @@ -0,0 +1,23 @@ +package com.zy.common.web.param; + +import lombok.Data; + +/** + * @author pang.jiabao + * @description 缃愯瀹屾垚锛岀敵璇峰叆鎴愬搧搴� + * @createDate 2025/4/24 10:13 + */ +@Data +public class CanningLineInLocParam { + + /** + * 浠诲姟鍙� + */ + private Integer wrkNo; + + /** + * 婧愮珯鐐� + */ + private Integer sourceStaNo; + +} diff --git a/src/main/java/com/zy/common/web/param/SearchLocParam.java b/src/main/java/com/zy/common/web/param/SearchLocParam.java index 1a170ce..2817ed6 100644 --- a/src/main/java/com/zy/common/web/param/SearchLocParam.java +++ b/src/main/java/com/zy/common/web/param/SearchLocParam.java @@ -2,6 +2,9 @@ import lombok.Data; +import java.util.HashMap; +import java.util.Map; + /** * Created by vincent on 2020/10/30 */ @@ -17,4 +20,18 @@ // 搴撲綅瑙勬牸锛� 0:鏈煡, 1:浣庡簱浣�, 2:楂樺簱浣嶏級 private Short locType1; + // 搴撳尯绫诲瀷 1.鎴愬搧搴擄紝2.绌烘《搴� + private int locArea; + + // 鍏ュ簱妗剁紪鍙�/鐗╂枡鍙� + private String bucketType; + + // 鍏ュ簱妗舵暟閲� + private int bucketCount; + + // 灏炬墭鏍囪瘑 + private boolean tailSupportFlag; + + // 缃愯绾胯妗舵爣璇� + private Map<Integer,String> wantBucketFlag = new HashMap<>(); } diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic index d49d1c0..dd30251 100644 --- a/src/main/resources/license.lic +++ b/src/main/resources/license.lic Binary files differ diff --git a/src/main/resources/mapper/LocMastMapper.xml b/src/main/resources/mapper/LocMastMapper.xml index 0a468f8..25e2ad2 100644 --- a/src/main/resources/mapper/LocMastMapper.xml +++ b/src/main/resources/mapper/LocMastMapper.xml @@ -209,8 +209,7 @@ from asr_loc_mast alm where - alm.loc_sts = 'D' - and loc_type = #{locType} + alm.loc_sts = #{locType} <if test="rowList != null and !rowList.isEmpty()"> and alm.row1 in <foreach collection="rowList" item="item" open="(" close=")" separator=","> diff --git a/src/main/resources/mapper/WrkMastLogMapper.xml b/src/main/resources/mapper/WrkMastLogMapper.xml index 8086afb..db294c5 100644 --- a/src/main/resources/mapper/WrkMastLogMapper.xml +++ b/src/main/resources/mapper/WrkMastLogMapper.xml @@ -61,6 +61,10 @@ <result column="full_plt" property="fullPlt" /> <result column="pre_have" property="preHave" /> <result column="take_none" property="takeNone" /> + <result column="rgv_no" property="rgvNo" /> + <result column="rgv_ssta_no" property="rgvSstaNo" /> + <result column="rgv_dsta_no" property="rgvDstaNo" /> + <result column="work_no_other" property="workNoOther" /> </resultMap> <sql id="queryWhere"> <where> diff --git a/src/main/resources/mapper/WrkMastMapper.xml b/src/main/resources/mapper/WrkMastMapper.xml index 83c4cce..d343232 100644 --- a/src/main/resources/mapper/WrkMastMapper.xml +++ b/src/main/resources/mapper/WrkMastMapper.xml @@ -60,6 +60,10 @@ <result column="full_plt" property="fullPlt" /> <result column="pre_have" property="preHave" /> <result column="take_none" property="takeNone" /> + <result column="rgv_no" property="rgvNo" /> + <result column="rgv_ssta_no" property="rgvSstaNo" /> + <result column="rgv_dsta_no" property="rgvDstaNo" /> + <result column="work_no_other" property="workNoOther" /> </resultMap> <select id="selectToBeCompleteData" resultMap="BaseResultMap"> @@ -147,5 +151,8 @@ </otherwise> </choose> </select> + <select id="selectLastInEmptyLoc" resultType="com.zy.asrs.entity.WrkMast"> + select wrk_no wrkNo,ctn_type ctnType,Pdc_type PdcType,loc_no locNo from asr_wrk_mast where sta_no = 1050 and wrk_sts in(2,9,10) order by io_time desc + </select> </mapper> diff --git a/src/main/webapp/static/js/wrkMast/wrkMast.js b/src/main/webapp/static/js/wrkMast/wrkMast.js index fe33064..03d3057 100644 --- a/src/main/webapp/static/js/wrkMast/wrkMast.js +++ b/src/main/webapp/static/js/wrkMast/wrkMast.js @@ -31,8 +31,10 @@ ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'} ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'} ,{field: 'barcode', align: 'center',title: '鏉$爜'} - ,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true} - ,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true} + // ,{field: 'preHave', align: 'center',title: '鍏堝叆鍝�', hide: true} + ,{field: 'pdcType', align: 'center',title: '绌烘《绫诲瀷', hide: true} + ,{field: 'ctnType', align: 'center',title: '灏炬墭', hide: true} + // ,{field: 'takeNone', align: 'center',title: '绌烘搷浣�', hide: true} // ,{field: 'picking', align: 'center',title: '鎷f枡', templet:function(row){ // var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; // if(row.picking === 'Y'){html += " checked ";} diff --git a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js index e637bfa..095e7ae 100644 --- a/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js +++ b/src/main/webapp/static/js/wrkMastLog/wrkMastLog.js @@ -33,6 +33,8 @@ ,{field: 'staNo$', align: 'center',title: '鐩爣绔�'} ,{field: 'sourceLocNo$', align: 'center',title: '婧愬簱浣�'} ,{field: 'locNo$', align: 'center',title: '鐩爣搴撲綅'} + ,{field: 'pdcType', align: 'center',title: '绌烘《绫诲瀷', hide: true} + ,{field: 'ctnType', align: 'center',title: '灏炬墭', hide: true} // ,{field: 'picking', align: 'center',title: '鎷f枡', templet:function(row){ // var html = "<input value='picking' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; // if(row.picking === 'Y'){html += " checked ";} diff --git a/src/main/webapp/views/staDesc/staDesc.html b/src/main/webapp/views/staDesc/staDesc.html index 5e3a385..0bec4c2 100644 --- a/src/main/webapp/views/staDesc/staDesc.html +++ b/src/main/webapp/views/staDesc/staDesc.html @@ -80,7 +80,7 @@ </script> <script type="text/html" id="operate"> - <!-- <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a>--> + <a class="layui-btn layui-btn-xs btn-edit" lay-event="edit">缂栬緫</a> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> -- Gitblit v1.9.1