From 1b230d7961b2d5068298f0cba13287cabd2fd649 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期三, 17 七月 2024 18:47:35 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/utils/Utils.java | 455 ++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 358 insertions(+), 97 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index d862716..c1c4613 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,15 +1,23 @@
package com.zy.asrs.utils;
import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+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.common.SpringUtils;
+import com.zy.asrs.entity.AdjDetl;
+import com.zy.asrs.service.AdjDetlService;
import com.zy.common.properties.SlaveProperties;
import com.zy.common.service.CommonService;
import java.text.DecimalFormat;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
/**
@@ -148,27 +156,46 @@
}
/**
- * 褰撴绱㈠埌鍙屾繁搴撲綅鐨勬祬搴撲綅鏃讹紝濡傛灉娣卞簱浣嶆棤璐э紝鍒欐斁鍏ュ搴旂殑娣卞簱浣�
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
*/
- public static void toDeepIfEmptyByShallow(String shallowLoc) {
- int row = getRow(shallowLoc);
- int remainder = (int) Arith.remainder(row, 4);
- int targetRow = 0;
- if (remainder == 2) {
- targetRow = row - 1;
- } else if (remainder == 3) {
- targetRow = row + 1;
- } else {
- throw new RuntimeException(shallowLoc + "涓嶆槸娴呭簱浣嶏紝绯荤粺绻佸繖");
+ public static int getBay(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(2, 5));
}
- String targetLoc = zerofill(String.valueOf(targetRow), 2) + shallowLoc.substring(2);
-
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static int getLev(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(5, 7));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static int getAgvLev(String locNo) {
+ if (!Cools.isEmpty(locNo)) {
+ return Integer.parseInt(locNo.substring(11, 13));
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ public static String getLocNo(Number row, Number bay, Number lev) {
+ return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
+ }
+
+ /**
+ * 鑾峰彇搴撲綅缁�
+ * @param locNo 搴撲綅鍙�
+ */
public static List<String> getGroupLoc(String locNo){
int row = getRow(locNo);
+ int bay = getBay(locNo);
if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
List<String> result = new ArrayList<>();
for (Integer row0 : CommonService.FIRST_GROUP_ROW_LIST) {
@@ -183,109 +210,343 @@
}
return result;
}
+ if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ Collections.reverse(result);
+ return result;
+ }
+ if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.FOURTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
+ if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.FIFTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
+ if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ Collections.reverse(result);
+ return result;
+ }
+ if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.SEVENTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
+ if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.EIGHTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
+ public static void main(String[] args) {
+ System.out.println(JSON.toJSONString(getGroupInnerLoc("1505908")));
+ }
- public static Integer getOutLayerRow(String locNo, Boolean pakin){
+ /**
+ * 鑾峰彇娣辨祬搴撲綅缁�
+ * @param locNo 搴撲綅鍙�
+ * @return
+ */
+ public static List<String> getGroupDeepLoc(String locNo){
int row = getRow(locNo);
- // 鍏ュ簱
- if (pakin) {
- if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
- return 17;
- } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
- return 18;
- } else {
- return -1;
-// throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
- }
- // 鍑哄簱
- } else {
- if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
- return 2;
- } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
- return 30;
- } else {
- return -1;
-// throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
- }
+ int bay = getBay(locNo);
+
+ //(1,3,4,10,11)娌℃湁澶栦晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺�
+ return new ArrayList<>();
}
+ if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺�
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
+ if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀渚ф柟鍚戝簱浣嶇粍
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ return result;
+ }
+ if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
-
- public static List<Integer> getGroupLoc(Integer row){
- if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
- return CommonService.FIRST_GROUP_ROW_LIST;
- } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
- return CommonService.SECOND_GROUP_ROW_LIST;
- } else {
- throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
- }
- }
-
- // 澶栦晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜
+ /**
+ * 鑾峰彇澶栦晶鏂瑰悜鐨勫簱浣嶇粍
+ * @param locNo 搴撲綅鍙�
+ * @return
+ */
public static List<String> getGroupOuterLoc(String locNo){
int row = getRow(locNo);
- List<String> result = new ArrayList<>();
- if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
- for (Integer integer : CommonService.FIRST_GROUP_ROW_LIST) {
- if (integer < row) {
- result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
- } else {
- break;
- }
- }
- } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
- List<Integer> clone = Arrays.asList(new Integer[CommonService.SECOND_GROUP_ROW_LIST.size()]);
- Collections.copy(clone, CommonService.SECOND_GROUP_ROW_LIST);
- Collections.reverse(clone);
- for (Integer integer : clone) {
- if (integer > row) {
- result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
- } else {
- break;
- }
- }
- } else {
-// throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ int bay = getBay(locNo);
+
+ //(1,3,4,10,11)娌℃湁澶栦晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺�
+ return new ArrayList<>();
}
- return result;
+ if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺�
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) {
+ if (row0 < row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ }
+ return result;
+ }
+ if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀渚ф柟鍚戝簱浣嶇粍
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) {
+ if (row0 < row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ }
+ return result;
+ }
+ if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
}
- public static void main(String[] args) {
- System.out.println(JSON.toJSONString(getGroupInsideLoc("2300101")));
- }
-
- // 鍐呬晶鏂瑰悜鐨勮揣浣� 浼樺厛鍏ュ簱鏂瑰悜/浼樺厛鍑哄簱鏂瑰悜 ===>> 鍙嶄箣
- public static List<String> getGroupInsideLoc(String locNo){
+ /**
+ * 鑾峰彇鍐呬晶鏂瑰悜鐨勫簱浣嶇粍
+ * @param locNo 搴撲綅鍙�
+ * @return
+ */
+ public static List<String> getGroupInnerLoc(String locNo){
int row = getRow(locNo);
- List<String> result = new ArrayList<>();
- if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {
- List<Integer> clone = Arrays.asList(new Integer[CommonService.FIRST_GROUP_ROW_LIST.size()]);
- Collections.copy(clone, CommonService.FIRST_GROUP_ROW_LIST);
- Collections.reverse(clone);
- for (Integer integer : clone) {
- if (integer > row) {
- result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
- } else {
- break;
+ int bay = getBay(locNo);
+
+ //(1,3,4,10,11)娌℃湁鍐呬晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ if (CommonService.FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺�
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.THIRD_GROUP_ROW_LIST) {
+ if (row0 > row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
}
}
- } else if (CommonService.SECOND_GROUP_ROW_LIST.contains(row)) {
- for (Integer integer : CommonService.SECOND_GROUP_ROW_LIST) {
- if (integer < row) {
- result.add(zerofill(String.valueOf(integer), 2) + locNo.substring(2));
- } else {
- break;
+ return result;
+ }
+ if (CommonService.FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺�
+ return new ArrayList<>();
+ }
+ if (CommonService.SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀唴渚ф柟鍚戝簱浣嶇粍
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : CommonService.SIXTH_GROUP_ROW_LIST) {
+ if (row0 > row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
}
}
- } else {
-// throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ return result;
}
- if (!Cools.isEmpty(result)) {
- Collections.reverse(result);
+ if (CommonService.SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
}
- return result;
+ if (CommonService.EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+
+ //閫氳繃杈撻�佺珯鐐瑰彿鑾峰彇鎻愬崌鏈哄彿
+ public static Integer stnNoToLiftNo(Integer stnNo) {
+ //涓�鍙锋彁鍗囨満
+ ArrayList<Integer> one = new ArrayList<Integer>(){{
+ add(100);add(101);
+ add(200);add(201);
+ add(300);add(301);
+ }};
+
+ //浜屽彿鎻愬崌鏈�
+ ArrayList<Integer> two = new ArrayList<Integer>(){{
+ add(102);add(103);
+ add(202);add(203);
+ add(340);add(341);
+ }};
+
+ //涓夊彿鎻愬崌鏈�
+ ArrayList<Integer> three = new ArrayList<Integer>(){{
+ add(104);add(105);
+ add(204);add(205);
+ add(345);add(346);
+ }};
+
+ if (one.contains(stnNo)) {
+ return 1;
+ } else if (two.contains(stnNo)) {
+ return 2;
+ } else if (three.contains(stnNo)) {
+ return 3;
+ }
+
+
+ return null;
+ }
+
+ public static void wapperSetCondition(Wrapper wrapper, String column, String condition){
+ if(Cools.isEmpty(condition) || "null".equals(condition)){
+ wrapper.andNew().eq(column,"").or().isNull(column);
+ }else {
+ wrapper.andNew().eq(column,condition);
+ }
+ }
+
+ public static void confirmOnlyMat(Wrapper wrapper, String matnr, String csocode, String isoseq){
+ wapperSetCondition(wrapper,"matnr",matnr);
+ wapperSetCondition(wrapper,"csocode",csocode);
+ wapperSetCondition(wrapper,"isoseq",isoseq);
+ }
+
+ public static void confirmOnlyMat(Wrapper wrapper, String matnr, String batch, String threeCode, String deadTime){
+ wapperSetCondition(wrapper,"matnr",matnr);
+ wapperSetCondition(wrapper,"three_code",threeCode);
+ wapperSetCondition(wrapper,"dead_time",deadTime);
+ wapperSetCondition(wrapper,"batch",batch);
+ }
+
+ //鐢熸垚搴撳瓨璋冩暣璁板綍鍗曟嵁鍙� (骞存湀鏃�+4浣嶆祦姘�)
+ public static String generateAdjustOrderNo(){
+ Date date = new Date();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String dateStr = sdf.format(date);
+
+ try {
+ AdjDetlService adjDetlService = SpringUtils.getBean(AdjDetlService.class);
+ AdjDetl adjDetl = adjDetlService.selectOne(new EntityWrapper<AdjDetl>().orderBy("adj_id",false));
+ if(!Cools.isEmpty(adjDetl)){
+ String orderNo = adjDetl.getOrderNo();
+ String lastDateStr = orderNo.substring(0, 8);
+ if(Cools.eq(dateStr,lastDateStr)){
+ int index = Integer.parseInt(orderNo.substring(8, 12));
+ index++;
+ if(index < 10){
+ return dateStr + "000" + index;
+ }
+ if(index < 100){
+ return dateStr + "00" + index;
+ }
+ if(index < 1000){
+ return dateStr + "0" + index;
+ }
+ return dateStr + index;
+ }else {
+ return dateStr + "0000";
+ }
+ }else {
+ return dateStr + "0000";
+ }
+ }catch (Exception e){
+ return dateStr + "0000";
+ }
+ }
+
+ public static String getOrderNo(String orderNo, double anfme){
+ JSONArray orderArray = new JSONArray();
+ //濡傛灉璁㈠崟鍙蜂负jsonString
+ if(orderNo.contains("{")){
+ JSONArray jsonArray = JSON.parseArray(orderNo);
+ //閬嶅巻鎵�鏈夎鍗曞彿鍙婅鍗曟暟閲�
+ for (Object o : jsonArray){
+ JSONObject orderJson = (JSONObject) o;
+ Double orderAnfme = orderJson.getDouble("anfme");
+ //濡傛灉璁㈠崟鏁伴噺涓�0锛屽垯璺宠繃
+ if(orderAnfme <= 0){
+ continue;
+ }
+ if(orderAnfme > anfme){
+ //濡傛灉璁㈠崟鏁伴噺澶т簬璇ュ簱瀛樻暟閲忥紝涓旇鍗曟暟缁勪负绌猴紝鍒欑洿鎺ヨ繑鍥炶璁㈠崟鍙凤紝鍚﹀垯灏卞皢璇ヨ鍗曟坊鍔犲埌璁㈠崟鏁扮粍
+ if(orderArray.isEmpty()){
+ return orderJson.getString("orderNo");
+ }else {
+ orderJson.put("anfme",anfme);
+ orderArray.add(orderJson);
+ }
+ }else {
+ anfme -= orderAnfme;
+ orderArray.add(orderJson);
+ }
+ }
+ return orderArray.toJSONString();
+ }else {
+ return orderNo;
+ }
+
+ }
+
+ public static String orderMergeUpdate(String orderNo, double anfme){
+ if(orderNo.contains("{")){
+ JSONArray jsonArray = JSON.parseArray(orderNo);
+ for(int i=0; i<jsonArray.size(); i++){
+ JSONObject orderJson = (JSONObject)jsonArray.get(i);
+ Double orderAnfme = orderJson.getDouble("anfme");
+ if(orderAnfme > anfme){
+ ((JSONObject) jsonArray.get(i)).put("anfme",orderAnfme - anfme);
+ return jsonArray.toJSONString();
+ }else {
+ ((JSONObject) jsonArray.get(i)).put("anfme",0);
+ anfme -= orderAnfme;
+ }
+ }
+ return jsonArray.toJSONString();
+ }else {
+ return orderNo;
+ }
}
}
--
Gitblit v1.9.1