From 1995bf7ac28f2648bd157692bf2f531ea1f6b6c9 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期三, 14 一月 2026 08:02:17 +0800
Subject: [PATCH] #地图初始化
---
src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java | 11 +
src/main/webapp/views/report/viewLocMap.html | 29 ++++-
src/main/webapp/static/js/report/locMap.js | 120 ++++++++++++++---------
src/main/java/com/zy/asrs/entity/ViewLocMapDto.java | 8 +
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 2
src/main/resources/application.yml | 10 +
src/main/java/com/zy/asrs/controller/ReportQueryController.java | 94 +++++++++++++++---
7 files changed, 192 insertions(+), 82 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/ReportQueryController.java b/src/main/java/com/zy/asrs/controller/ReportQueryController.java
index dc4f4ee..249a359 100644
--- a/src/main/java/com/zy/asrs/controller/ReportQueryController.java
+++ b/src/main/java/com/zy/asrs/controller/ReportQueryController.java
@@ -19,6 +19,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
/**
* 鏃ュ織缁熻鎺у埗鍣ㄥ眰
@@ -93,28 +94,83 @@
public R queryViewLocMapRows(){
return R.ok().add(reportQueryMapper.getViewLocRowTotal());
}
+ @RequestMapping("/viewLocMapList/layers.action")
+ public R queryViewLocMapLevs(){
+ return R.ok().add(reportQueryMapper.getViewLocLevTotal());
+ }
@RequestMapping("/viewLocMapList.action")
- public R queryViewLocMapListByPages(@RequestParam(defaultValue = "0")Integer row){
- // 鑾峰彇鎺掔骇鏁版嵁
- // 琛ㄦ牸鏍囬锛氬垪 ===>> 鍗囧簭
- List<String> bays = reportQueryMapper.getViewLocBayCount(row);
- // 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
- bays.add(0, "");
- // 琛ㄦ牸琛岋細灞� ====>> 鍊掑簭
- List<String> levs = reportQueryMapper.getViewLocLevCount(row);
- List<Map<String, Object>> body = new ArrayList<>();
- for (String lev : levs){
- // 鑾峰彇灞傜骇鏁版嵁
- List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev));
- // 锛佽〃鏍肩涓�鍒楁斁灞傜骇鏁�
- dtos.add(0, new ViewLocMapDto(null ,null, lev));
- Map<String, Object> map = new HashMap<>();
- map.put("loc", dtos);
- body.add(map);
- }
+ public R queryViewLocMapListByPages(
+ @RequestParam(required = false, defaultValue = "0") Integer row,
+ @RequestParam(required = false) Integer layer) {
+
Map<String, Object> result = new HashMap<>();
- result.put("title", bays);
+ List<String> title = new ArrayList<>();
+ List<Map<String, Object>> body = new ArrayList<>();
+
+ if (layer != null && layer > 0) {
+ // 鈹�鈹� 鎸夊眰鏄剧ず鎵�鏈夋帓 脳 鎵�鏈夊垪 鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+
+ // 1. 琛ㄥご锛氭墍鏈� bay
+ List<String> allBays = reportQueryMapper.getAllBays(); // 鎴栫敓鎴� 1 鍒� maxBay
+ title.add(""); // 绗竴鍒楁斁鎺掑彿
+ title.addAll(allBays);
+
+ // 2. 鑾峰彇璇ュ眰鎵�鏈夊簱浣�
+ List<ViewLocMapDto> locs = reportQueryMapper.getLocMapByLayer(layer);
+
+ // 3. 鎸� row 鍒嗙粍锛堟帹鑽愮敤 Map 鎴� Stream 鍒嗙粍锛�
+ Map<Integer, List<ViewLocMapDto>> rowMap = locs.stream()
+ .collect(Collectors.groupingBy(ViewLocMapDto::getRow1));
+
+ // 4. 閬嶅巻鎵�鏈夋帓锛岀敓鎴愭瘡涓�琛�
+ List<Integer> allRows = reportQueryMapper.getAllRows();
+ for (Integer currentRow : allRows) {
+ List<ViewLocMapDto> rowData = rowMap.getOrDefault(currentRow, new ArrayList<>());
+
+ // 鎸� bay 鎺掑簭骞惰ˉ榻愮┖浣�
+ Map<Integer, ViewLocMapDto> bayMap = rowData.stream()
+ .collect(Collectors.toMap(ViewLocMapDto::getBay1, d -> d));
+
+ List<ViewLocMapDto> line = new ArrayList<>();
+ // 绗竴鍒楋細鎺掑彿
+ line.add(new ViewLocMapDto(null, null, String.valueOf(currentRow)));
+
+ // 濉厖鎵�鏈� bay
+ for (String bayStr : allBays) {
+ int bay = Integer.parseInt(bayStr);
+ ViewLocMapDto dto = bayMap.get(bay);
+ if (dto != null) {
+ line.add(dto);
+ } else {
+ // 鏃犲簱浣� 鈫� 琛ョ┖
+ line.add(new ViewLocMapDto(null, 0, null)); // 鎴栬嚜瀹氫箟绌虹姸鎬�
+ }
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("loc", line);
+ body.add(map);
+ }
+ }
+ else {
+ // 鈹�鈹� 鎸夋帓妯″紡锛堝師鏈夐�昏緫锛� 鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�鈹�
+ title = reportQueryMapper.getViewLocBayCount(row);
+ title.add(0, "");
+
+ List<String> levs = reportQueryMapper.getViewLocLevCount(row);
+ body = new ArrayList<>();
+
+ for (String lev : levs) {
+ List<ViewLocMapDto> dtos = reportQueryMapper.getViewLocBays(row, Integer.parseInt(lev));
+ dtos.add(0, new ViewLocMapDto(null, null, lev));
+ Map<String, Object> map = new HashMap<>();
+ map.put("loc", dtos);
+ body.add(map);
+ }
+ }
+
+ result.put("title", title);
result.put("body", body);
return R.ok(result);
}
diff --git a/src/main/java/com/zy/asrs/entity/ViewLocMapDto.java b/src/main/java/com/zy/asrs/entity/ViewLocMapDto.java
index 6142f8c..31adb7e 100644
--- a/src/main/java/com/zy/asrs/entity/ViewLocMapDto.java
+++ b/src/main/java/com/zy/asrs/entity/ViewLocMapDto.java
@@ -15,6 +15,8 @@
private String bgc = "#fff";
// 瀛椾綋棰滆壊
private String color = "#666";
+ private Integer row1;
+ private Integer lev1;
public ViewLocMapDto() {
}
@@ -36,6 +38,12 @@
public Integer getBay1() {
return bay1;
}
+ public Integer getRow1() {
+ return row1;
+ }
+ public Integer getLev1() {
+ return lev1;
+ }
public void setBay1(Integer bay1) {
this.bay1 = bay1;
diff --git a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
index bc7ecf5..56fdfbf 100644
--- a/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/ReportQueryMapper.java
@@ -27,6 +27,9 @@
// // 搴撲綅Map
@Select("select distinct row1 from asr_loc_mast order by row1 asc")
List<Integer> getViewLocRowTotal();
+ // // 搴撲綅Map
+ @Select("select distinct lev1 from asr_loc_mast order by lev1 asc")
+ List<Integer> getViewLocLevTotal();
@Select("select distinct lev1 from asr_loc_mast where row1=#{row1} order by lev1 desc")
public List<String> getViewLocLevCount(@Param("row1") int row1);
@@ -37,11 +40,15 @@
// 搴撲綅Map
@Select("select distinct bay1 from asr_loc_mast where row1=#{row1} order by bay1")
public List<String> getViewLocBayCount(@Param("row1") int row1);
-
@Select("select lev1,loc_sts as locSts from asr_loc_mast where row1=#{row1} and bay1=#{bay1} order by bay1")
public List<ViewLocMapDto> getViewLocLevs(@Param("row1") int row1, @Param("bay1") int bay1);
+ @Select("SELECT DISTINCT row1 FROM asr_loc_mast ORDER BY row1 ASC")
+ List<Integer> getAllRows();
+ @Select("SELECT DISTINCT bay1 FROM asr_loc_mast ORDER BY bay1 ASC")
+ List<String> getAllBays();
-
+ @Select("SELECT row1,lev1,bay1,loc_no as locNo,loc_sts as locSts FROM asr_loc_mast WHERE lev1 = #{layer} ORDER BY row1 ASC, bay1 ASC")
+ List<ViewLocMapDto> getLocMapByLayer(@Param("layer") Integer layer);
//鍒嗛〉鏌ヨ绔欑偣鍏ュ嚭搴撴鏁扮粺璁�
public List<ViewInOutBean> queryViewInOutList(ViewInOutBean viewInOut);
public int getViewInOutCount(ViewInOutBean viewInOut);
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 d1c5351..08ba104 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -255,7 +255,7 @@
// 璁$畻浼樺厛绾�
dto.setPriority(priority);
- priority--; // 涓嬩竴涓换鍔′紭鍏堢骇閫掑
+ priority--;
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectById(dto.getLocNo());
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 56e7370..c5963c1 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -55,10 +55,12 @@
#groupCount: 4
# 鐢辨祬鍏ユ繁
locGroupAscOrder: [
- {rowList: [6,5,4,3,2,1],minBay: 33,maxBay: 49},
- {rowList: [8],minBay: 33,maxBay: 49},
-# {rowList: [7],minBay: 33,maxBay: 49},
-# {rowList: [8,9,10,11,12,13],minBay: 33,maxBay: 49},
+ {rowList: [1],minBay: 1,maxBay: 75},
+ {rowList: [3,4,5,6],minBay: 1,maxBay: 75},
+ {rowList: [10,9,8,7],minBay: 1,maxBay: 75},
+ {rowList: [12,13,14,15],minBay: 1,maxBay: 75},
+ {rowList: [18,17,16],minBay: 1,maxBay: 75},
+ {rowList: [20],minBay: 1,maxBay: 75},
]
#鏄惁寮�鍚痺ms涓嬪彂浠诲姟缁檞cs
workIssued-fig : false
diff --git a/src/main/webapp/static/js/report/locMap.js b/src/main/webapp/static/js/report/locMap.js
index 268a7f3..205cd7d 100644
--- a/src/main/webapp/static/js/report/locMap.js
+++ b/src/main/webapp/static/js/report/locMap.js
@@ -1,14 +1,17 @@
-layui.use(['table','laydate', 'form'], function(){
+layui.use(['table', 'laydate', 'form'], function(){
var $ = layui.jquery;
var layer = layui.layer;
var form = layui.form;
- getLocMapRows();
- getLocTable(1);
+ // 鍒濆鍔犺浇
+ loadRowsOptions(); // 鍔犺浇銆屾帓銆嶉�夐」锛堝缁堥渶瑕侊級
+ loadLayersOptions(); // 鍔犺浇銆屽眰銆嶉�夐」锛堟彁鍓嶅噯澶囷級
+ getLocTable('byRow', 1); // 榛樿鎸夋帓 + 绗�1鎺�
- function getLocMapRows() {
+ // 鍔犺浇鎵�鏈夊彲鐢ㄦ帓
+ function loadRowsOptions() {
$.ajax({
- url: baseUrl+"/report/viewLocMapList/rows.action",
+ url: baseUrl + "/report/viewLocMapList/rows.action",
headers: {'token': localStorage.getItem('token')},
method: 'POST',
async: false,
@@ -16,70 +19,91 @@
if (res.code === 200) {
var tpl = $("#locMastRowTemplate").html();
var template = Handlebars.compile(tpl);
- var html = template(res);
- $('#rowSelect').append(html);
+ $('#rowSelect').append(template(res));
form.render('select');
} else if (res.code === 403) {
- top.location.href = baseUrl+"/";
- } else {
- layer.msg(res.msg)
+ top.location.href = baseUrl + "/";
}
}
});
}
- function getLocTable(row){
+ // 鍔犺浇鎵�鏈夊彲鐢ㄥ眰锛堥渶瑕佸悗绔敮鎸佹柊鎺ュ彛锛�
+ function loadLayersOptions() {
$.ajax({
- url: baseUrl+"/report/viewLocMapList.action",
+ url: baseUrl + "/report/viewLocMapList/layers.action", // 鈫� 闇�瑕佹柊澧炴帴鍙�
headers: {'token': localStorage.getItem('token')},
- data: {row: row},
+ method: 'POST',
+ async: false,
+ success: function (res) {
+ if (res.code === 200) {
+ var tpl = $("#locMastRowTemplate").html(); // 澶嶇敤妯℃澘
+ var template = Handlebars.compile(tpl);
+ $('#layerSelect').append(template(res));
+ form.render('select');
+ }
+ }
+ });
+ }
+
+ // 鏍稿績锛氭牴鎹ā寮忓姞杞藉簱浣嶈〃
+ function getLocTable(mode, value) {
+ var url = baseUrl + "/report/viewLocMapList.action";
+ var data = {};
+
+ if (mode === 'byRow') {
+ data.row = value;
+ } else if (mode === 'byLayer') {
+ data.layer = value;
+ }
+ $.ajax({
+ url: url,
+ headers: {'token': localStorage.getItem('token')},
+ data: data,
method: 'POST',
success: function (res) {
if (res.code === 200) {
var tpl = $("#locMapTemplate").html();
var template = Handlebars.compile(tpl);
- var html = template(res.data);
- $('#locMap').html(html);
+ $('#locMap').html(template(res.data));
} else if (res.code === 403) {
- top.location.href = baseUrl+"/";
+ top.location.href = baseUrl + "/";
} else {
- layer.msg(res.msg)
+ layer.msg(res.msg || '鍔犺浇澶辫触');
}
}
});
}
- form.on('select(row)', function (data) {
- getLocTable(data.value);
+ // 鐩戝惉 鏄剧ず妯″紡 鍒囨崲
+ form.on('select(viewMode)', function (data) {
+ var mode = data.value;
+
+ if (mode === 'byRow') {
+ $('#rowSelectBox').show();
+ $('#layerSelectBox').hide();
+ // 璇诲彇褰撳墠閫変腑鐨勬帓
+ var currentRow = $('#rowSelect').val() || 1;
+ getLocTable('byRow', currentRow);
+ } else if (mode === 'byLayer') {
+ $('#rowSelectBox').hide();
+ $('#layerSelectBox').show();
+ var currentLayer = $('#layerSelect').val() || 1;
+ getLocTable('byLayer', currentLayer);
+ }
});
-});
-var locNo = '';
-function locDetl(el) {
- var value = $(el).attr('title');
- var html = $(el).html();
- if (value===null
- ||value === undefined
- || value.trim()===''
- || html.trim()==='S'
- || html.trim()==='D'
- || html.trim()==='O'
- || html.trim()==='Z'
+ // 鐩戝惉 鎺� 鍙樺寲
+ form.on('select(row)', function (data) {
+ if ($('#viewMode').val() === 'byRow') {
+ getLocTable('byRow', data.value);
+ }
+ });
- ){
-
- } else {
- layer.open({
- type: 2,
- title: '搴撲綅鐗╂枡',
- maxmin: true,
- area: [top.detailWidth, top.detailHeight],
- shadeClose: true,
- content: 'locDetl.html',
- success: function(layero, index){
- locNo = value;
- }
- });
- }
-}
-
+ // 鐩戝惉 灞� 鍙樺寲
+ form.on('select(layer)', function (data) {
+ if ($('#viewMode').val() === 'byLayer') {
+ getLocTable('byLayer', data.value);
+ }
+ });
+});
\ No newline at end of file
diff --git a/src/main/webapp/views/report/viewLocMap.html b/src/main/webapp/views/report/viewLocMap.html
index 46c23fd..34bcfcb 100644
--- a/src/main/webapp/views/report/viewLocMap.html
+++ b/src/main/webapp/views/report/viewLocMap.html
@@ -56,16 +56,29 @@
<!-- 鎼滅储鏍� -->
<div id="search-box" class="layui-form layui-card-header">
<div class="layui-inline" style="margin-left: 10px">
+ <label class="layui-form-label" style="width:80px">鏄剧ず妯″紡</label>
+ <div class="layui-input-inline" style="width:120px;">
+ <select id="viewMode" name="viewMode" lay-filter="viewMode">
+ <option value="byRow">鎸夋帓鏄剧ず</option>
+ <option value="byLayer">鎸夊眰鏄剧ず</option>
+ </select>
+ </div>
+ </div>
+
+ <!-- 鎸夋帓鏃剁殑涓嬫媺妗嗭紙榛樿鏄剧ず锛� -->
+ <div class="layui-inline" id="rowSelectBox" style="margin-left: 20px;">
<div class="layui-input-inline">
<select id="rowSelect" name="row" lay-filter="row">
-<!-- <option value="1">绗�1鎺�</option>-->
-<!-- <option value="2">绗�2鎺�</option>-->
-<!-- <option value="3">绗�3鎺�</option>-->
-<!-- <option value="4">绗�4鎺�</option>-->
-<!-- <option value="5">绗�5鎺�</option>-->
-<!-- <option value="6">绗�6鎺�</option>-->
-<!-- <option value="7">绗�7鎺�</option>-->
-<!-- <option value="8">绗�8鎺�</option>-->
+ <!-- 閫夐」鐢眏s鍔ㄦ�佺敓鎴� -->
+ </select>
+ </div>
+ </div>
+
+ <!-- 鎸夊眰鏃剁殑涓嬫媺妗嗭紙鍒濆闅愯棌锛� -->
+ <div class="layui-inline" id="layerSelectBox" style="margin-left: 20px; display:none;">
+ <div class="layui-input-inline">
+ <select id="layerSelect" name="layer" lay-filter="layer">
+ <!-- 閫夐」鐢眏s鍔ㄦ�佺敓鎴� -->
</select>
</div>
</div>
--
Gitblit v1.9.1