Browse Source

优化库位物料映射查看

lwx_dev
erdanergou 3 years ago
parent
commit
de14881ca9
  1. 35
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  2. 10
      src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java
  3. 18
      src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java
  4. 5
      src/main/java/com/dreamchaser/depository_manage/entity/SplitInventory.java
  5. 5
      src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java
  6. 7
      src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml
  7. 3
      src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java
  8. 4
      src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java
  9. 8
      src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java
  10. 61
      src/main/resources/templates/pages/place/materialForPlace.html
  11. 46
      src/main/resources/templates/pages/warehouse/warehouseByParentId.html
  12. 7
      target/classes/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml
  13. 46
      target/classes/templates/pages/warehouse/warehouseByParentId.html

35
src/main/java/com/dreamchaser/depository_manage/controller/PageController.java

@ -2273,6 +2273,12 @@ public class PageController {
} }
/**
* 用于跳转到打印页面
* @param mid 打印id
* @param flag 标志位
* @return
*/
@GetMapping("/printCode") @GetMapping("/printCode")
public ModelAndView printCode(int mid, int flag) { public ModelAndView printCode(int mid, int flag) {
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
@ -2321,4 +2327,33 @@ public class PageController {
return mv; return mv;
} }
/**
* 用于查看当前库位该物料的库存
* @param id 库位id
* @return
*/
@GetMapping("/materialForPlace")
public ModelAndView materialForPlace(Integer id){
ModelAndView mv = new ModelAndView();
mv.setViewName("pages/place/materialForPlace");
// 获取当前的映射
MaterialAndPlace placeAndMaterial = placeService.findPlaceAndMaterialById(id);
// 获取库存记录
Inventory inventoryById = materialService.findInventoryById(placeAndMaterial.getMid());
// 获取当前所有拆单库存记录
List<SplitInfo> splitInfoByMid = splitUnitService.findSplitInfoByMid(inventoryById.getMid());
List<SplitInventory> splitInventoryByIid = new ArrayList<>();
for (SplitInfo splitInfo:
splitInfoByMid) {
SplitInventory splitInventory = splitUnitService.findSplitInventoryByIidAndSid(placeAndMaterial.getId(), splitInfo.getId());
splitInventory.setSplitInfo(splitInfo);
splitInventoryByIid.add(splitInventory);
}
mv.addObject("record",placeAndMaterial);
mv.addObject("inventory",inventoryById);
mv.addObject("splitInventoryList",splitInventoryByIid);
return mv;
}
} }

10
src/main/java/com/dreamchaser/depository_manage/controller/PlaceController.java

