From 1e01cb4da6055dd19c720a7012301ec34bee982a Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期一, 30 六月 2025 16:41:04 +0800 Subject: [PATCH] Merge branch 'devlop' of http://47.97.1.152:5880/r/wms-master into devlop --- rsf-admin/src/page/basicInfo/loc/InitModal.jsx | 11 ++ rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java | 18 ++++ rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java | 4 + rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java | 13 +- rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/Shelves.java | 132 +++++++++++++++++++++++++++++++++ rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java | 2 rsf-admin/src/i18n/zh.js | 1 rsf-admin/src/i18n/en.js | 1 8 files changed, 173 insertions(+), 9 deletions(-) diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js index 7a6a9ee..17125dc 100644 --- a/rsf-admin/src/i18n/en.js +++ b/rsf-admin/src/i18n/en.js @@ -437,6 +437,7 @@ col: "Col", lev: "Lev", channel: "Channel", + startChannel: "startChannel", maxParts: "MaxParts", maxPack: "MaxPack", flagLabelMange: "FlagLabelMange", diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js index 9a56047..4dedfc6 100644 --- a/rsf-admin/src/i18n/zh.js +++ b/rsf-admin/src/i18n/zh.js @@ -445,6 +445,7 @@ flagLogic: "铏氭嫙搴撲綅", fucAtrrs: "鍔熻兘灞炴��", barcode: "瀹瑰櫒鐮�", + startChannel: "璧峰宸烽亾", unit: "鍗曚綅", size: "闀�/瀹�/楂�", length: "闀�", diff --git a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx index cc4e572..38a3297 100644 --- a/rsf-admin/src/page/basicInfo/loc/InitModal.jsx +++ b/rsf-admin/src/page/basicInfo/loc/InitModal.jsx @@ -235,6 +235,17 @@ validate={[required()]} /> </Grid> + <Grid item xs={4}> + <TextInput + label={"table.field.loc.startChannel"} + name="startChannel" + value={formData.startChannel} + onChange={(e) => handleChange(+e.target.value, 'startChannel')} + size="small" + type="number" + validate={[required()]} + /> + </Grid> </Grid> </Box> </DialogContent> diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java index c54f46d..1f602b1 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mcp/McpController.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; +import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.common.constant.Constants; import com.vincent.rsf.server.common.utils.FieldsUtils; import com.vincent.rsf.server.manager.controller.params.LocToTaskParams; @@ -86,13 +87,13 @@ } param.setType(Constants.TASK_TYPE_OUT_STOCK); -// try { -// locItemService.generateTask(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val, param, getLoginUserId()); -// } catch (Exception e) { -// throw new RuntimeException(e); -// } + try { + locItemService.generateTask(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val, param, getLoginUserId()); + } catch (Exception e) { + throw new CoolException(e); + } - return R.ok(param); + return R.ok(); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java index 9996357..b50b876 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java @@ -32,7 +32,7 @@ @PreAuthorize("hasAuthority('manager:task:list')") @GetMapping("/saveOutTaskSts/{barcode}") - @ApiOperation("蹇�熸嫞璐ф煡璇�") + @ApiOperation("蹇�熸嫞璐�") public R saveOutTaskSts(@PathVariable String barcode) { return pdaOutStockService.saveOutTaskSts(barcode); diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java index fb73741..9ee2d9f 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/params/LocMastInitParam.java @@ -54,5 +54,9 @@ @NotBlank(message = "宸烽亾") private Integer channel; + @ApiModelProperty("璧峰宸烽亾") + @NotBlank(message = "璧峰宸烽亾") + private Integer startChannel; + } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java index 378e1ac..769e868 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.controller.params.LocMastInitParam; @@ -11,6 +12,7 @@ import com.vincent.rsf.server.manager.mapper.LocTypeRelaMapper; import com.vincent.rsf.server.manager.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.vincent.rsf.server.manager.utils.Shelves; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -106,8 +108,20 @@ List<Loc> list = new ArrayList<>(); Integer chanl = 0; //榛樿绗竴宸烽亾 for (int r = param.getStartRow(); r <= param.getEndRow(); r++) { - if (r % param.getChannel() == 1) { - chanl ++; + try{ + Shelves shelves = new Shelves(param.getEndRow() - param.getStartRow() + 1, param.getChannel(),param.getStartRow()); + for (List<Integer> node : shelves.nodes){ + if (node.contains(r)) { + if (!Cools.isEmpty(param.getStartChannel()) && param.getStartChannel() > 0){ + chanl = shelves.nodes.indexOf(node) + param.getStartChannel(); + }else { + chanl = shelves.nodes.indexOf(node) + 1; + } + break; + } + } + }catch (Exception e){ + throw new CoolException("瑙f瀽宸烽亾鍙峰け璐�"); } for (int b = param.getStartBay(); b <= param.getEndBay(); b++) { for (int l = param.getStartLev(); l <= param.getEndLev(); l++) { diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/Shelves.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/Shelves.java new file mode 100644 index 0000000..8324a33 --- /dev/null +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/utils/Shelves.java @@ -0,0 +1,132 @@ +package com.vincent.rsf.server.manager.utils; + +import com.alibaba.fastjson.JSON; +import com.vincent.rsf.framework.common.Arith; +import com.vincent.rsf.framework.exception.CoolException; + + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * <strong>绔嬪簱璐ф灦瀹炰綋绫�</strong> + * Created by vincent on 2020/6/11 + */ +public class Shelves { + + // 璐ф灦鎺掓暟閲� + public final int size; + + // 璐ф灦缁勬暟閲� + public final int group; + + // 鍋忕Щ閲廩default:0] + public final int offset; + + // 璐ф灦瀹炰緥鑺傜偣闆嗗悎 + public List<List<Integer>> nodes; + + public Shelves(int size, int group) { + this(size, group, 0); + } + + /** + * @param size 璐ф灦鍗曟帓鎬绘暟 + * @param group 璐ф灦缁勬暟閲� + * @param offset 搴忓垪鍙峰亸绉婚噺 + */ + public Shelves(int size, int group, int offset) { + this.size = size; + this.group = group; + this.offset = offset-1; + init(); + } + + + + /** + * 鍒濆鍖栨柟娉曘�愮鏈夈�� + */ + private void init(){ + if (group == 0 || size%group != 0) { + throw new RuntimeException("shelves init fail!"); + } + nodes = new ArrayList<>(); + for (int g = 1; g <= this.group; g++){ + int unit = size/group; + List<Integer> node = new ArrayList<>(); + for (int i = (g-1)*unit+1+offset ; i <= g*unit+offset; i++){ + node.add(i); + } + nodes.add(node); + } + } + + /** + * 寮�濮嬭绠� =======>>> + * + * 璐ф灦鍛戒腑瑙勫垯濡備笅锛� + * 瀹夎浣嶇疆锛� [1] [2] | [3] [4] -------- [5] [6] | [7] [8] + * 鍛戒腑椤哄簭锛� 1 -> 5 -> 4 -> 8 -> 2 -> 6 -> 3 -> 7 -> 1 ... + * + * 1.璇ヨ鍒欓�備笉闄愬埗璐ф灦鏁伴噺锛屾�绘暟涓庣粍鍒湪鏋勯�犲櫒涓缃� + * 2.濡傛湁搴忓垪鍙疯捣濮嬮棶棰橈紝鐢ㄥ亸绉婚噺瑙勯伩鍗冲彲 + * + * @param curSeq 褰撳墠璐ф灦鍙� + * @return 瑙勫垯鍛戒腑璐ф灦鍙� + */ + public int start(int curSeq){ + Iterator<List<Integer>> iterator = nodes.iterator(); + while (iterator.hasNext()){ + List<Integer> node = iterator.next(); + if (node.contains(curSeq)) { + int idx = node.indexOf(curSeq); + // 鏄惁涓烘湯灏捐揣鏋� + if (iterator.hasNext()) { + return iterator.next().get(idx); + } else { + List<Integer> first = nodes.get(0); + int val = first.get(idx); + int res = size / group + 1 + offset - val; + // 鍙嶅悜鍛戒腑璐ф灦鏃朵笉鍐嶆槸瀵圭珛涓嬫爣锛堢浉瀵逛簬宸烽亾锛� + if (res < val) { + // 杞鎵�鏈夎揣鏋跺悗閲嶆柊寮�濮嬪畾浣� + if (val - res - offset == 1) { + return first.get(0); + } + res = res + 1; + } + return res + offset; + } + } + } + return -1; + } + + public Integer get(Integer curRow) { + for (List<Integer> node : nodes){ + if (node.contains(curRow)) { + return nodes.indexOf(node) + 1; + } + } + throw new CoolException("璐ф帓妫�绱㈢郴缁熸姤閿欙紝 node:" + JSON.toJSONString(nodes) + ", curRow:" + curRow); + } + + public static void main(String[] args) throws InterruptedException { + + double remainder = Arith.divides(1,16 - 1, 16); + System.out.println(remainder); + System.out.println((int) remainder); +// Shelves shelves = new Shelves(8,2); +// System.out.println(shelves.nodes.toString()); +// int start = 1; +// while (true) { +// System.out.println(start); +// start = shelves.start(start); +// Thread.sleep(500L); +// } + } + +} + -- Gitblit v1.9.1