From 190d2d153d6737830f6173c7de1b0bc03e6d7dac Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 08 五月 2025 12:52:34 +0800 Subject: [PATCH] no message --- /dev/null | 128 ------------------ rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java | 44 ++++++ rsf-server/src/main/Test/ChineseMD5Util.java | 70 ++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java | 87 ++++++++---- rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java | 30 ++-- rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java | 2 6 files changed, 186 insertions(+), 175 deletions(-) diff --git a/rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java b/rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java index 9db8b48..ae5b824 100644 --- a/rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java +++ b/rsf-framework/src/main/java/com/vincent/rsf/framework/common/Cools.java @@ -5,6 +5,7 @@ import java.lang.reflect.*; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.*; /** @@ -371,4 +372,47 @@ return intersection; } + + /** + * 瀵规眽瀛楀瓧绗︿覆杩涜MD5鍔犲瘑 + * @param input 瑕佸姞瀵嗙殑姹夊瓧瀛楃涓� + * @return 32浣嶅皬鍐橫D5鍝堝笇鍊� + * @throws NoSuchAlgorithmException + */ + public static String md5Chinese(String input) throws NoSuchAlgorithmException { + if (input == null) { + return null; + } + + // 缁熶竴浣跨敤UTF-8缂栫爜 + byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8); + + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] digest = md.digest(inputBytes); + + // 灏嗗瓧鑺傛暟缁勮浆鎹负16杩涘埗瀛楃涓� + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02x", b)); + } + + return sb.toString(); + } + + /** + * 楠岃瘉姹夊瓧瀛楃涓蹭笌MD5鍝堝笇鏄惁鍖归厤 + * @param input 瑕侀獙璇佺殑姹夊瓧瀛楃涓� + * @param md5Hash 瀛樺偍鐨凪D5鍝堝笇鍊� + * @return 濡傛灉鍖归厤杩斿洖true锛屽惁鍒檉alse + */ + public static boolean verifyChinese(String input, String md5Hash) { + try { + String computedHash = md5Chinese(input); + return computedHash.equals(md5Hash.toLowerCase()); + } catch (NoSuchAlgorithmException e) { + // 鐞嗚涓婁笉浼氬彂鐢燂紝鍥犱负MD5鏄疛ava鏍囧噯搴撴敮鎸佺殑 + return false; + } + } + } diff --git a/rsf-server/src/main/Test/ChineseMD5Util.java b/rsf-server/src/main/Test/ChineseMD5Util.java new file mode 100644 index 0000000..963e6de --- /dev/null +++ b/rsf-server/src/main/Test/ChineseMD5Util.java @@ -0,0 +1,70 @@ +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class ChineseMD5Util { + + /** + * 瀵规眽瀛楀瓧绗︿覆杩涜MD5鍔犲瘑 + * @param input 瑕佸姞瀵嗙殑姹夊瓧瀛楃涓� + * @return 32浣嶅皬鍐橫D5鍝堝笇鍊� + * @throws NoSuchAlgorithmException + */ + public static String md5Chinese(String input) throws NoSuchAlgorithmException { + if (input == null) { + return null; + } + + // 缁熶竴浣跨敤UTF-8缂栫爜 + byte[] inputBytes = input.getBytes(StandardCharsets.UTF_8); + + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] digest = md.digest(inputBytes); + + // 灏嗗瓧鑺傛暟缁勮浆鎹负16杩涘埗瀛楃涓� + StringBuilder sb = new StringBuilder(); + for (byte b : digest) { + sb.append(String.format("%02x", b)); + } + + return sb.toString(); + } + + /** + * 楠岃瘉姹夊瓧瀛楃涓蹭笌MD5鍝堝笇鏄惁鍖归厤 + * @param input 瑕侀獙璇佺殑姹夊瓧瀛楃涓� + * @param md5Hash 瀛樺偍鐨凪D5鍝堝笇鍊� + * @return 濡傛灉鍖归厤杩斿洖true锛屽惁鍒檉alse + */ + public static boolean verifyChinese(String input, String md5Hash) { + try { + String computedHash = md5Chinese(input); + return computedHash.equals(md5Hash.toLowerCase()); + } catch (NoSuchAlgorithmException e) { + // 鐞嗚涓婁笉浼氬彂鐢燂紝鍥犱负MD5鏄疛ava鏍囧噯搴撴敮鎸佺殑 + return false; + } + } + + public static void main(String[] args) { + try { + String chineseText = "浣犲ソ锛屼笘鐣岋紒"; + + // 鍔犲瘑 + String md5Hash = md5Chinese(chineseText); + System.out.println("鍘熸枃: " + chineseText); + System.out.println("MD5鍝堝笇: " + md5Hash); + + // 楠岃瘉 + boolean isValid = verifyChinese(chineseText, md5Hash); + System.out.println("楠岃瘉缁撴灉: " + (isValid ? "鍖归厤" : "涓嶅尮閰�")); + + // 閿欒楠岃瘉绀轰緥 + boolean isWrongValid = verifyChinese("浣犲ソ锛屼笘鐣岋紒", md5Hash); + System.out.println("閿欒鏂囨湰楠岃瘉: " + (isWrongValid ? "鍖归厤" : "涓嶅尮閰�")); + + } catch (NoSuchAlgorithmException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/rsf-server/src/main/Test/CombinationFinder.java b/rsf-server/src/main/Test/CombinationFinder.java deleted file mode 100644 index e879023..0000000 --- a/rsf-server/src/main/Test/CombinationFinder.java +++ /dev/null @@ -1,128 +0,0 @@ -import com.vincent.rsf.framework.common.Cools; -import org.apache.commons.codec.digest.Md5Crypt; - -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public class CombinationFinder { - - public List<Integer> findCombination(double[] nums, double target) { - // 澶勭悊绛夊�兼儏鍐� - List<Integer> equal = findEqual(nums, target); - if (equal != null && !equal.isEmpty()) { - return equal; - } - - // 澶勭悊澶т簬鐨勬儏鍐� - List<Integer> greater = findGreater(nums, target); - if (greater != null && !greater.isEmpty()) { - return greater; - } - - // 澶勭悊灏忎簬鐨勬儏鍐� - List<Integer> less = findLess(nums, target); - return less != null ? less : new ArrayList<>(); // 纭繚涓嶈繑鍥瀗ull - } - - private List<Integer> findEqual(double[] nums, double target) { - int n = nums.length; - double[] dp = new double[(int) (target * 100 + 1)]; // 鏀惧ぇ100鍊嶅鐞嗙簿搴﹂棶棰� - Arrays.fill(dp, Double.MAX_VALUE); - dp[0] = 0; - int[] prev = new int[(int) (target * 100 + 1)]; - Arrays.fill(prev, -1); - - for (int j = 0; j < n; j++) { - int num = (int) (nums[j] * 100); // 鏀惧ぇ100鍊嶅鐞嗙簿搴﹂棶棰� - for (int i = (int) (target * 100); i >= num; i--) { - if (dp[i - num] != Double.MAX_VALUE && dp[i - num] + 1 < dp[i]) { - dp[i] = dp[i - num] + 1; - prev[i] = j; - } - } - } - - if (dp[(int) (target * 100)] == Double.MAX_VALUE) { - return null; - } - - List<Integer> indices = new ArrayList<>(); - int current = (int) (target * 100); - while (current > 0) { - int j = prev[current]; - if (j == -1) return null; - indices.add(j); - current -= (int) (nums[j] * 100); - } - - return indices; - } - - private List<Integer> findGreater(double[] nums, double target) { - List<double[]> sorted = new ArrayList<>(); - for (int i = 0; i < nums.length; i++) { - sorted.add(new double[]{nums[i], i}); - } - sorted.sort((a, b) -> Double.compare(b[0], a[0])); - - double sum = 0; - List<Integer> indices = new ArrayList<>(); - for (double[] pair : sorted) { - sum += pair[0]; - indices.add((int) pair[1]); - if (sum > target) { - return indices; - } - } - - return null; - } - - private List<Integer> findLess(double[] nums, double target) { - int n = nums.length; - List<Integer> bestIndices = new ArrayList<>(); - double[] maxSum = {-1.0}; - for (int k = 1; k <= n; k++) { - List<Integer> currentIndices = new ArrayList<>(); - double[] currentMax = {-1.0}; - backtrack(nums, target, 0, k, 0.0, 0, currentIndices, currentMax, new ArrayList<>()); - if (currentMax[0] != -1.0) { - if (currentMax[0] > maxSum[0] || (currentMax[0] == maxSum[0] && currentIndices.size() < bestIndices.size())) { - maxSum[0] = currentMax[0]; - bestIndices = new ArrayList<>(currentIndices); - } - } - } - - return bestIndices.isEmpty() ? null : bestIndices; - } - - private void backtrack(double[] nums, double target, int start, int k, double currentSum, int count, List<Integer> currentIndices, double[] currentMax, List<Integer> path) { - if (count == k) { - if (currentSum <= target && currentSum > currentMax[0]) { - currentMax[0] = currentSum; - currentIndices.clear(); - currentIndices.addAll(path); - } - return; - } - - for (int i = start; i < nums.length; i++) { - if (currentSum + nums[i] > target) continue; - path.add(i); - backtrack(nums, target, i + 1, k, currentSum + nums[i], count + 1, currentIndices, currentMax, path); - path.remove(path.size() - 1); - } - } - - public static void main(String[] args) { -// CombinationFinder finder = new CombinationFinder(); -// double[] nums = {3.0, 1.0, 4.0, 2.0}; -// double target = 0.1; -// List<Integer> result = finder.findCombination(nums, target); -// System.out.println("鏈�浼樼粍鍚堢殑绱㈠紩: " + result); // 渚嬪锛岀瓑鍊肩粍鍚堝彲鑳戒负绱㈠紩2锛�4.0锛夊拰3锛�1.0锛� - System.out.println(Cools.md5("123456")); - } -} \ No newline at end of file diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java index 9109bf7..4f9e861 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/MobileController.java @@ -173,7 +173,7 @@ return R.error("鎵樼洏鐮佷笉鑳戒负绌猴紒锛�"); } if (Objects.isNull(param.getItems()) || param.getItems().isEmpty()) { - return R.error("璺熻釜鐮佷笉鑳戒负绌猴紒锛�"); + return R.error("瑙g粦鏄庣粏涓嶈兘涓虹┖锛侊紒"); } return R.ok(mobileService.unBind(param)); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java index a81605c..ace414b 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java @@ -273,7 +273,7 @@ if (Objects.isNull(rcpt.get("fieldsindex")) || StringUtils.isBlank(rcpt.get("fieldsindex").toString())) { //鑾峰彇16浣島uid // String uuid16 = Cools.md5(dto.getBarcode()); - String uuid16 = Cools.md5(dto.getId() + dto.getMatnr()); + String uuid16 = Cools.md5(dto.getMatnr() + dto.getSplrBatch()); rcpt.put("index", uuid16); orderItem.setFieldsIndex(uuid16); } @@ -882,20 +882,20 @@ } List<WaitPakinItem> pakinItems = waitPakinItemService.list(new LambdaQueryWrapper<WaitPakinItem>() .eq(WaitPakinItem::getPakinId, waitPakin.getId())); - if (pakinItems.isEmpty()) { - return R.ok(new ArrayList<>()); - } - List<Long> list = pakinItems.stream().map(WaitPakinItem::getSource).collect(Collectors.toList()); - LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>().in(WarehouseAreasItem::getId, list); - List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper); - for (int i = 0; i < warehouseAreasItems.size(); i++) { - for (WaitPakinItem pakinItem : pakinItems) { - if (warehouseAreasItems.get(i).getId().equals(pakinItem.getSource())) { - warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme()); - } - } - } - return R.ok(warehouseAreasItems); +// if (pakinItems.isEmpty()) { +// return R.ok(new ArrayList<>()); +// } +// List<Long> list = pakinItems.stream().map(WaitPakinItem::getSource).collect(Collectors.toList()); +// LambdaQueryWrapper<WarehouseAreasItem> queryWrapper = new LambdaQueryWrapper<WarehouseAreasItem>().in(WarehouseAreasItem::getId, list); +// List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.list(queryWrapper); +// for (int i = 0; i < warehouseAreasItems.size(); i++) { +// for (WaitPakinItem pakinItem : pakinItems) { +// if (warehouseAreasItems.get(i).getId().equals(pakinItem.getSource())) { +// warehouseAreasItems.get(i).setAnfme(pakinItem.getAnfme()); +// } +// } +// } + return R.ok(pakinItems); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java index 4edc38d..a848234 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WaitPakinServiceImpl.java @@ -195,6 +195,7 @@ throw new CoolException("缁勬墭涓嶅瓨鍦紒锛�"); } List<PakinItem> paramItems = param.getItems(); + if (Objects.isNull(paramItems) || paramItems.isEmpty()) { throw new CoolException("瑙g粦鐗╂枡涓嶈兘涓虹┖锛侊紒"); } @@ -205,16 +206,39 @@ if (pakinItems.isEmpty()) { throw new CoolException("鏁版嵁閿欒锛氱粍鎵樻槑缁嗕笉瀛樺湪锛侊紒"); } - List<Long> ids = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList()); - if (!waitPakinItemService.removeByIds(ids)) { - throw new CoolException("缁勬墭鏄庣粏瑙g粦澶辫触锛侊紒"); - } +// List<Long> ids = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toList()); +// if (!waitPakinItemService.removeByIds(ids)) { +// throw new CoolException("缁勬墭鏄庣粏瑙g粦澶辫触锛侊紒"); +// } List<WarehouseAreasItem> warehouseAreasItems = warehouseAreasItemService.listByIds(list); for (int i1 = 0; i1 < pakinItems.size(); i1++) { + for (PakinItem item : paramItems) { + if (item.getId().equals(pakinItems.get(i1).getSource())) { + if (pakinItems.get(i1).getAnfme().compareTo(item.getReceiptQty()) > 0) { + if (item.getReceiptQty().compareTo(0.00) == 0) { + throw new CoolException("瑙g粦鏁伴噺涓嶈兘涓洪浂锛侊紒"); + } + if (item.getReceiptQty().compareTo(pakinItems.get(i1).getAnfme() - pakinItems.get(i1).getWorkQty() - pakinItems.get(i1).getQty()) > 0) { + throw new CoolException("瑙g粦鏁伴噺涓嶈兘澶т簬鍓╀綑鍙墽琛屾暟锛侊紒"); + } + pakinItems.get(i1).setAnfme(pakinItems.get(i1).getAnfme() - item.getReceiptQty()); + if (!waitPakinItemService.updateById(pakinItems.get(i1))) { + throw new CoolException("缁勬墭鏄庣粏鏁伴噺淇敼澶辫触锛侊紒"); + } + } else { + if (!waitPakinItemService.removeById(pakinItems.get(i1).getId())) { + throw new CoolException("缁勬墭鏄庣粏鍒犻櫎澶辫触锛侊紒"); + } + } + } + } + } + + for (int a = 0; a < paramItems.size(); a++) { for (int i = 0; i < warehouseAreasItems.size(); i++) { - if (warehouseAreasItems.get(i).getId().equals(pakinItems.get(i1).getId())) { - double v = warehouseAreasItems.get(i).getWorkQty() - pakinItems.get(i1).getAnfme(); + if (warehouseAreasItems.get(i).getId().equals(paramItems.get(a).getId())) { + double v = warehouseAreasItems.get(i).getWorkQty() - paramItems.get(a).getReceiptQty(); warehouseAreasItems.get(i).setWorkQty(v); if (!warehouseAreasItemService.updateById(warehouseAreasItems.get(i))) { throw new CoolException("鏀惰揣鍖烘暟閲忎慨鏀瑰け璐ワ紒锛�"); @@ -222,8 +246,9 @@ } } } - double anfmes = warehouseAreasItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum(); + double anfmes = paramItems.stream().mapToDouble(PakinItem::getReceiptQty).sum(); +// double anfmes = warehouseAreasItems.stream().mapToDouble(WarehouseAreasItem::getAnfme).sum(); if (waitPakins.getAnfme().compareTo(anfmes) <= 0) { if (!waitPakinService.removeById(waitPakins.getId())) { throw new CoolException("缁勬墭鍒犻櫎澶辫触锛侊紒"); @@ -256,27 +281,34 @@ if (!taskItems.isEmpty()) { return R.error("缁勬嫋妗f湁鏄庣粏浠诲姟"); } - } - Set<Long> sourceIds = pakinItems.stream().map(WaitPakinItem::getSource).collect(Collectors.toSet()); + Set<Long> sourceIds = pakinItems.stream().map(WaitPakinItem::getSource).collect(Collectors.toSet()); - List<WarehouseAreasItem> areasItems = warehouseAreasItemService.listByIds(sourceIds); + List<WarehouseAreasItem> areasItems = warehouseAreasItemService.list(new LambdaQueryWrapper<WarehouseAreasItem>() + .in(WarehouseAreasItem::getId, sourceIds)); - if (areasItems.isEmpty()) { - return R.error("鏀惰揣鍖烘暟鎹笉瀛樺湪锛侊紒"); - } - - Map<Long, List<WaitPakinItem>> listMap = pakinItems.stream().collect(Collectors.groupingBy(WaitPakinItem::getSource)); - for (WarehouseAreasItem item : areasItems) { - List<WaitPakinItem> pakin = listMap.get(item.getId()); - if (Objects.isNull(pakin)) { - continue; + if (areasItems.isEmpty()) { + return R.error("鏀惰揣鍖烘暟鎹笉瀛樺湪锛侊紒"); } - double sum = pakin.stream().mapToDouble(WaitPakinItem::getAnfme).sum(); - item.setWorkQty(item.getWorkQty() - sum) - .setAnfme(item.getAnfme() + sum); - if (!warehouseAreasItemService.updateById(item)) { - throw new CoolException("鏀惰揣鍖烘暟鎹洖婊氬け璐ワ紒锛�"); + + Map<Long, List<WaitPakinItem>> listMap = pakinItems.stream().collect(Collectors.groupingBy(WaitPakinItem::getSource)); + for (WarehouseAreasItem item : areasItems) { + List<WaitPakinItem> pakin = listMap.get(item.getId()); + if (Objects.isNull(pakin)) { + continue; + } + double sum = pakin.stream().mapToDouble(WaitPakinItem::getAnfme).sum(); + item.setWorkQty(item.getWorkQty() - sum) + .setAnfme(item.getAnfme() + sum); + if (!warehouseAreasItemService.updateById(item)) { + throw new CoolException("鏀惰揣鍖烘暟鎹洖婊氬け璐ワ紒锛�"); + } + } + + Set<Long> pakinItemIds = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toSet()); + + if (!waitPakinItemService.removeByIds(pakinItemIds)) { + throw new CoolException("鏄庣粏鍒犻櫎澶辫触锛侊紒"); } } @@ -284,13 +316,6 @@ return R.error("Delete Fail"); } - Set<Long> pakinItemIds = pakinItems.stream().map(WaitPakinItem::getId).collect(Collectors.toSet()); - - if (!waitPakinItemService.removeByIds(pakinItemIds)) { - throw new CoolException("鏄庣粏鍒犻櫎澶辫触锛侊紒"); - } return R.ok("Delete Success").add(pakinIds); - - } } -- Gitblit v1.9.1