@ -43,8 +43,7 @@ public class PlaceController {
public RestResponse findMaterial(@RequestParam Map<String, Object> map) { public RestResponse findMaterial(@RequestParam Map<String, Object> map) {
List<Place> placeByCondition = placeService.findPlaceByCondition(map); List<Place> placeByCondition = placeService.findPlaceByCondition(map);
List<PlaceP> placePList = new ArrayList<>(); List<PlaceP> placePList = new ArrayList<>();
for (int i = 0; i < placeByCondition.size(); i++) { for (Place place : placeByCondition) {
Place place = placeByCondition.get(i);
PlaceP placeP = new PlaceP(place); PlaceP placeP = new PlaceP(place);
Integer depositoryId = place.getDid(); Integer depositoryId = place.getDid();
Depository depositoryById = depositoryService.findDepositoryById(depositoryId); Depository depositoryById = depositoryService.findDepositoryById(depositoryId);
@ -54,11 +53,12 @@ public class PlaceController {
placeAndMaterialByPid = new ArrayList<>(); placeAndMaterialByPid = new ArrayList<>();
} }
StringBuilder mname = new StringBuilder(); StringBuilder mname = new StringBuilder();
for (int j = 0; j < placeAndMaterialByPid.size(); j++) { for (MaterialAndPlace materialAndPlace : placeAndMaterialByPid) {
Integer mid = placeAndMaterialByPid.get(j).getMid(); Integer mid = materialAndPlace.getMid();
Inventory materialById = materialService.findInventoryById(mid); Inventory materialById = materialService.findInventoryById(mid);
mname.append(materialById.getMname()+","); mname.append(materialById.getMname()).append(",");
} }
placeP.setMaterialAndPlaceList(placeAndMaterialByPid);
placeP.setMname(mname.toString()); placeP.setMname(mname.toString());
if (depositoryById != null) { if (depositoryById != null) {
placeP.setDepositoryName(depositoryById.getDname()); placeP.setDepositoryName(depositoryById.getDname());

18
src/main/java/com/dreamchaser/depository_manage/controller/SplitController.java

@ -3,6 +3,7 @@ package com.dreamchaser.depository_manage.controller;
import com.dreamchaser.depository_manage.entity.Inventory; import com.dreamchaser.depository_manage.entity.Inventory;
import com.dreamchaser.depository_manage.entity.SplitInfo; import com.dreamchaser.depository_manage.entity.SplitInfo;
import com.dreamchaser.depository_manage.entity.SplitInventory;
import com.dreamchaser.depository_manage.exception.MyException; import com.dreamchaser.depository_manage.exception.MyException;
import com.dreamchaser.depository_manage.pojo.RestResponse; import com.dreamchaser.depository_manage.pojo.RestResponse;
import com.dreamchaser.depository_manage.pojo.StatusInfo; import com.dreamchaser.depository_manage.pojo.StatusInfo;
@ -46,6 +47,23 @@ public class SplitController {
} }
/**
* 用于查找当前库存的拆单记录
* @param map
* @return
*/
@PostMapping("/findSplitInventoryByIid")
public RestResponse findSplitInventoryByIid(@RequestBody Map<String, Object> map){
if (map.containsKey("iid") ) {
Integer iid = ObjectFormatUtil.toInteger(map.get("iid"));
List<SplitInventory> splitInventoryByIid = splitUnitService.findSplitInventoryByIid(iid);
return new RestResponse(splitInventoryByIid);
} else {
throw new MyException("缺少必要参数");
}
}
/** /**
* 用于根据条件查询拆单记录 * 用于根据条件查询拆单记录
* *

5
src/main/java/com/dreamchaser/depository_manage/entity/SplitInventory.java

@ -31,4 +31,9 @@ public class SplitInventory {
* 入库后剩余的数量 * 入库后剩余的数量
*/ */
private Integer saveQuantity; private Integer saveQuantity;
/**
* 当前拆单的单位
*/
private SplitInfo splitInfo;
} }

5
src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.java

@ -148,6 +148,11 @@ public interface PlaceMapper {
*/ */
MaterialAndPlace findPlaceAndMaterialByMidAndPid(Map<String,Object> map); MaterialAndPlace findPlaceAndMaterialByMidAndPid(Map<String,Object> map);
/**
* 根据id获取物料与库位的映射
*/
MaterialAndPlace findPlaceAndMaterialById(Integer id);
/** /**
* 修改当前库位存放物料信息 * 修改当前库位存放物料信息
* @param map * @param map

7
src/main/java/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml

@ -234,6 +234,13 @@
and mp.pid = #{pid} and mp.pid = #{pid}
</if> </if>
</select> </select>
<select id="findPlaceAndMaterialById" resultMap="materialAndPlaceMap" parameterType="int">
SELECT
<include refid="allColumnsByMaterialAndPlace" />
FROM materialandplace mp left join place p on p.id = mp.pid
where mp.id = #{id}
</select>
<!-- 新增信息 --> <!-- 新增信息 -->
<insert id="InsertPlace"> <insert id="InsertPlace">

3
src/main/java/com/dreamchaser/depository_manage/pojo/PlaceP.java

@ -78,6 +78,9 @@ public class PlaceP {
private List<String> mcodeList; private List<String> mcodeList;
private List<MaterialAndPlace> materialAndPlaceList;
public PlaceP(Integer id, Integer x, Integer y, Integer z, Integer mid, Integer did, String code, Integer min, Integer max, Integer state, String mname, String mcode, String depositoryCode, String depositoryName) { public PlaceP(Integer id, Integer x, Integer y, Integer z, Integer mid, Integer did, String code, Integer min, Integer max, Integer state, String mname, String mcode, String depositoryCode, String depositoryName) {
this.id = id; this.id = id;
this.x = x; this.x = x;

4
src/main/java/com/dreamchaser/depository_manage/service/PlaceService.java

@ -120,6 +120,10 @@ public interface PlaceService {
* 根据当前库位编号及物料编号获取具体库位 * 根据当前库位编号及物料编号获取具体库位
*/ */
MaterialAndPlace findPlaceAndMaterialByMidAndPid(Integer pid,Integer mid); MaterialAndPlace findPlaceAndMaterialByMidAndPid(Integer pid,Integer mid);
/**
* 根据id获取物料与库位的映射
*/
MaterialAndPlace findPlaceAndMaterialById(Integer id);
/** /**
* 添加物料到库位 * 添加物料到库位

8
src/main/java/com/dreamchaser/depository_manage/service/impl/PlaceServiceImpl.java

@ -250,6 +250,14 @@ public class PlaceServiceImpl implements PlaceService {
return placeMapper.findPlaceAndMaterialByMidAndPid(map); return placeMapper.findPlaceAndMaterialByMidAndPid(map);
} }
/**
* 根据id获取物料与库位的映射
*/
@Override
public MaterialAndPlace findPlaceAndMaterialById(Integer id) {
return placeMapper.findPlaceAndMaterialById(id);
}
/** /**
* 添加物料到库位 * 添加物料到库位
* @param map * @param map

61
src/main/resources/templates/pages/place/materialForPlace.html

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>layui</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<link rel="stylesheet" href="/static/lib/layui-v2.6.3/css/layui.css" media="all">
<link rel="stylesheet" href="/static/css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
<div class="layuimini-main">
<div class="layui-fluid">
<div class="layui-card">
<div class="layui-card-body" style="padding-top: 40px;">
<div id="stepForm" lay-filter="stepForm" style="margin: 0 auto;">
<div style="margin-top: 30px">
<table id="demo" class="layui-table"
style="margin: 0 auto;max-width: 800px;padding-top: 40px;">
<colgroup>
<col width="150">
<col width="200">
</colgroup>
<tbody>
<tr>
<td>物料名称</td>
<td id="materialName" th:text="${inventory.getMname()}">骁龙888芯片</td>
</tr>
<tr>
<td>存货编码</td>
<td id="mcode" th:text="${inventory.getCode()}"></td>
</tr>
<tr>
<td>库存</td>
<td id="quantity" th:text="${record.getQuantity()+':'+inventory.getUnit()}">409</td>
</tr>
<tr th:each="splitInventory,iterStar: ${splitInventoryList}">
<td>库存</td>
<td th:text="${splitInventory.getSaveQuantity()+':'+splitInventory.getSplitInfo().getNewUnit()}">409</td>
</tr>
<tr>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script src="/static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script>
</script>
</body>
</html>

46
src/main/resources/templates/pages/warehouse/warehouseByParentId.html

@ -90,6 +90,10 @@
</div> </div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script> <script>
function viewInfoForInventory(){
}
layui.use(['form', 'table'], function () { layui.use(['form', 'table'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
@ -125,20 +129,32 @@
cols: [ cols: [
[ [
{type: "checkbox", width: 50}, {type: "checkbox", width: 50},
{field: 'code', width: 120, title: '库位号', sort: true}, {field: 'code', width: 100, title: '库位号', sort: true},
{field: 'mname', width: 200, title: '物料名称'}, {title: '物料名称', minWidth: 350, templet: '#viewMname', align: "center"},
// {field: 'mname', width: 200, title: '物料名称'},
{field: 'depositoryName', width: 200, title: '仓库名称'}, {field: 'depositoryName', width: 200, title: '仓库名称'},
{field: 'depositoryCode', width: 200, title: '仓库编码'}, {field: 'depositoryCode', width: 200, title: '仓库编码'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'}, {field: 'state', title: '状态', width: 100, templet: '#switchTpl'},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} {title: '操作', width: 150, toolbar: '#currentTableBar', align: "center"}
] ]
], ],
limits: [10, 15, 20, 25, 50,100], limits: [10, 15, 20, 25, 50,100],
limit: 10, limit: 10,
page: true, page: true,
skin: 'line', skin: 'line',
done: function () { done: function (res, curr, count) {
$("[data-field='id']").css('display', 'none'); $.each(res['data'], function (i, j) {
let materialAndPlaceList = j["materialAndPlaceList"];
let mnameList = j["mname"].split(",");
var mnameItem = $("[lay-id='currentTableId'] tr:eq(" + (i + 1) + ")").children()[2];
//计量单位
// 用于库位的添加
var aItem = mnameItem.childNodes[0];
// 用于计量单位的添加
for (let k = 0; k < materialAndPlaceList.length; k++) {
$(aItem).append('<button class="layui-btn layui-btn-primary layui-btn-xs" onclick="viewInfoForInventory(this)" value=' + materialAndPlaceList[k].id + '>' + mnameList[k] + '</button>')
}
})
} }
}); });
@ -152,7 +168,7 @@
if (data.place_z !== '') { if (data.place_z !== '') {
req.place_x = data.place_z; req.place_x = data.place_z;
} }
if (data.state != '') { if (data.state !== '') {
req.state = data.state; req.state = data.state;
} }
req.did = parentId; req.did = parentId;
@ -343,6 +359,22 @@
}) })
}); });
viewInfoForInventory = function (obj) {
let id = obj.value;
var index = layer.open({
title: '具体信息',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/materialForPlace?id=' + id
});
$(window).on("resize", function () {
layer.full(index);
});
};
}); });
</script> </script>

7
target/classes/com/dreamchaser/depository_manage/mapper/PlaceMapper.xml

@ -234,6 +234,13 @@
and mp.pid = #{pid} and mp.pid = #{pid}
</if> </if>
</select> </select>
<select id="findPlaceAndMaterialById" resultMap="materialAndPlaceMap" parameterType="int">
SELECT
<include refid="allColumnsByMaterialAndPlace" />
FROM materialandplace mp left join place p on p.id = mp.pid
where mp.id = #{id}
</select>
<!-- 新增信息 --> <!-- 新增信息 -->
<insert id="InsertPlace"> <insert id="InsertPlace">

46
target/classes/templates/pages/warehouse/warehouseByParentId.html

@ -90,6 +90,10 @@
</div> </div>
<script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script> <script src="/static/lib/layui-v2.6.3/layui.js" charset="utf-8"></script>
<script> <script>
function viewInfoForInventory(){
}
layui.use(['form', 'table'], function () { layui.use(['form', 'table'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
@ -125,20 +129,32 @@
cols: [ cols: [
[ [
{type: "checkbox", width: 50}, {type: "checkbox", width: 50},
{field: 'code', width: 120, title: '库位号', sort: true}, {field: 'code', width: 100, title: '库位号', sort: true},
{field: 'mname', width: 200, title: '物料名称'}, {title: '物料名称', minWidth: 350, templet: '#viewMname', align: "center"},
// {field: 'mname', width: 200, title: '物料名称'},
{field: 'depositoryName', width: 200, title: '仓库名称'}, {field: 'depositoryName', width: 200, title: '仓库名称'},
{field: 'depositoryCode', width: 200, title: '仓库编码'}, {field: 'depositoryCode', width: 200, title: '仓库编码'},
{field: 'state', title: '状态', minWidth: 80, templet: '#switchTpl'}, {field: 'state', title: '状态', width: 100, templet: '#switchTpl'},
{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"} {title: '操作', width: 150, toolbar: '#currentTableBar', align: "center"}
] ]
], ],
limits: [10, 15, 20, 25, 50,100], limits: [10, 15, 20, 25, 50,100],
limit: 10, limit: 10,
page: true, page: true,
skin: 'line', skin: 'line',
done: function () { done: function (res, curr, count) {
$("[data-field='id']").css('display', 'none'); $.each(res['data'], function (i, j) {
let materialAndPlaceList = j["materialAndPlaceList"];
let mnameList = j["mname"].split(",");
var mnameItem = $("[lay-id='currentTableId'] tr:eq(" + (i + 1) + ")").children()[2];
//计量单位
// 用于库位的添加
var aItem = mnameItem.childNodes[0];
// 用于计量单位的添加
for (let k = 0; k < materialAndPlaceList.length; k++) {
$(aItem).append('<button class="layui-btn layui-btn-primary layui-btn-xs" onclick="viewInfoForInventory(this)" value=' + materialAndPlaceList[k].id + '>' + mnameList[k] + '</button>')
}
})
} }
}); });
@ -152,7 +168,7 @@
if (data.place_z !== '') { if (data.place_z !== '') {
req.place_x = data.place_z; req.place_x = data.place_z;
} }
if (data.state != '') { if (data.state !== '') {
req.state = data.state; req.state = data.state;
} }
req.did = parentId; req.did = parentId;
@ -343,6 +359,22 @@
}) })
}); });
viewInfoForInventory = function (obj) {
let id = obj.value;
var index = layer.open({
title: '具体信息',
type: 2,
shade: 0.2,
maxmin: true,
shadeClose: true,
area: ['100%', '100%'],
content: '/materialForPlace?id=' + id
});
$(window).on("resize", function () {
layer.full(index);
});
};
}); });
</script> </script>

Loading…
Cancel
Save