From 87bf4d9932d7e0a12daa98990f08d70e54e01d66 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期四, 27 五月 2021 14:56:27 +0800
Subject: [PATCH] #
---
src/main/webapp/views/pda/pakout.html | 340 ++++++++++++++++++++++++++++++++++++++++++++++++
src/main/java/zy/cloud/wms/manager/controller/WorkController.java | 6
src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java | 56 ++++++++
src/main/java/zy/cloud/wms/manager/service/WorkService.java | 2
4 files changed, 404 insertions(+), 0 deletions(-)
diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
index 6cc673a..5968a24 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -44,6 +44,12 @@
return workService.stockPakin(number, getUserId());
}
+ @RequestMapping("/stock/pakout")
+ @ManagerAuth(memo = "鍑哄簱")
+ public R stockPakout(@RequestBody PakoutParam number) {
+ return workService.stockPakout(number, getUserId());
+ }
+
@RequestMapping("/stock/in")
@ManagerAuth(memo = "涓婃灦")
public R stockIn(@RequestBody StockInParam stockInParam) {
diff --git a/src/main/java/zy/cloud/wms/manager/service/WorkService.java b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
index 85a45ea..a6b41ff 100644
--- a/src/main/java/zy/cloud/wms/manager/service/WorkService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -9,6 +9,8 @@
R stockPakin(PakinParam param, Long userId);
+ R stockPakout(PakoutParam param, Long userId);
+
R stockIn(StockInParam param, Long userId);
R stockOutCheck(String number, Long userId);
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index c7b9c42..8ebcfdf 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -137,6 +137,62 @@
@Override
@Transactional
+ public R stockPakout(PakoutParam param, Long userId) {
+ Mat mat = matService.selectByMatnr(param.getMatnr());
+ Node node = nodeService.selectByUuid(param.getNodeUuid());
+ LocDetl locDetl = locDetlService.getLocDetl(node.getId(), mat.getMatnr());
+ if (locDetl == null || locDetl.getAnfme() < param.getCount()) {
+ return R.error(mat.getMaktx() + "搴撳瓨涓嶈冻");
+ }
+ Pakout pakout = new Pakout(
+ String.valueOf(snowflakeIdWorker.nextId()), // 浠诲姟鍙穂闈炵┖]
+ 3L, // 宸ヤ綔鐘舵��
+ null, // 鎵樼洏鍙�
+ param.getCount(), // 鍑哄簱鏁伴噺
+ node.getId(), // 鍏宠仈璐т綅[闈炵┖]
+ node.getUuid(), // 璐т綅[闈炵┖]
+ mat.getMatnr(), // 鍟嗗搧缂栫爜[闈炵┖]
+ null, // 鍟嗗搧鍚嶇О
+ null, // 鍚嶇О
+ null, // 灏虹爜
+ null, // 鍨嬪彿
+ null, // 鎵瑰彿
+ null, // 鍗曚綅
+ null, // SKC
+ null, // 鍗曟嵁绫诲瀷
+ null, // 鍗曟嵁缂栧彿
+ null, // 瀹㈡埛鍚嶇О
+ null, // 鍝侀」鏁�
+ null, // 鏁伴噺
+ null, // 閲嶉噺
+ 1, // 鐘舵��
+ userId, // 娣诲姞浜哄憳
+ new Date(), // 娣诲姞鏃堕棿
+ userId, // 淇敼浜哄憳
+ new Date(), // 淇敼鏃堕棿
+ null // 澶囨敞
+ );
+ VersionUtils.setPakout(pakout, mat);
+ // 淇濆瓨鍑哄簱閫氱煡鍗�
+ if (!pakoutService.insert(pakout)) {
+ throw new CoolException("淇濆瓨鍑哄簱閫氱煡鍗曞け璐�");
+ }
+ if (param.getCount()>=locDetl.getAnfme()) {
+ // 鍒犻櫎搴撳瓨鏄庣粏
+ if (!locDetlService.removeStock(node.getId(), mat.getMatnr())) {
+ throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+ }
+ } else {
+ // 淇敼搴撳瓨鏄庣粏鏁伴噺
+ if (!locDetlService.reduceStock(node.getId(), mat.getMatnr(), param.getCount())) {
+ throw new CoolException("淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触");
+ }
+ }
+ return R.ok();
+ }
+
+ @Override
+ @Transactional
public R stockIn(StockInParam param, Long userId) {
Node node = nodeService.selectByUuid(param.getNodeId());
if (node == null) {
diff --git a/src/main/webapp/views/pda/pakout.html b/src/main/webapp/views/pda/pakout.html
new file mode 100644
index 0000000..d6fba06
--- /dev/null
+++ b/src/main/webapp/views/pda/pakout.html
@@ -0,0 +1,340 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"/>
+ <title>鐩存帴鍑哄簱</title>
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/pda.css" media="all">
+ <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+ <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+ <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+ <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+ <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+ <style>
+ .header-input {
+ width: 65%;
+ height: 40px;
+ }
+
+ .number-tool {
+ margin-left: 10px;
+ padding: 1px 0 1px 5px;
+ display: inline-block;
+ width: 120px;
+ }
+ .number-tool:after {
+ clear: both;
+ content: "";
+ display: table;
+ }
+ .number-tool button {
+ background-color: #fff;
+ margin-top: 3px;
+ font-size: 16px;
+ height: 25px;
+ float: left;
+ width: 25px;
+ border: 1px solid #777777;
+ }
+ .number-tool input {
+ text-align: center;
+ height: 30px;
+ float: left;
+ margin: 0 5px;
+ width: 50px;
+ padding: 0;
+ }
+ #yes {
+ margin: 10px 10px;
+ padding: 5px 20px;
+ font-weight: 600;
+ }
+ #no {
+ margin: 10px 10px;
+ padding: 5px 20px;
+ color: darkred;
+ }
+
+ /**缁胯壊鍕�*/
+ #node-ok {
+ float: left;
+ width: 15px;
+ height: 15px;
+ border-radius: 50%;
+ margin-top: 13px;
+ background-color: #2ac845;
+ display: none;
+ }
+ </style>
+</head>
+<body>
+<!-- 澶撮儴 -->
+<header>
+ <div class="layui-input-inline" style="margin-top: 0px">
+ <label class="layui-form-label">璐т綅缂栧彿</label>
+ <input style="float: left" class="layui-input header-input" id="locNo" type="text" onkeyup="findLoc(this)" placeholder="鎵爜 / 杈撳叆" autocomplete="off">
+ <span id="node-ok"></span>
+ </div>
+ <div class="layui-input-inline" style="margin: 5px 0">
+ <label class="layui-form-label" style="width: 84px">鍟嗗搧鏉$爜</label>
+ <input class="layui-input header-input" type="text" id="matnrByLoc" onkeyup="findMat(this)" placeholder="鎵爜 / 杈撳叆" autocomplete="off">
+ </div>
+</header>
+
+<!-- 涓讳綋 -->
+<main>
+ <table class="layui-table" id="chooseData" lay-filter="chooseData"></table>
+</main>
+<!-- 灏鹃儴 -->
+<footer>
+ <div class="layui-btn-container">
+ <button type="button" id="reset-btn" class="layui-btn layui-btn-primary" onclick="reset()">閲嶇疆</button>
+ <span id="tips"></span>
+ </div>
+</footer>
+
+<div id="pakout" style="display: none; text-align: center;padding-top: 10px">
+ <div class="form-item">
+ <span>鐗╂枡</span>
+ <input id="matnr" type="text" disabled="disabled" style="width: 70%">
+ </div>
+ <div class="form-item">
+ <span>鍚嶇О</span>
+ <input id="maktx" type="text" disabled="disabled" style="width: 70%">
+ </div>
+ <div class="form-item" style="margin-top: 5px">
+ <span style="vertical-align: middle">鏁伴噺</span>
+ <div class="number-tool" style="vertical-align: middle">
+ <button onclick="reduce()">-</button><input id="count" type="number"><button onclick="add()">+</button>
+ </div>
+ </div>
+ <button id="no" onclick="no()">鍙栨秷</button>
+ <button id="yes" onclick="yes()">鍑哄簱</button>
+</div>
+</body>
+<script>
+ window.onload = function(){document.getElementById("locNo").focus();}
+ var tableIns;
+ var anfmeLayer;
+ var nodeUuid;
+ var locDetlData = [];
+ layui.use(['table','laydate', 'form'], function() {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var form = layui.form;
+
+ tableIns = table.render({
+ elem: '#chooseData',
+ data: [],
+ limit: 500,
+ cellMinWidth: 50,
+ cols: [[
+ {fixed: 'left', align: 'center', field: 'anfme', title: '鏁伴噺', event: 'stoOut', style:'font-weight: bold;color: blue', width:70},
+ // {field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿', event: 'modify'},
+ {field: 'maktx', align: 'center', title: '鍟嗗搧鍚嶇О', event: 'stoOut'}
+ ]],
+ done: function (res, curr, count) {
+ }
+ });
+
+ // 鐩戝惉琛屽伐鍏蜂簨浠�
+ table.on('tool(chooseData)', function(obj) {
+ var data = obj.data;
+ switch (obj.event) {
+ case 'stoOut':
+ anfmeLayer = layer.open({
+ type: 1,
+ offset: '20px',
+ title: '鐩存帴鍑哄簱',
+ shadeClose: true,
+ area: ['80%', '200px'],
+ content: $("#pakout"),
+ success: function (layero, index) {
+ $('#matnr').val(data.matnr);
+ $('#maktx').val(data.maktx);
+ $('#count').val(data.anfme);
+ maxCount = data.anfme;
+ },
+ end: function () {
+ anfmeLayer = null;
+ }
+ });
+ break;
+ }
+ });
+
+ });
+
+ /**
+ * 鏍规嵁璐т綅鏌ユ壘搴撳瓨
+ */
+ function findLoc(el){
+ if (isEmpty(el.value)) {
+ $('#node-ok').hide();
+ return;
+ }
+ $.ajax({
+ url: baseUrl + "/locDetl/queryDetl/auth",
+ headers: {'token': localStorage.getItem('token')},
+ data: {
+ uuid: el.value
+ },
+ method: 'GET',
+ success: function (res) {
+ $('#matnrByLoc').val("");
+ if (res.code === 200) {
+ nodeUuid = el.value;
+ locDetlData = [];
+ initTableData(res.data);
+ if (res.data != null && res.data.length > 0) {
+ $('#node-ok').show();
+ } else {
+ $('#node-ok').hide();
+ }
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/pda";
+ } else {
+ tips(res.msg, true);
+ nodeUuid = null;
+ locDetlData = [];
+ }
+ }
+ })
+ }
+
+ // 娣诲姞琛ㄦ牸鏁版嵁
+ function initTableData(data) {
+ for (var i=0;i<data.length;i++) {
+ var toPush = true;
+ for (var j=0;j<locDetlData.length;j++){
+ if (data[i].matnr === locDetlData[j].matnr) {
+ toPush = false;
+ }
+ }
+ if (toPush) {
+ locDetlData.push(data[i]);
+ }
+ }
+ tableIns.reload({data: locDetlData});
+ }
+
+ // 搴撳瓨涓殑鍟嗗搧
+ function findMat(el){
+ if (isEmpty(el.value)) {
+ return;
+ }
+ for (var i=0;i<locDetlData.length;i++) {
+ if (el.value === locDetlData[i].matnr) {
+ if (anfmeLayer == null) {
+ anfmeLayer = layer.open({
+ type: 1,
+ offset: '20px',
+ title: '鐩存帴鍑哄簱',
+ shadeClose: true,
+ area: ['80%', '200px'],
+ content: $("#pakout"),
+ success: function (layero, index) {
+ $('#matnr').val(locDetlData[i].matnr);
+ $('#maktx').val(locDetlData[i].maktx);
+ $('#count').val(locDetlData[i].anfme);
+ maxCount = locDetlData[i].anfme;
+ },
+ end: function () {
+ anfmeLayer = null;
+ }
+ });
+ }
+ }
+ }
+ }
+
+
+ /************************************* 寮圭獥 ****************************************/
+ var countDom = $('#count');
+ var minCount = 0;
+ var maxCount;
+ function add() {
+ if (countDom.val() >= maxCount) {
+ return;
+ }
+ countDom.val(Number(countDom.val()) + 1);
+ }
+ function reduce() {
+ if (countDom.val() <= minCount + 1) {
+ return;
+ }
+ countDom.val(countDom.val() - 1);
+ }
+
+ // 鍑哄簱
+ function yes(){
+ var matnr = $('#matnr').val();
+ var count = $('#count').val();
+ for (var j=0;j<locDetlData.length;j++){
+ if (matnr === locDetlData[j].matnr) {
+ if (count <= minCount) {
+ tips("鏁伴噺蹇呴』澶т簬0", true);
+ $('#count').val(1);
+ return;
+ }
+ if (count > maxCount) {
+ tips("搴撳瓨涓嶈冻", true);
+ $('#count').val(maxCount);
+ return;
+ }
+ }
+ }
+ $.ajax({
+ url: baseUrl + "/work/stock/pakout",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify({
+ nodeUuid: nodeUuid,
+ matnr: matnr,
+ count: count
+ }),
+ contentType:'application/json;charset=UTF-8',
+ async: false,
+ method: 'POST',
+ success: function (res) {
+ layer.close(anfmeLayer);
+ if (res.code === 200) {
+ tips("鍑哄簱鎴愬姛");
+ findLoc(document.getElementById("locNo"));
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/pda";
+ } else {
+ $('#matnrByLoc').val("");
+ tips(res.msg, true);
+ }
+ }
+ });
+ }
+
+ function no() {
+ $('#matnrByLoc').val("");
+ layer.close(anfmeLayer);
+ }
+
+
+ // 閲嶇疆
+ function reset() {
+ $('#locNo').val("");
+ $('#matnrByLoc').val("");
+ locDetlData = [];
+ nodeUuid = null;
+ tableIns.reload({data: locDetlData});
+ $('#node-ok').hide();
+ }
+
+ /**
+ * 鎻愮ず淇℃伅
+ * @param msg 鎻愮ず鍐呭
+ * @param warn true锛氱孩鑹插瓧浣�
+ */
+ function tips(msg, warn) {
+ layer.msg(msg, {icon: warn?2:1})
+ }
+</script>
+</html>
--
Gitblit v1.9.1