From 681d5587c0d926711861269047d38e3502ff5fa3 Mon Sep 17 00:00:00 2001
From: zjj <3272660260@qq.com>
Date: 星期四, 27 三月 2025 10:36:43 +0800
Subject: [PATCH] #
---
license.lic | 0
src/main/java/com/zy/asrs/service/WorkService.java | 1
src/main/java/com/zy/asrs/task/WorkMastScheduler.java | 2
src/main/java/com/zy/common/model/LocDto.java | 3
pom.xml | 2
src/main/java/com/zy/asrs/utils/Utils.java | 32 +--
src/main/webapp/static/js/order/out.js | 6
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 6
src/main/java/com/zy/common/model/ExistDto.java | 2
src/main/webapp/static/js/common.js | 2
src/main/java/com/zy/asrs/controller/OutController.java | 281 ++++++++++++++++++++++++++++
src/main/java/com/zy/common/service/CommonService.java | 213 +++++++++++++++++++++
src/main/resources/license.lic | 0
src/main/resources/application.yml | 4
14 files changed, 523 insertions(+), 31 deletions(-)
diff --git a/license.lic b/license.lic
index e881460..4940185 100644
--- a/license.lic
+++ b/license.lic
Binary files differ
diff --git a/pom.xml b/pom.xml
index aa3af82..ede5b05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -124,7 +124,7 @@
</dependencies>
<build>
- <finalName>gtSxkWms</finalName>
+ <finalName>fyxcwms</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 3a54e57..b9adff4 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -7,6 +7,7 @@
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.R;
+import com.core.exception.CoolException;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
@@ -58,6 +59,286 @@
return R.ok().add(orderDetlService.selectByOrderId(orderId).stream().map(OrderDetl::getId).distinct().collect(Collectors.toList()));
}
+ @PostMapping("/out/pakout/OrderOutGetLoc/auth")
+ @ManagerAuth
+ public R OrderOutGetLoc(@RequestBody List<Long> ids) {
+ if (Cools.isEmpty(ids)) {
+ return R.parse(BaseRes.PARAM);
+ }
+ // 鑾峰彇璁㈠崟鏄庣粏骞跺鐞�
+ List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
+ Set<String> processedLocs = new HashSet<>(); // 宸插鐞嗚揣浣嶇紦瀛�
+ Set<ExistDto> processedStock = new HashSet<>(); // 宸插鐞嗗簱瀛樼紦瀛�
+ List<LocDto> result = new ArrayList<>();
+
+ for (OrderDetl detl : orderDetls) {
+ result.addAll(processOrderDetl(detl, null, processedLocs, processedStock));
+ }
+
+ return R.ok().add(result);
+ }
+
+ /** 澶勭悊璁㈠崟鍑哄簱璐т綅鍒嗛厤
+ * @param jsonObject 璇锋眰鍙傛暟(鍖呭惈璁㈠崟鏄庣粏ID鍒楄〃鍜屽嚭搴撴暟閲�)
+ */
+ @PostMapping("/out/pakout/OrderOutGetLoc.number/auth")
+ @ManagerAuth
+ public R OrderOutGetLocNumber(@RequestBody JSONObject jsonObject) {
+ // 鍙傛暟鏍¢獙
+ if (!jsonObject.containsKey("ids") || !jsonObject.containsKey("amount")) {
+ return R.parse(BaseRes.PARAM);
+ }
+
+ // 鎻愬彇骞惰浆鎹㈠弬鏁�
+ List<Long> ids = jsonObject.getJSONArray("ids").toJavaList(Long.class);
+ Double amount = jsonObject.getDouble("amount");
+
+
+ // 鑾峰彇璁㈠崟鏄庣粏骞跺鐞�
+ List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids);
+ Set<String> processedLocs = new HashSet<>(); // 宸插鐞嗚揣浣嶇紦瀛�
+ Set<ExistDto> processedStock = new HashSet<>(); // 宸插鐞嗗簱瀛樼紦瀛�
+ List<LocDto> result = new ArrayList<>();
+
+ for (OrderDetl detl : orderDetls) {
+ result.addAll(processOrderDetl(detl, amount, processedLocs, processedStock));
+ }
+
+ return R.ok().add(result);
+ }
+
+ /**
+ * 澶勭悊鍗曚釜璁㈠崟鏄庣粏鐨勮揣浣嶅垎閰�
+ * @param orderDetl 璁㈠崟鏄庣粏
+ * @param requiredAmount 闇�姹傚嚭搴撻噺
+ * @param processedLocs 宸插鐞嗙殑璐т綅闆嗗悎锛堢敤浜庡幓閲嶏級
+ * @param processedStock 宸插鐞嗙殑搴撳瓨璁板綍闆嗗悎锛堢敤浜庡幓閲嶏級
+ */
+ private List<LocDto> processOrderDetl(OrderDetl orderDetl, Double requiredAmount,
+ Set<String> processedLocs, Set<ExistDto> processedStock) {
+ List<LocDto> result = new ArrayList<>();
+ double remaining = Optional.ofNullable(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
+
+ // 璋冩暣鏍¢獙閫昏緫锛氬綋requiredAmount涓嶄负null鏃舵墠鏍¢獙
+ if (requiredAmount != null) {
+ if (requiredAmount <= 0) {
+ throw new CoolException("鍑哄簱鏁伴噺蹇呴』澶т簬0");
+ }
+ if (requiredAmount > remaining) {
+ throw new CoolException("璁㈠崟"+orderDetl.getOrderNo()+"璇锋眰鏁伴噺瓒呰繃鍙嚭搴撴暟閲忥紝鍓╀綑鍙嚭锛�" + remaining);
+ }
+ // 褰撴寚瀹氭暟閲忔椂锛屼娇鐢ㄦ寚瀹氭暟閲忚鐩栧墿浣欓噺
+ remaining = Math.min(requiredAmount, remaining);
+ }
+
+ // 鑾峰彇鍙敤搴撳瓨璁板綍
+ List<LocDetl> stocks = locDetlService.queryStock(
+ orderDetl.getMatnr(), orderDetl.getBatch(), null,
+ processedLocs, orderDetl.getSupp(),
+ orderDetl.getTemp1(), orderDetl.getTemp2()
+ );
+
+ // 閬嶅巻澶勭悊姣忎釜搴撳瓨璁板綍
+ for (LocDetl stock : stocks) {
+ if (remaining <= 0) break;
+
+ LocMast locMast = locMastService.selectOne(
+ new EntityWrapper<LocMast>().eq("loc_no", stock.getLocNo()));
+
+ // 闈�7鍙峰爢鍨涙満澶勭悊閫昏緫
+ if (locMast.getCrnNo() != 7) {
+ processNormalLocation(stock, orderDetl, remaining, processedStock, result);
+ }
+ // 7鍙峰爢鍨涙満鐗规畩澶勭悊
+ else {
+ processCrn7Location(locMast, stock, orderDetl, remaining, processedStock, result);
+ }
+
+ remaining -= stock.getAnfme();
+ }
+
+ // 澶勭悊缂洪噺鎯呭喌
+ if (remaining > 0) {
+ result.add(createShortageDto(orderDetl, remaining));
+ }
+
+ return result;
+ }
+
+ /** 鍒涘缓缂洪噺DTO */
+ private LocDto createShortageDto(OrderDetl orderDetl, double qty) {
+ LocDto dto = new LocDto(null, orderDetl.getMatnr(),
+ orderDetl.getMaktx(), orderDetl.getBatch(),
+ orderDetl.getOrderNo(), qty);
+ dto.setLack(true);
+ return dto;
+ }
+
+ /** 澶勭悊鏅�氳揣浣� */
+ private void processNormalLocation(LocDetl stock, OrderDetl orderDetl, double remaining,
+ Set<ExistDto> processedStock, List<LocDto> result) {
+ ExistDto exist = new ExistDto()
+ .setLocNo(stock.getLocNo())
+ .setMatnr(stock.getMatnr())
+ .setBatch(stock.getBatch());
+
+ if (processedStock.add(exist)) {
+ double allocateQty = Math.min(remaining, stock.getAnfme());
+ result.add(buildLocDto(stock, orderDetl, allocateQty));
+ }
+ }
+
+ /** 澶勭悊7鍙峰爢鍨涙満璐т綅 */
+ private void processCrn7Location(LocMast baseLoc, LocDetl stock, OrderDetl orderDetl,
+ double remaining, Set<ExistDto> processedStock,
+ List<LocDto> result) {
+ // 鏋勫缓鏌ヨ鏉′欢
+ EntityWrapper<LocMast> wrapper = (EntityWrapper<LocMast>) new EntityWrapper<LocMast>()
+ .eq("gro1", baseLoc.getGro1())
+ .eq("crn_no", 7)
+ .eq("loc_type1", baseLoc.getLocType1())
+ .orderBy("bay1", (baseLoc.getBay1() == 6 || baseLoc.getBay1() == 5));
+
+ // 鑾峰彇鍚岀粍璐т綅骞跺鐞�
+ locMastService.selectList(wrapper).stream()
+ .filter(loc -> "F".equals(loc.getLocSts()))
+ .forEach(loc -> processCrn7SubLocation(loc, stock, orderDetl, remaining, processedStock, result));
+ }
+
+ /** 澶勭悊7鍙峰爢鍨涙満瀛愯揣浣� */
+ private void processCrn7SubLocation(LocMast loc, LocDetl stock, OrderDetl orderDetl,
+ double remaining, Set<ExistDto> processedStock,
+ List<LocDto> result) {
+ LocDetl subStock = locDetlService.selectOne(
+ new EntityWrapper<LocDetl>()
+ .eq("loc_No", loc.getLocNo())
+ .eq("matnr", stock.getMatnr())
+ .eq("batch", stock.getBatch()));
+
+ if (!Cools.isEmpty(subStock)) {
+ ExistDto exist = new ExistDto()
+ .setLocNo(subStock.getLocNo())
+ .setMatnr(subStock.getMatnr())
+ .setBatch(subStock.getBatch());
+
+ if (processedStock.add(exist) && remaining > 0) {
+ double allocateQty = Math.min(remaining, subStock.getAnfme());
+ result.add(buildLocDto(subStock, orderDetl, allocateQty));
+ }
+ }
+ }
+
+ /** 鏋勫缓璐т綅DTO閫氱敤鏂规硶 */
+ private LocDto buildLocDto(LocDetl stock, OrderDetl orderDetl, double qty) {
+ LocDto dto = new LocDto(
+ stock.getLocNo(), stock.getMatnr(), stock.getMaktx(),
+ stock.getBatch(), orderDetl.getOrderNo(), qty
+ );
+
+ // 鑾峰彇宸ヤ綔绔欏苟杞崲
+ List<Integer> staNos = staDescService.queryOutStaNosByLocNo(
+ stock.getLocNo(), qty >= stock.getAnfme() ? 101 : 103);
+
+ List<LocDto.staListDto> staList = staNos.stream()
+ .map(staNo -> new LocDto.staListDto()
+ .setStaNo(staNo)
+ .setStaName(Utils.getStaName(staNo)))
+ .collect(Collectors.toList());
+
+ dto.setStaNos(staList);
+ return dto;
+ }
+
+ // 鏂板鏂规硶
+// private List<LocDto> processOrderDetl(OrderDetl orderDetl, Double amount, Set<String> exist, Set<ExistDto> existDtos) {
+// List<LocDto> result = new ArrayList<>();
+// double issued = Optional.ofNullable(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D);
+//
+// if (amount != null && amount > issued) {
+// throw new CoolException("鏁伴噺楂樹簬鍙嚭搴撴暟閲�");
+// }
+//
+// List<LocDetl> locDetls = locDetlService.queryStockCrn(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist, orderDetl.getSupp(), orderDetl.getTemp1(), orderDetl.getTemp2());
+// for (LocDetl locDetl : locDetls) {
+// if (issued <= 0) break;
+// LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo()));
+// if (locMast.getCrnNo() != 7) {
+// ExistDto existDto = new ExistDto();
+// existDto.setLocNo(locDetl.getLocNo());
+// existDto.setMatnr(locDetl.getMatnr());
+// existDto.setBatch(locDetl.getBatch());
+// if (existDtos.add(existDto)) {
+// LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(),
+// issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued);
+// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103);
+// List<LocDto.staListDto> maps = new ArrayList<>();
+// for (Integer staNo : staNos) {
+// LocDto.staListDto staListDto = new LocDto.staListDto();
+// staListDto.setStaNo(staNo);
+// staListDto.setStaName(Utils.getStaName(staNo));
+// maps.add(staListDto);
+// }
+// locDto.setStaNos(maps);
+// result.add(locDto);
+// // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+// issued = issued - locDetl.getAnfme();
+// }
+// }else {
+// List<LocMast> locMasts = new ArrayList<>();
+// if (locMast.getBay1() ==6 || locMast.getBay1()==5){
+// locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+// .eq("gro1", locMast.getGro1())
+// .eq("crn_no", 7)
+// .eq("loc_type1",locMast.getLocType1())
+// .orderBy("bay1", true));
+// }else{
+// locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+// .eq("gro1", locMast.getGro1())
+// .eq("crn_no", 7)
+// .eq("loc_type1",locMast.getLocType1())
+// .orderBy("bay1", false));
+// }
+// for (LocMast locMast1 : locMasts){
+// if (locMast1.getLocSts().equals("F")){
+// LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>()
+// .eq("loc_No", locMast1.getLocNo())
+// .eq("matnr", locDetl.getMatnr()).eq("batch", locDetl.getBatch()));
+// if (!Cools.isEmpty(locDetl1)) {
+// ExistDto existDto = new ExistDto();
+// existDto.setLocNo(locDetl1.getLocNo());
+// existDto.setMatnr(locDetl1.getMatnr());
+// existDto.setBatch(locDetl1.getBatch());
+// if (existDtos.add(existDto)){
+// if (issued <= 0) break;
+// LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(),
+// issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued);
+// List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl1.getLocNo(), issued >= locDetl1.getAnfme() ? 101 : 103);
+// List<LocDto.staListDto> maps = new ArrayList<>();
+// for (Integer staNo : staNos) {
+// LocDto.staListDto staListDto = new LocDto.staListDto();
+// staListDto.setStaNo(staNo);
+// staListDto.setStaName(Utils.getStaName(staNo));
+// maps.add(staListDto);
+// }
+// locDto.setStaNos(maps);
+// result.add(locDto);
+// // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+// issued = issued - locDetl.getAnfme();
+//
+// }
+// }
+// }
+// }
+// }
+// }
+// if (issued > 0) {
+// LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued);
+// locDto.setLack(Boolean.TRUE);
+// result.add(locDto);
+// }
+// return result;
+// }
+
/** 鍥涘悜搴撹鍗曞嚭搴� **/
@PostMapping("/out/pakout/previewCustomQuantity/auth/sxk")
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index df6c1c3..dc0fe91 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -37,6 +37,7 @@
void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
void stockOutSxk(BasDevp staNo, TaskDto taskDto, Long userId);
+ void stockOutLibraryType(BasDevp staNo, TaskDto taskDto, Long userId);
/**
* 绌烘澘鍏ュ簱
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 82a2642..fcf1a3f 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -419,6 +419,12 @@
@Override
@Transactional
+ public void stockOutLibraryType(BasDevp staNo, TaskDto taskDto, Long userId) {
+
+ }
+
+ @Override
+ @Transactional
public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
List<LocDto> locDtos = taskDto.getLocDtos();
diff --git a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
index 4d6a3d4..ec2cfee 100644
--- a/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/WorkMastScheduler.java
@@ -154,7 +154,7 @@
}
- @Scheduled(cron = "0/3 * * * * ? ") //绉诲簱浠诲姟涓嬪彂
+// @Scheduled(cron = "0/3 * * * * ? ") //绉诲簱浠诲姟涓嬪彂
private void ShuttleMoveTaskSend(){
List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("wrk_sts", 11).eq("io_type",11));
if (wrkMasts.isEmpty()) {
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 334f01b..dd84c73 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -40,7 +40,7 @@
map.put(3010,"鍫嗗灈鏈哄簱鍗椾笁妤煎嚭鍏ュ簱鍙�");map.put(3012,"鍫嗗灈鏈哄簱鍗椾笁妤煎嚭搴撳彛");
- return map.get(sta);
+ return map.get(sta)==null?sta.toString():map.get(sta);
}
public static boolean isNorth(Integer sourceStaNo){
@@ -527,34 +527,24 @@
//婊℃澘姝e父鍏ュ簱
switch (curRow){
case 1:
+ necessaryParameters[1] = 4; //curRow 鏈�娣卞簱浣嶆帓
+ necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
+ necessaryParameters[3] = 3; //nearRow 鏈�娴呭簱浣嶆帓
+ break;
+ case 4:
necessaryParameters[1] = 5; //curRow 鏈�娣卞簱浣嶆帓
necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 4; //nearRow 鏈�娴呭簱浣嶆帓
+ necessaryParameters[3] = 6; //nearRow 鏈�娴呭簱浣嶆帓
break;
case 5:
- necessaryParameters[1] = 6; //curRow 鏈�娣卞簱浣嶆帓
+ necessaryParameters[1] = 8; //curRow 鏈�娣卞簱浣嶆帓
necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 7; //nearRow 鏈�娴呭簱浣嶆帓
+ necessaryParameters[3] = 8; //nearRow 鏈�娴呭簱浣嶆帓
break;
- case 6:
- necessaryParameters[1] = 10; //curRow 鏈�娣卞簱浣嶆帓
- necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 9; //nearRow 鏈�娴呭簱浣嶆帓
- break;
- case 10:
- necessaryParameters[1] = 11; //curRow 鏈�娣卞簱浣嶆帓
- necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 12; //nearRow 鏈�娴呭簱浣嶆帓
- break;
- case 11:
- necessaryParameters[1] = 14; //curRow 鏈�娣卞簱浣嶆帓
- necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 14; //nearRow 鏈�娴呭簱浣嶆帓
- break;
- case 14:
+ case 8:
necessaryParameters[1] = 1; //curRow 鏈�娣卞簱浣嶆帓
necessaryParameters[2] = sCrnNo; //crnNo 鍫嗗灈鏈哄彿
- necessaryParameters[3] = 2; //nearRow 鏈�娴呭簱浣嶆帓
+ necessaryParameters[3] = 1; //nearRow 鏈�娴呭簱浣嶆帓
break;
default:
throw new CoolException("搴撲綅鎺掑彿寮傚父锛氭帓鍙凤細" + curRow);
diff --git a/src/main/java/com/zy/common/model/ExistDto.java b/src/main/java/com/zy/common/model/ExistDto.java
index 6cbbcf8..286d4cb 100644
--- a/src/main/java/com/zy/common/model/ExistDto.java
+++ b/src/main/java/com/zy/common/model/ExistDto.java
@@ -1,8 +1,10 @@
package com.zy.common.model;
import lombok.Data;
+import lombok.experimental.Accessors;
@Data
+@Accessors(chain = true)
public class ExistDto {
private String locNo;
private String matnr;
diff --git a/src/main/java/com/zy/common/model/LocDto.java b/src/main/java/com/zy/common/model/LocDto.java
index 5399cce..78030ee 100644
--- a/src/main/java/com/zy/common/model/LocDto.java
+++ b/src/main/java/com/zy/common/model/LocDto.java
@@ -2,6 +2,7 @@
import com.core.common.Cools;
import lombok.Data;
+import lombok.experimental.Accessors;
import java.util.List;
import java.util.Map;
@@ -10,6 +11,7 @@
* Created by vincent on 2022/3/28
*/
@Data
+@Accessors(chain = true)
public class LocDto {
private String locNo;
@@ -48,7 +50,6 @@
this.orderNo = orderNo;
this.anfme = anfme;
}
-
public LocDto(String locNo, String matnr, String maktx, String batch, String orderNo, Double anfme) {
this.locNo = locNo;
this.matnr = matnr;
diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java
index c6031f3..75f735c 100644
--- a/src/main/java/com/zy/common/service/CommonService.java
+++ b/src/main/java/com/zy/common/service/CommonService.java
@@ -127,7 +127,7 @@
RowLastno rowLastno = rowLastnoService.selectById(whsType);
RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
/**
- * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱 2: 骞冲簱 3: 绌挎鏉� 4: 鍥涘悜杞� 5: AGV 0: 鏈煡
+ * 搴撳瀷 1: 鏍囧噯鍫嗗灈鏈哄簱 2: 骞冲簱 3: 绌挎鏉� 4: 鍥涘悜杞︽贩杞� 5: AGV 6锛氬洓鍚戣溅涓嶆贩杞� 0: 鏈煡
*/
switch (rowLastnoType.getType()){
case 1:
@@ -142,6 +142,8 @@
return getLocNoRun4(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0,mixture);
case 5:
return getLocNoRun5(whsType,staDescId,sourceStaNo,matnr,batch,grade,0,locTypeDto,0);
+ case 6:
+ return getLocNoRun6(whsType,staDescId,sourceStaNo,matnr,batch,grade,4,locTypeDto,0,mixture);
default:
log.error("绔欑偣={} 鏈煡璇㈠埌瀵瑰簲鐨勮鍒�",sourceStaNo);
break;
@@ -472,6 +474,9 @@
}
public StartupDto getLocNoRun4(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,boolean mixture) {
+ if (mixture){
+ throw new CoolException("娣疯浇绂佹鍏ュ簱");
+ }
if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
matnr = "";
}
@@ -811,6 +816,212 @@
return startupDto;
}
+ public StartupDto getLocNoRun6(Integer whsType, Integer staDescId, Integer sourceStaNo, String matnr, String batch, String grade, Integer moveCrnNo, LocTypeDto locTypeDto, int times,boolean mixture) {
+ if (Cools.isEmpty(matnr)) { //鐗╂枡鍙�
+ matnr = "";
+ }
+ if (Cools.isEmpty(batch)) { //鎵规
+ batch = "";
+ }
+ if (Cools.isEmpty(grade)) { //澶囩敤
+ grade = "";
+ }
+
+ // 鍒濆鍖栧弬鏁�
+ int crnNo = 0; //鍫嗗灈鏈哄彿
+ int nearRow = 0; //鏈�娴呭簱浣嶆帓
+ int curRow = 0; //鏈�娣卞簱浣嶆帓
+ int rowCount = 0; //杞杞
+ LocMast locMast = null; // 鐩爣搴撲綅
+
+ StartupDto startupDto = new StartupDto();
+ RowLastno rowLastno = rowLastnoService.selectById(whsType);
+ if (Cools.isEmpty(rowLastno)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===>搴撲綅瑙勫垯鏈煡");
+ }
+ RowLastnoType rowLastnoType = rowLastnoTypeService.selectById(rowLastno.getTypeId());
+ if (Cools.isEmpty(rowLastnoType)) {
+ throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�===銆嬪簱浣嶈鍒欑被鍨嬫湭鐭�");
+ }
+ int sRow = rowLastno.getsRow();
+ int eRow = rowLastno.geteRow();
+ int crnNumber = rowLastno.getCrnQty();
+
+ // ===============>>>> 寮�濮嬫墽琛�
+ curRow = rowLastno.getCurrentRow();
+
+ if (!Cools.isEmpty(moveCrnNo) && moveCrnNo!=0){
+ crnNumber = moveCrnNo;
+ }
+
+ //姝ょ▼搴忕敤浜庝紭鍖栧爢鍨涙満寮傚父鏃剁殑杩愯鏃堕棿
+ for (int i = times; i < crnNumber*2; i++) {
+ int[] locNecessaryParameters = Utils.LocNecessaryParameters(rowLastno, curRow, crnNumber,whsType);
+ rowCount = locNecessaryParameters[0];
+ curRow = locNecessaryParameters[1];
+ crnNo = locNecessaryParameters[2];
+ nearRow = locNecessaryParameters[3];
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("crn_no", crnNo).eq("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue()));
+ if (locMasts.size()<=5){
+ times++;
+ continue;
+ }
+ break;
+
+ }
+ if (crnNo == 0) {
+ throw new CoolException("鏃犲彲鐢ㄥ簱浣�");
+ }
+
+
+ // 鐩镐技宸ヤ綔妗f --- 鍚屽ぉ鍚岃鏍肩墿鏂�
+ if (!Cools.isEmpty(matnr) && (staDescId == 1 || staDescId == 11 || staDescId == 111) && !mixture ) {
+ //鏌ヨ鐩镐技宸ヤ綔妗f
+ List<WrkMast> wrkMasts = wrkMastService.selectWrkMastWrkDetlMatnrBatch(staDescId, matnr, batch,grade, crnNo);
+ int nearbay = 0; //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅鍒�
+ int nearlev = 0; //鐩镐技宸ヤ綔妗f 鐩爣搴撲綅灞�
+ for (WrkMast wrkMast:wrkMasts){
+ LocMast locMastWrk = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getLocNo()));
+ List<LocMast> locMasts = new ArrayList<>();
+ if (locMastWrk.getBay1() >=5 && locMastWrk.getBay1()<=6){
+ locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("gro1", locMastWrk.getGro1())
+ .eq("crn_no", 7)
+ .eq("loc_type1",locTypeDto.getLocType1())
+ .orderBy("bay1", true));
+ }else {
+ locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("gro1", locMastWrk.getGro1())
+ .eq("crn_no", 7)
+ .eq("loc_type1",locTypeDto.getLocType1())
+ .orderBy("bay1", false));
+ }
+ if (Cools.isEmpty(locMasts)) {
+ continue;
+ }
+ for (LocMast locMastGro1 : locMasts) {
+ if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q") || locMastGro1.getLocSts().equals("R") || locMastGro1.getLocSts().equals("X")) {
+ break;
+ }
+ if (locMastGro1.getLocSts().equals("O")){
+ locMast = locMastGro1;
+ break;
+ }
+ }
+
+
+ }
+
+ }
+
+ Wrapper<StaDesc> wrapper = null;
+ StaDesc staDesc = null;
+ BasDevp staNo = null;
+
+ if (Utils.BooleanWhsTypeSta(rowLastno, staDescId)) {
+ // 鑾峰彇鐩爣绔�
+ wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", staDescId)
+ .eq("stn_no", sourceStaNo)
+ .eq("crn_no", crnNo);
+ staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ log.error("鍏ュ簱璺緞涓嶅瓨鍦�:type_no={},stn_no={},crn_no={}", staDescId, sourceStaNo, crnNo);
+ crnNo = 0;
+ }else {
+ staNo = basDevpService.selectById(staDesc.getCrnStn());
+ if (!staNo.getAutoing().equals("Y")) {
+ log.error("鐩爣绔�"+staDesc.getCrnStn()+"涓嶅彲鐢�");
+ crnNo = 0;
+ }
+ startupDto.setStaNo(staNo.getDevNo());
+ }
+ }
+
+ // 鏇存柊搴撲綅鎺掑彿
+ if (Utils.BooleanWhsTypeSta(rowLastno, staDescId) && Cools.isEmpty(locMast)) {
+ rowLastno.setCurrentRow(curRow);
+ rowLastnoService.updateById(rowLastno);
+ }
+
+ // 寮�濮嬫煡鎵惧簱浣� ==============================>>
+
+ // 1.鎸夎鍒欐煡鎵惧簱浣�
+ if (Cools.isEmpty(locMast) && crnNo != 0) {
+ List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("bay1", nearRow)
+ .in("loc_sts", "O").eq("whs_type",rowLastnoType.getType().longValue())
+ .eq("crn_no",7)
+ .eq("loc_type1",locTypeDto.getLocType1())
+ .orderBy("lev1",true).orderBy("row1",false));//鏈�娴呭簱浣�
+
+ for (LocMast locMast1 : locMasts) {
+ if (locMast != null){
+ break;
+ }
+ if (!VersionUtils.locMoveCheckLocTypeComplete(locMast1, locTypeDto)) {
+ continue;
+ }
+ if (Utils.BooleanWhsTypeStaIoType(rowLastno)){
+ List<LocMast> locMasts1 = null;
+ if (nearRow == 6){
+ locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("gro1", locMast1.getGro1())
+ .eq("crn_no",7)
+ .eq("loc_type1",locTypeDto.getLocType1())
+ .orderBy("bay1",true));
+ }else {
+ locMasts1 = locMastService.selectList(new EntityWrapper<LocMast>()
+ .eq("gro1", locMast1.getGro1())
+ .eq("crn_no",7)
+ .eq("loc_type1",locTypeDto.getLocType1())
+ .orderBy("bay1",false));
+ }
+ if (Cools.isEmpty(locMasts1)) {
+ continue;
+ }
+ for (LocMast locMastGro1 : locMasts1) {
+ if (locMastGro1.getLocSts().equals("F")){
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_No", locMastGro1.getLocNo()));
+ if (!locDetl.getMatnr().equals(matnr) || !locDetl.getBatch().equals(batch)){
+ break;
+ }
+ }
+ if (locMastGro1.getLocSts().equals("P") || locMastGro1.getLocSts().equals("Q") || locMastGro1.getLocSts().equals("R")) {
+ break;
+ }
+ if (locMastGro1.getLocSts().equals("O")){
+ locMast = locMastGro1;
+ break;
+ }
+ }
+ }
+ }
+ }
+
+ // 閫掑綊鏌ヨ
+ if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("O")) {
+ // 褰撳墠宸烽亾鏃犵┖搴撲綅鏃讹紝閫掑綊璋冩暣鑷充笅涓�宸烽亾锛屾绱㈠叏閮ㄥ贩閬撴棤鏋滃悗锛岃烦鍑洪�掑綊
+ if (times < rowCount*2) {
+ times = times + 1;
+ return getLocNoRun6(whsType, staDescId, sourceStaNo, matnr, batch, grade,moveCrnNo, locTypeDto, times,mixture);
+ }
+ log.error("绯荤粺娌℃湁绌哄簱浣嶏紒锛侊紒 灏哄瑙勬牸锛� {}锛� 杞娆℃暟锛歿}", JSON.toJSONString(locTypeDto), times);
+ throw new CoolException("娌℃湁绌哄簱浣�");
+ }
+ String locNo = locMast.getLocNo();
+
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = getWorkNo(0);
+ // 杩斿洖dto
+ startupDto.setWorkNo(workNo);
+ startupDto.setCrnNo(crnNo);
+ startupDto.setSourceStaNo(sourceStaNo);
+ startupDto.setLocNo(locNo);
+ return startupDto;
+ }
+
public static String zerofill(String msg, Integer count) {
if (msg.length() == count) {
return msg;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e29eeec..ed42bb7 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,7 +10,7 @@
enabled: false
datasource:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxgtasrs
+ url: jdbc:sqlserver://127.0.0.1:1433;databasename=fyxcasrs
username: sa
password: sa@123
mvc:
@@ -39,7 +39,7 @@
#License鐩稿叧閰嶇疆
license:
- subject: jxgtwms
+ subject: fyxcwms
publicAlias: publicCert
storePass: public_zhongyang_123456789
licensePath: license.lic
diff --git a/src/main/resources/license.lic b/src/main/resources/license.lic
index e881460..4940185 100644
--- a/src/main/resources/license.lic
+++ b/src/main/resources/license.lic
Binary files differ
diff --git a/src/main/webapp/static/js/common.js b/src/main/webapp/static/js/common.js
index d9cc71f..df11990 100644
--- a/src/main/webapp/static/js/common.js
+++ b/src/main/webapp/static/js/common.js
@@ -1,4 +1,4 @@
-var baseUrl = "/gtSxkWms";
+var baseUrl = "/fyxcwms";
// 璇︽儏绐楀彛-楂樺害
var detailHeight = '80%';
diff --git a/src/main/webapp/static/js/order/out.js b/src/main/webapp/static/js/order/out.js
index 5365375..2338842 100644
--- a/src/main/webapp/static/js/order/out.js
+++ b/src/main/webapp/static/js/order/out.js
@@ -164,7 +164,7 @@
function pakoutPreview(ids,amount) {
let loadIndex = layer.load(2);
$.ajax({
- url: baseUrl + "/out/pakout/preview/auth/sxk",
+ url: baseUrl + "/out/pakout/OrderOutGetLoc/auth",
headers: {'token': localStorage.getItem('token')},
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify(ids),
@@ -324,7 +324,7 @@
json.ids = ids
json.amount = amount
$.ajax({
- url: baseUrl + "/out/pakout/previewCustomQuantity/auth/sxk",
+ url: baseUrl + "/out/pakout/OrderOutGetLoc.number/auth",
headers: {'token': localStorage.getItem('token')},
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify(json),
@@ -479,7 +479,7 @@
// let loadIndex = layer.load(2);
notice.msg('姝e湪鐢熸垚鍑哄簱浠诲姟......', {icon: 4});
$.ajax({
- url: baseUrl + "/out/pakout/auth/sxk",
+ url: baseUrl + "/out/pakout/auth",
headers: {'token': localStorage.getItem('token')},
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify(tableCache),
--
Gitblit v1.9.1