Browse Source

为库存导入添加备注字段

lwx_dev
erdanergou 3 years ago
parent
commit
092cc691e1
  1. 23
      src/main/java/com/dreamchaser/depository_manage/controller/PageController.java
  2. 3
      src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java
  3. 7
      src/main/java/com/dreamchaser/depository_manage/entity/Inventory.java
  4. 10
      src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  5. 7
      src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java
  6. 6
      src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java
  7. 5
      src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java
  8. BIN
      src/main/resources/static/upload/inventoryImport.xlsx
  9. 4
      src/main/resources/templates/pages/depository/Inventory-view.html
  10. 4
      src/main/resources/templates/pages/depository/Inventory-view_mobile.html
  11. 87
      src/main/resources/templates/pages/depository/table-stock.html
  12. 15
      src/main/resources/templates/pages/depository/table-stock_mobile.html
  13. 10
      target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml
  14. BIN
      target/classes/static/upload/inventoryImport.xlsx
  15. 4
      target/classes/templates/pages/depository/Inventory-view.html
  16. 4
      target/classes/templates/pages/depository/Inventory-view_mobile.html
  17. 87
      target/classes/templates/pages/depository/table-stock.html
  18. 15
      target/classes/templates/pages/depository/table-stock_mobile.html

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

@ -850,6 +850,15 @@ public class PageController {
UserByPort userToken = AuthenticationTokenPool.getUserToken(token); UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
ModelAndView mv = new ModelAndView(); ModelAndView mv = new ModelAndView();
mv.setViewName("pages/depository/table-stock"); mv.setViewName("pages/depository/table-stock");
Integer isadmin = userToken.getIsadmin();
if (isadmin == null) {
isadmin = 1;
}
if (isadmin == 4 || Integer.compare(userToken.getMaindeparment(), 361) == 0) {
mv.addObject("display", "table-cell");
} else {
mv.addObject("display", "none");
}
mv.addObject("number", userToken.getNumber()); mv.addObject("number", userToken.getNumber());
String userAgent = request.getHeader("user-agent"); String userAgent = request.getHeader("user-agent");
// 判断当前使用的设备为移动端还是pc端 // 判断当前使用的设备为移动端还是pc端
@ -913,6 +922,20 @@ public class PageController {
inventory.setSplitInfoList(splitInfoByMid); inventory.setSplitInfoList(splitInfoByMid);
mv.addObject("record", inventory); mv.addObject("record", inventory);
String userAgent = request.getHeader("user-agent"); String userAgent = request.getHeader("user-agent");
String token = request.getHeader("user-token");
if (token == null) {
token = (String) request.getSession().getAttribute("userToken");
}
UserByPort userToken = AuthenticationTokenPool.getUserToken(token);
Integer isadmin = userToken.getIsadmin();
if (isadmin == null) {
isadmin = 1;
}
if (isadmin == 4 || Integer.compare(userToken.getMaindeparment(), 361) == 0) {
mv.addObject("display", "block");
} else {
mv.addObject("display", "none");
}
// 判断当前使用的设备为移动端还是pc端 // 判断当前使用的设备为移动端还是pc端
boolean b = DeviceUtil.checkAgentIsMobile(userAgent); boolean b = DeviceUtil.checkAgentIsMobile(userAgent);
if (b) { if (b) {

3
src/main/java/com/dreamchaser/depository_manage/entity/ExcelInfoByInventory.java

@ -42,4 +42,7 @@ public class ExcelInfoByInventory {
/** 仓库编码 */ /** 仓库编码 */
@ExcelProperty(value = "库位码") @ExcelProperty(value = "库位码")
private String depositoryCode; private String depositoryCode;
@ExcelProperty(value = "备注")
private String remark;
} }

7
src/main/java/com/dreamchaser/depository_manage/entity/Inventory.java

@ -142,10 +142,15 @@ public class Inventory {
private String brand; private String brand;
/** /**
* 备注 * 物料备注
*/ */
private String remark; private String remark;
/**
* 库存导入时备注
*/
private String iremark;
/** /**
* 生产日期 * 生产日期
*/ */

10
src/main/java/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -51,6 +51,7 @@
<result column="brand" property="brand" jdbcType="VARCHAR"/> <result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/> <result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="tname" property="typeName" jdbcType="VARCHAR"/> <result column="tname" property="typeName" jdbcType="VARCHAR"/>
<result column="iremark" property="iremark" jdbcType="VARCHAR"/>
<result column="numberOfTemporary" property="numberOfTemporary" jdbcType="INTEGER"/> <result column="numberOfTemporary" property="numberOfTemporary" jdbcType="INTEGER"/>
</resultMap> </resultMap>
@ -137,7 +138,8 @@
</sql> </sql>
<!-- 表查询字段,包括物料类型 用于库存视图--> <!-- 表查询字段,包括物料类型 用于库存视图-->
<sql id="allColumnsAndTypeNameOnViewByInventory"> <sql id="allColumnsAndTypeNameOnViewByInventory">
id,mid,depositoryId,mname,quantity,price,mtid,mstate,tname,dname,version ,unit ,texture,mcode,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark,numberOfTemporary id,mid,depositoryId,mname,quantity,price,mtid,mstate,tname,dname,version ,unit ,
texture,mcode,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark,numberOfTemporary,iremark
</sql> </sql>
<sql id="allColumnsByMaterialAndProducedDate"> <sql id="allColumnsByMaterialAndProducedDate">
@ -810,10 +812,11 @@
</insert> </insert>
<!-- 插入数据 --> <!-- 插入数据 -->
<insert id="insertInventory" useGeneratedKeys="true" keyProperty="id"> <insert id="insertInventory" useGeneratedKeys="true" keyProperty="id">
insert into inventory(id,mid,quantity,producedDate,depository_id) insert into inventory(id,mid,remark,quantity,producedDate,depository_id)
values ( values (
#{id}, #{id},
#{mid}, #{mid},
#{remark},
#{quantity}, #{quantity},
#{producedDate}, #{producedDate},
#{depositoryId} #{depositoryId}
@ -1004,6 +1007,9 @@
<if test="depositoryId != null"> <if test="depositoryId != null">
depository_id = #{depositoryId}, depository_id = #{depositoryId},
</if> </if>
<if test="remark != '' and remark != null">
remark = #{remark},
</if>
<if test="mid != null and mid != '' "> <if test="mid != null and mid != '' ">
mid = #{mid}, mid = #{mid},
</if> </if>

7
src/main/java/com/dreamchaser/depository_manage/pojo/InventoryP.java

@ -216,6 +216,12 @@ public class InventoryP {
private Double defaultQuantity; private Double defaultQuantity;
/**
* 库存导入时备注
*/
private String iremark;
public InventoryP(Integer id, Integer depositoryId, String mname, Integer quantity, Double price, String typeName) { public InventoryP(Integer id, Integer depositoryId, String mname, Integer quantity, Double price, String typeName) {
this.id = id; this.id = id;
this.mname = mname; this.mname = mname;
@ -248,6 +254,7 @@ public class InventoryP {
this.baseUnit = inventory.getUnit(); // 基础单位 this.baseUnit = inventory.getUnit(); // 基础单位
this.placeKingdeeCode = inventory.getPlaceKingdeeCode(); // 库位编码(金蝶) this.placeKingdeeCode = inventory.getPlaceKingdeeCode(); // 库位编码(金蝶)
this.depositoryName = inventory.getDepositoryName(); // 仓库名称 this.depositoryName = inventory.getDepositoryName(); // 仓库名称
this.iremark = inventory.getIremark() == null ? "" : inventory.getIremark(); // 库存导入时填写的备注
} }
public InventoryP() { public InventoryP() {

6
src/main/java/com/dreamchaser/depository_manage/service/impl/ExcelServiceImpl.java

@ -610,6 +610,10 @@ public class ExcelServiceImpl implements ExcelService {
insert.put("depositoryId", depositoryId); insert.put("depositoryId", depositoryId);
insert.put("depositoryCode", excelInfoByInventory.getDepositoryCode()); insert.put("depositoryCode", excelInfoByInventory.getDepositoryCode());
insert.put("mid", material.getId()); insert.put("mid", material.getId());
String remark = excelInfoByInventory.getRemark();
if (remark != null) {
insert.put("remark", remark);
}
// 插入库存记录 // 插入库存记录
materialService.insertInventoryForImport(insert); materialService.insertInventoryForImport(insert);
@ -759,7 +763,7 @@ public class ExcelServiceImpl implements ExcelService {
param.put("id", excelVo.getId()); param.put("id", excelVo.getId());
param.put("brand", excelVo.getBrand()); param.put("brand", excelVo.getBrand());
param.put("price", excelVo.getPrice() == null ? "0" : excelVo.getPrice()); param.put("price", excelVo.getPrice() == null ? "0" : excelVo.getPrice());
param.put("uid",userByPort.getId()); param.put("uid", userByPort.getId());
materialService.insertMaterial(param); materialService.insertMaterial(param);
success.add(excelVo); success.add(excelVo);
if ((i + 1) % 100 == 0 || excelVosForMaterial.size() - 1 == i) { if ((i + 1) % 100 == 0 || excelVosForMaterial.size() - 1 == i) {

5
src/main/java/com/dreamchaser/depository_manage/service/impl/MaterialServiceImpl.java

@ -988,6 +988,11 @@ public class MaterialServiceImpl implements MaterialService {
// 如果该物料存在 // 如果该物料存在
Inventory material = inventory.get(0); Inventory material = inventory.get(0);
if(map.containsKey("remark")){
material.setRemark(map.get("remark").toString());
}
double quantity = Double.parseDouble(map.get("quantity").toString()); double quantity = Double.parseDouble(map.get("quantity").toString());
double quantity_residue = 0; double quantity_residue = 0;

BIN
src/main/resources/static/upload/inventoryImport.xlsx

Binary file not shown.

4
src/main/resources/templates/pages/depository/Inventory-view.html

@ -125,7 +125,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">单价</label> <label class="layui-form-label">单价</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price" <input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price"
@ -133,7 +133,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">总额</label> <label class="layui-form-label">总额</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts" <input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts"

4
src/main/resources/templates/pages/depository/Inventory-view_mobile.html

@ -125,7 +125,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">单价</label> <label class="layui-form-label">单价</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price" <input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price"
@ -133,7 +133,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">总额</label> <label class="layui-form-label">总额</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts" <input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts"

87
src/main/resources/templates/pages/depository/table-stock.html

@ -18,6 +18,7 @@
<legend>搜索信息</legend> <legend>搜索信息</legend>
<div style="margin: 10px 10px 10px 10px"> <div style="margin: 10px 10px 10px 10px">
<input style="display: none" th:value="${number}" id="number"> <input style="display: none" th:value="${number}" id="number">
<input style="display: none" th:value="${display}" id="display">
<form class="layui-form layui-form-pane" action=""> <form class="layui-form layui-form-pane" action="">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
@ -127,7 +128,7 @@
} }
function showDetail(){ function showDetail() {
} }
@ -136,13 +137,14 @@
let newIndexShade; let newIndexShade;
layui.use(['form', 'table', 'upload'], function () { layui.use(['form', 'table', 'upload'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
upload = layui.upload, upload = layui.upload,
table = layui.table; table = layui.table;
let display = $("#display").val();
$('#openSonByMateralType').on('click', function () { $('#openSonByMateralType').on('click', function () {
layer.open({ layer.open({
type: 2, type: 2,
@ -187,6 +189,28 @@
}); });
let cols = [
{type: "checkbox", width: 50},
{title: '存货编码', width: 150, templet: '#materialCode'},
{field: 'mname', width: 200, title: '物料名称'},
{field: 'brand', width: 200, title: '品牌'},
{field: 'version', width: 200, title: '规格型号'},
{field: 'typeName', width: 200, title: '物料类型'},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'quantity', width: 200, title: '数量'},
{field: 'depositoryName', width: 200, title: '仓库名称'},
{field: 'depositoryCode', width: 200, title: '仓库编码'},
{title: '所处库位', width: 200, templet: '#changePlace', align: "center"},
{field: 'warningCount', width: 200, title: '待过期数量', sort: true},
{field: 'price', title: '单价', width: 200, sort: true},
{field: 'amounts', title: '总金额', width: 200, sort: true},
{field: 'texture', width: 200, title: '材质',},
{field: 'iremark', width: 200, title: '备注',},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
];
let flagForReload = true;
table.render({ table.render({
elem: "#currentTableId", elem: "#currentTableId",
url: '/material/findInventory', url: '/material/findInventory',
@ -225,9 +249,8 @@
{field: 'depositoryCode', width: 200, title: '仓库编码'}, {field: 'depositoryCode', width: 200, title: '仓库编码'},
{title: '所处库位', width: 200, templet: '#changePlace', align: "center"}, {title: '所处库位', width: 200, templet: '#changePlace', align: "center"},
{field: 'warningCount', width: 200, title: '待过期数量', sort: true}, {field: 'warningCount', width: 200, title: '待过期数量', sort: true},
{field: 'price', title: '单价', width: 200, sort: true},
{field: 'amounts', title: '总金额', width: 200, sort: true},
{field: 'texture', width: 200, title: '材质',}, {field: 'texture', width: 200, title: '材质',},
{field: 'iremark', width: 200, title: '备注',},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"} {title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
] ]
], ],
@ -237,17 +260,21 @@
skin: 'line', skin: 'line',
done: function (res, curr, count) { done: function (res, curr, count) {
bindTableToolbarFunction(); bindTableToolbarFunction();
if (display !== "none") {
if (flagForReload) {
flagForReload = false;
table.reload("currentTableId", {cols: [cols]});
}
}
$.each(res['data'], function (i, j) { $.each(res['data'], function (i, j) {
let jElement = j['warningCount']; let jElement = j['warningCount'];
let placeCode = j['placeCode'].split(" "); let placeCode = j['placeCode'].split(" ");
let placeKingdeeCode = j['placeKingdeeCode'].split(" "); let placeKingdeeCode = j['placeKingdeeCode'].split(" ");
let depositoryId = j['depositoryId']; let depositoryId = j['depositoryId'];
let unit = j['unit'];
let mid = j['id']; let mid = j['id'];
if (jElement !== null && jElement !== undefined) { if (jElement !== null && jElement !== undefined) {
let flag = (Number(jElement) !== 0); let flag = (Number(jElement) !== 0);
if (flag) { if (flag) {
// console.log(i + ' -458- ' + 'jdjg is null');
Layui_SetDataTableRowColor('table', i + 1, '#b1070a'); Layui_SetDataTableRowColor('table', i + 1, '#b1070a');
} }
@ -424,8 +451,7 @@
layer.full(index); layer.full(index);
}); });
return false; return false;
} } else if (obj.event === 'applicationOut') {
else if (obj.event === 'applicationOut') {
// 出库申请 // 出库申请
var index = layer.open({ var index = layer.open({
title: '出库申请', title: '出库申请',
@ -440,8 +466,7 @@
layer.full(index); layer.full(index);
}); });
return false; return false;
} } else if (obj.event === 'changeUnit') {
else if (obj.event === 'changeUnit') {
let showQuantity = data.showQuantity; let showQuantity = data.showQuantity;
let btn = $("#btn_" + data.id); let btn = $("#btn_" + data.id);
let clickNum = Number(btn.attr("click_num")); let clickNum = Number(btn.attr("click_num"));
@ -534,21 +559,23 @@
if (res.code === 200) { if (res.code === 200) {
var re = ""; var re = "";
for (let i = 0; i < res.data.errMsg.length; i++) { for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>"; var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>";
re += show re += show
} }
for (let i = 0; i < res.data.dataList.length; i++) { for (let i = 0; i < res.data.dataList.length; i++) {
var code = res.data.dataList[i]["code"] === null ? '' : res.data.dataList[i]["code"]; let dataListElement = res.data.dataList[i];
var mname = res.data.dataList[i]["mname"]; var code = dataListElement["code"] === null ? '' : dataListElement["code"];
var version = res.data.dataList[i]["version"] === null ? '' : res.data.dataList[i]["version"]; var mname = dataListElement["mname"];
var quantity = res.data.dataList[i]["quantity"]; var version = dataListElement["version"] === null ? '' : dataListElement["version"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为" + quantity + ":通过" + "</p>"; var quantity = dataListElement["quantity"];
var remark = dataListElement["remark"] === null ? "" : dataListElement["remark"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为:" + quantity + "备注:" + remark + ":通过" + "</p>";
re += show re += show
} }
if ("WebSocket" in window) { if ("WebSocket" in window) {
let number = $("#number").val(); let number = $("#number").val();
socket = new WebSocket('ws://127.0.0.1:11111/webSocket/'+number); socket = new WebSocket('ws://127.0.0.1:11111/webSocket/' + number);
switch (socket.readyState) { switch (socket.readyState) {
case WebSocket.CONNECTING: case WebSocket.CONNECTING:
// 连接中 // 连接中
@ -571,8 +598,8 @@
} }
socket.addEventListener('message', function (event) { socket.addEventListener('message', function (event) {
layer.close(newIndexShade); layer.close(newIndexShade);
let shadeItem = '<div class="layui-layer-shade" id='+"layui-layer-shade-x"+newIndexShade+' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>'; let shadeItem = '<div class="layui-layer-shade" id=' + "layui-layer-shade-x" + newIndexShade + ' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>';
if ($("#"+"layui-layer-shade-x"+newIndexShade).length <= 0) { if ($("#" + "layui-layer-shade-x" + newIndexShade).length <= 0) {
$('body').append(shadeItem); $('body').append(shadeItem);
} }
let jsonObject = JSON.parse(event.data); let jsonObject = JSON.parse(event.data);
@ -583,7 +610,8 @@
var mname = jsonObject[i]["mname"]; var mname = jsonObject[i]["mname"];
var version = jsonObject[i]["version"] === null ? '' : jsonObject[i]["version"]; var version = jsonObject[i]["version"] === null ? '' : jsonObject[i]["version"];
var quantity = jsonObject[i]["quantity"]; var quantity = jsonObject[i]["quantity"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为" + quantity + ":通过" + "</p>"; var remark = jsonObject[i]["remark"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为:" + quantity + "备注:" + remark + ":通过" + "</p>";
re += show re += show
} }
$("#showDataContent").append(re); $("#showDataContent").append(re);
@ -591,7 +619,7 @@
} }
newIndexShade = layer.open({ newIndexShade = layer.open({
type: 1 type: 1
, title: false //不显示标题栏 , title: false //不显示标题栏
, closeBtn: false , closeBtn: false
@ -606,20 +634,20 @@
, yes: function (index, layero) { , yes: function (index, layero) {
//按钮【按钮一】的回调 //按钮【按钮一】的回调
$.ajax({ $.ajax({
url:"/excel/realImportInventory", url: "/excel/realImportInventory",
type: "post", type: "post",
data: JSON.stringify({"result":"yes"}), data: JSON.stringify({"result": "yes"}),
dataType: "json", dataType: "json",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function () { success: function () {
if (socket !== null) { if (socket !== null) {
socket.close(); socket.close();
}else{ } else {
layer.close(index); layer.close(index);
} }
layer.alert("数据导入完成", { layer.alert("数据导入完成", {
icon: 0 icon: 0
},function (indexForMsg,layero) { }, function (indexForMsg, layero) {
layer.close(indexForMsg); layer.close(indexForMsg);
closeShowDataMessage(); closeShowDataMessage();
table.reload('currentTableId', { table.reload('currentTableId', {
@ -637,9 +665,9 @@
, btn2: function (index, layero) { , btn2: function (index, layero) {
//按钮【按钮二】的回调 //按钮【按钮二】的回调
$.ajax({ $.ajax({
url:"/excel/realImportInventory", url: "/excel/realImportInventory",
type: "post", type: "post",
data: JSON.stringify({"result":"no"}), data: JSON.stringify({"result": "no"}),
dataType: "json", dataType: "json",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function () { success: function () {
@ -669,11 +697,8 @@
} }
closeShowDataMessage = function () { closeShowDataMessage = function () {
$("#layui-layer-shade-x"+newIndexShade).remove(); $("#layui-layer-shade-x" + newIndexShade).remove();
$("#showImportData").hide(); $("#showImportData").hide();
$("#showDataContent").empty(); $("#showDataContent").empty();
if (socket !== null) { if (socket !== null) {

15
src/main/resources/templates/pages/depository/table-stock_mobile.html

@ -163,6 +163,7 @@
+ '<p>' + "物料型号:" + result[i].version + '</p>' + '<p>' + "物料型号:" + result[i].version + '</p>'
+ brandItem + brandItem
+ '<p>' + "物料类型:" + result[i].typeName + '</p>' + '<p>' + "物料类型:" + result[i].typeName + '</p>'
+ '<p>' + "库存备注:" + result[i].iremark + '</p>'
+ '</div></div></li>'); + '</div></div></li>');
} }
lis.push('</div>'); lis.push('</div>');
@ -273,13 +274,19 @@
result = res.data; result = res.data;
lis.push("<div class='clearfix'>"); lis.push("<div class='clearfix'>");
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
let brandItem = '<p>' + "物料品牌:" + result[i].brand + '</p>';
if (result[i].brand === "") {
brandItem = "";
}
lis.push('<li style="width:100%;margin-top: 10px;float:left;border: 1px solid #9999996e;"><div class="layui-card my-shadow my-card flow1" onclick="showDetail(' lis.push('<li style="width:100%;margin-top: 10px;float:left;border: 1px solid #9999996e;"><div class="layui-card my-shadow my-card flow1" onclick="showDetail('
+ result[i].id + ')"><div class="layui-card-header"><h2>' + result[i].mname + '</h2></div>'); + result[i].id + ')"><div class="layui-card-header"><h2>' + result[i].mname + '</h2></div>');
lis.push('<div class="layui-col-md4 my-info" style="margin-left: 15px; color: #999;font-size: 15px;">' lis.push('<div class="layui-col-md4 my-info" style="margin-left: 15px; color: #999;font-size: 15px;">'
+ '<p>' + result[i].code + '</p>' + '<p>' + "物料编码:" + result[i].code + '</p>'
+ '<p>' + result[i].version + '</p>' + '<p>' + "物料型号:" + result[i].version + '</p>'
+ '<p>' + "品牌:" + result[i].brand + '</p>' + brandItem
+ '<p>' + result[i].typeName + '</p>' + '<p>' + "物料类型:" + result[i].typeName + '</p>'
+ '<p>' + "库存备注:" + result[i].iremark + '</p>'
+ '</div></div></li>'); + '</div></div></li>');
} }
lis.push('</div>'); lis.push('</div>');

10
target/classes/com/dreamchaser/depository_manage/mapper/MaterialMapper.xml

@ -51,6 +51,7 @@
<result column="brand" property="brand" jdbcType="VARCHAR"/> <result column="brand" property="brand" jdbcType="VARCHAR"/>
<result column="remark" property="remark" jdbcType="VARCHAR"/> <result column="remark" property="remark" jdbcType="VARCHAR"/>
<result column="tname" property="typeName" jdbcType="VARCHAR"/> <result column="tname" property="typeName" jdbcType="VARCHAR"/>
<result column="iremark" property="iremark" jdbcType="VARCHAR"/>
<result column="numberOfTemporary" property="numberOfTemporary" jdbcType="INTEGER"/> <result column="numberOfTemporary" property="numberOfTemporary" jdbcType="INTEGER"/>
</resultMap> </resultMap>
@ -137,7 +138,8 @@
</sql> </sql>
<!-- 表查询字段,包括物料类型 用于库存视图--> <!-- 表查询字段,包括物料类型 用于库存视图-->
<sql id="allColumnsAndTypeNameOnViewByInventory"> <sql id="allColumnsAndTypeNameOnViewByInventory">
id,mid,depositoryId,mname,quantity,price,mtid,mstate,tname,dname,version ,unit ,texture,mcode,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark,numberOfTemporary id,mid,depositoryId,mname,quantity,price,mtid,mstate,tname,dname,version ,unit ,
texture,mcode,depositoryCode,producedDate,shelfLife,productionPlace,brand,remark,numberOfTemporary,iremark
</sql> </sql>
<sql id="allColumnsByMaterialAndProducedDate"> <sql id="allColumnsByMaterialAndProducedDate">
@ -810,10 +812,11 @@
</insert> </insert>
<!-- 插入数据 --> <!-- 插入数据 -->
<insert id="insertInventory" useGeneratedKeys="true" keyProperty="id"> <insert id="insertInventory" useGeneratedKeys="true" keyProperty="id">
insert into inventory(id,mid,quantity,producedDate,depository_id) insert into inventory(id,mid,remark,quantity,producedDate,depository_id)
values ( values (
#{id}, #{id},
#{mid}, #{mid},
#{remark},
#{quantity}, #{quantity},
#{producedDate}, #{producedDate},
#{depositoryId} #{depositoryId}
@ -1004,6 +1007,9 @@
<if test="depositoryId != null"> <if test="depositoryId != null">
depository_id = #{depositoryId}, depository_id = #{depositoryId},
</if> </if>
<if test="remark != '' and remark != null">
remark = #{remark},
</if>
<if test="mid != null and mid != '' "> <if test="mid != null and mid != '' ">
mid = #{mid}, mid = #{mid},
</if> </if>

BIN
target/classes/static/upload/inventoryImport.xlsx

Binary file not shown.

4
target/classes/templates/pages/depository/Inventory-view.html

@ -125,7 +125,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">单价</label> <label class="layui-form-label">单价</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price" <input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price"
@ -133,7 +133,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">总额</label> <label class="layui-form-label">总额</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts" <input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts"

4
target/classes/templates/pages/depository/Inventory-view_mobile.html

@ -125,7 +125,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">单价</label> <label class="layui-form-label">单价</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price" <input type="text" th:value="${record.getPrice()}" name="price" required autocomplete="off" id="price"
@ -133,7 +133,7 @@
class="layui-input"> class="layui-input">
</div> </div>
</div> </div>
<div class="layui-form-item"> <div class="layui-form-item" th:style="'display:'+${display}">
<label class="layui-form-label">总额</label> <label class="layui-form-label">总额</label>
<div class="layui-input-inline"> <div class="layui-input-inline">
<input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts" <input type="text" th:value="${record.getAmounts()}" name="amounts" required autocomplete="off" id="amounts"

87
target/classes/templates/pages/depository/table-stock.html

@ -18,6 +18,7 @@
<legend>搜索信息</legend> <legend>搜索信息</legend>
<div style="margin: 10px 10px 10px 10px"> <div style="margin: 10px 10px 10px 10px">
<input style="display: none" th:value="${number}" id="number"> <input style="display: none" th:value="${number}" id="number">
<input style="display: none" th:value="${display}" id="display">
<form class="layui-form layui-form-pane" action=""> <form class="layui-form layui-form-pane" action="">
<div class="layui-form-item"> <div class="layui-form-item">
<div class="layui-inline"> <div class="layui-inline">
@ -127,7 +128,7 @@
} }
function showDetail(){ function showDetail() {
} }
@ -136,13 +137,14 @@
let newIndexShade; let newIndexShade;
layui.use(['form', 'table', 'upload'], function () { layui.use(['form', 'table', 'upload'], function () {
var $ = layui.jquery, var $ = layui.jquery,
form = layui.form, form = layui.form,
upload = layui.upload, upload = layui.upload,
table = layui.table; table = layui.table;
let display = $("#display").val();
$('#openSonByMateralType').on('click', function () { $('#openSonByMateralType').on('click', function () {
layer.open({ layer.open({
type: 2, type: 2,
@ -187,6 +189,28 @@
}); });
let cols = [
{type: "checkbox", width: 50},
{title: '存货编码', width: 150, templet: '#materialCode'},
{field: 'mname', width: 200, title: '物料名称'},
{field: 'brand', width: 200, title: '品牌'},
{field: 'version', width: 200, title: '规格型号'},
{field: 'typeName', width: 200, title: '物料类型'},
{title: '计量单位', width: 200, templet: '#changeUnit', align: "center"},
{field: 'quantity', width: 200, title: '数量'},
{field: 'depositoryName', width: 200, title: '仓库名称'},
{field: 'depositoryCode', width: 200, title: '仓库编码'},
{title: '所处库位', width: 200, templet: '#changePlace', align: "center"},
{field: 'warningCount', width: 200, title: '待过期数量', sort: true},
{field: 'price', title: '单价', width: 200, sort: true},
{field: 'amounts', title: '总金额', width: 200, sort: true},
{field: 'texture', width: 200, title: '材质',},
{field: 'iremark', width: 200, title: '备注',},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
];
let flagForReload = true;
table.render({ table.render({
elem: "#currentTableId", elem: "#currentTableId",
url: '/material/findInventory', url: '/material/findInventory',
@ -225,9 +249,8 @@
{field: 'depositoryCode', width: 200, title: '仓库编码'}, {field: 'depositoryCode', width: 200, title: '仓库编码'},
{title: '所处库位', width: 200, templet: '#changePlace', align: "center"}, {title: '所处库位', width: 200, templet: '#changePlace', align: "center"},
{field: 'warningCount', width: 200, title: '待过期数量', sort: true}, {field: 'warningCount', width: 200, title: '待过期数量', sort: true},
{field: 'price', title: '单价', width: 200, sort: true},
{field: 'amounts', title: '总金额', width: 200, sort: true},
{field: 'texture', width: 200, title: '材质',}, {field: 'texture', width: 200, title: '材质',},
{field: 'iremark', width: 200, title: '备注',},
{title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"} {title: '操作', minWidth: 250, toolbar: '#currentTableBar', align: "center"}
] ]
], ],
@ -237,17 +260,21 @@
skin: 'line', skin: 'line',
done: function (res, curr, count) { done: function (res, curr, count) {
bindTableToolbarFunction(); bindTableToolbarFunction();
if (display !== "none") {
if (flagForReload) {
flagForReload = false;
table.reload("currentTableId", {cols: [cols]});
}
}
$.each(res['data'], function (i, j) { $.each(res['data'], function (i, j) {
let jElement = j['warningCount']; let jElement = j['warningCount'];
let placeCode = j['placeCode'].split(" "); let placeCode = j['placeCode'].split(" ");
let placeKingdeeCode = j['placeKingdeeCode'].split(" "); let placeKingdeeCode = j['placeKingdeeCode'].split(" ");
let depositoryId = j['depositoryId']; let depositoryId = j['depositoryId'];
let unit = j['unit'];
let mid = j['id']; let mid = j['id'];
if (jElement !== null && jElement !== undefined) { if (jElement !== null && jElement !== undefined) {
let flag = (Number(jElement) !== 0); let flag = (Number(jElement) !== 0);
if (flag) { if (flag) {
// console.log(i + ' -458- ' + 'jdjg is null');
Layui_SetDataTableRowColor('table', i + 1, '#b1070a'); Layui_SetDataTableRowColor('table', i + 1, '#b1070a');
} }
@ -424,8 +451,7 @@
layer.full(index); layer.full(index);
}); });
return false; return false;
} } else if (obj.event === 'applicationOut') {
else if (obj.event === 'applicationOut') {
// 出库申请 // 出库申请
var index = layer.open({ var index = layer.open({
title: '出库申请', title: '出库申请',
@ -440,8 +466,7 @@
layer.full(index); layer.full(index);
}); });
return false; return false;
} } else if (obj.event === 'changeUnit') {
else if (obj.event === 'changeUnit') {
let showQuantity = data.showQuantity; let showQuantity = data.showQuantity;
let btn = $("#btn_" + data.id); let btn = $("#btn_" + data.id);
let clickNum = Number(btn.attr("click_num")); let clickNum = Number(btn.attr("click_num"));
@ -534,21 +559,23 @@
if (res.code === 200) { if (res.code === 200) {
var re = ""; var re = "";
for (let i = 0; i < res.data.errMsg.length; i++) { for (let i = 0; i < res.data.errMsg.length; i++) {
var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>"; var show = "<p style='color: #ff211e'>" + res.data.errMsg[i] + "</p>";
re += show re += show
} }
for (let i = 0; i < res.data.dataList.length; i++) { for (let i = 0; i < res.data.dataList.length; i++) {
var code = res.data.dataList[i]["code"] === null ? '' : res.data.dataList[i]["code"]; let dataListElement = res.data.dataList[i];
var mname = res.data.dataList[i]["mname"]; var code = dataListElement["code"] === null ? '' : dataListElement["code"];
var version = res.data.dataList[i]["version"] === null ? '' : res.data.dataList[i]["version"]; var mname = dataListElement["mname"];
var quantity = res.data.dataList[i]["quantity"]; var version = dataListElement["version"] === null ? '' : dataListElement["version"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为" + quantity + ":通过" + "</p>"; var quantity = dataListElement["quantity"];
var remark = dataListElement["remark"] === null ? "" : dataListElement["remark"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为:" + quantity + "备注:" + remark + ":通过" + "</p>";
re += show re += show
} }
if ("WebSocket" in window) { if ("WebSocket" in window) {
let number = $("#number").val(); let number = $("#number").val();
socket = new WebSocket('ws://127.0.0.1:11111/webSocket/'+number); socket = new WebSocket('ws://127.0.0.1:11111/webSocket/' + number);
switch (socket.readyState) { switch (socket.readyState) {
case WebSocket.CONNECTING: case WebSocket.CONNECTING:
// 连接中 // 连接中
@ -571,8 +598,8 @@
} }
socket.addEventListener('message', function (event) { socket.addEventListener('message', function (event) {
layer.close(newIndexShade); layer.close(newIndexShade);
let shadeItem = '<div class="layui-layer-shade" id='+"layui-layer-shade-x"+newIndexShade+' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>'; let shadeItem = '<div class="layui-layer-shade" id=' + "layui-layer-shade-x" + newIndexShade + ' times="753951" style="z-index:1231233; background-color: rgb(0, 0, 0); opacity: 0.8;"></div>';
if ($("#"+"layui-layer-shade-x"+newIndexShade).length <= 0) { if ($("#" + "layui-layer-shade-x" + newIndexShade).length <= 0) {
$('body').append(shadeItem); $('body').append(shadeItem);
} }
let jsonObject = JSON.parse(event.data); let jsonObject = JSON.parse(event.data);
@ -583,7 +610,8 @@
var mname = jsonObject[i]["mname"]; var mname = jsonObject[i]["mname"];
var version = jsonObject[i]["version"] === null ? '' : jsonObject[i]["version"]; var version = jsonObject[i]["version"] === null ? '' : jsonObject[i]["version"];
var quantity = jsonObject[i]["quantity"]; var quantity = jsonObject[i]["quantity"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为" + quantity + ":通过" + "</p>"; var remark = jsonObject[i]["remark"];
var show = "<p style='color: #00FF00'>" + code + ", " + mname + ", " + version + ", 数量为:" + quantity + "备注:" + remark + ":通过" + "</p>";
re += show re += show
} }
$("#showDataContent").append(re); $("#showDataContent").append(re);
@ -591,7 +619,7 @@
} }
newIndexShade = layer.open({ newIndexShade = layer.open({
type: 1 type: 1
, title: false //不显示标题栏 , title: false //不显示标题栏
, closeBtn: false , closeBtn: false
@ -606,20 +634,20 @@
, yes: function (index, layero) { , yes: function (index, layero) {
//按钮【按钮一】的回调 //按钮【按钮一】的回调
$.ajax({ $.ajax({
url:"/excel/realImportInventory", url: "/excel/realImportInventory",
type: "post", type: "post",
data: JSON.stringify({"result":"yes"}), data: JSON.stringify({"result": "yes"}),
dataType: "json", dataType: "json",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function () { success: function () {
if (socket !== null) { if (socket !== null) {
socket.close(); socket.close();
}else{ } else {
layer.close(index); layer.close(index);
} }
layer.alert("数据导入完成", { layer.alert("数据导入完成", {
icon: 0 icon: 0
},function (indexForMsg,layero) { }, function (indexForMsg, layero) {
layer.close(indexForMsg); layer.close(indexForMsg);
closeShowDataMessage(); closeShowDataMessage();
table.reload('currentTableId', { table.reload('currentTableId', {
@ -637,9 +665,9 @@
, btn2: function (index, layero) { , btn2: function (index, layero) {
//按钮【按钮二】的回调 //按钮【按钮二】的回调
$.ajax({ $.ajax({
url:"/excel/realImportInventory", url: "/excel/realImportInventory",
type: "post", type: "post",
data: JSON.stringify({"result":"no"}), data: JSON.stringify({"result": "no"}),
dataType: "json", dataType: "json",
contentType: "application/json;charset=utf-8", contentType: "application/json;charset=utf-8",
success: function () { success: function () {
@ -669,11 +697,8 @@
} }
closeShowDataMessage = function () { closeShowDataMessage = function () {
$("#layui-layer-shade-x"+newIndexShade).remove(); $("#layui-layer-shade-x" + newIndexShade).remove();
$("#showImportData").hide(); $("#showImportData").hide();
$("#showDataContent").empty(); $("#showDataContent").empty();
if (socket !== null) { if (socket !== null) {

15
target/classes/templates/pages/depository/table-stock_mobile.html

@ -163,6 +163,7 @@
+ '<p>' + "物料型号:" + result[i].version + '</p>' + '<p>' + "物料型号:" + result[i].version + '</p>'
+ brandItem + brandItem
+ '<p>' + "物料类型:" + result[i].typeName + '</p>' + '<p>' + "物料类型:" + result[i].typeName + '</p>'
+ '<p>' + "库存备注:" + result[i].iremark + '</p>'
+ '</div></div></li>'); + '</div></div></li>');
} }
lis.push('</div>'); lis.push('</div>');
@ -273,13 +274,19 @@
result = res.data; result = res.data;
lis.push("<div class='clearfix'>"); lis.push("<div class='clearfix'>");
for (let i = 0; i < result.length; i++) { for (let i = 0; i < result.length; i++) {
let brandItem = '<p>' + "物料品牌:" + result[i].brand + '</p>';
if (result[i].brand === "") {
brandItem = "";
}
lis.push('<li style="width:100%;margin-top: 10px;float:left;border: 1px solid #9999996e;"><div class="layui-card my-shadow my-card flow1" onclick="showDetail(' lis.push('<li style="width:100%;margin-top: 10px;float:left;border: 1px solid #9999996e;"><div class="layui-card my-shadow my-card flow1" onclick="showDetail('
+ result[i].id + ')"><div class="layui-card-header"><h2>' + result[i].mname + '</h2></div>'); + result[i].id + ')"><div class="layui-card-header"><h2>' + result[i].mname + '</h2></div>');
lis.push('<div class="layui-col-md4 my-info" style="margin-left: 15px; color: #999;font-size: 15px;">' lis.push('<div class="layui-col-md4 my-info" style="margin-left: 15px; color: #999;font-size: 15px;">'
+ '<p>' + result[i].code + '</p>' + '<p>' + "物料编码:" + result[i].code + '</p>'
+ '<p>' + result[i].version + '</p>' + '<p>' + "物料型号:" + result[i].version + '</p>'
+ '<p>' + "品牌:" + result[i].brand + '</p>' + brandItem
+ '<p>' + result[i].typeName + '</p>' + '<p>' + "物料类型:" + result[i].typeName + '</p>'
+ '<p>' + "库存备注:" + result[i].iremark + '</p>'
+ '</div></div></li>'); + '</div></div></li>');
} }
lis.push('</div>'); lis.push('</div>');

Loading…
Cancel
Save