产品新增根据产品规格查询库存流水订单

This commit is contained in:
weizhiqiang 2019-10-18 11:51:17 +08:00
parent 49da76e549
commit 88b31c09a2
10 changed files with 188 additions and 5 deletions

View file

@ -146,5 +146,17 @@ public class MaterialController {
public void queryMaterialTockByNormsIdAndDepotId(InputObject inputObject, OutputObject outputObject) throws Exception{
materialService.queryMaterialTockByNormsIdAndDepotId(inputObject, outputObject);
}
/**
* 根据产品规格id获取库存订单
* @param inputObject
* @param outputObject
* @throws Exception
*/
@RequestMapping("/post/MaterialController/queryMaterialDepotItemByNormsId")
@ResponseBody
public void queryMaterialDepotItemByNormsId(InputObject inputObject, OutputObject outputObject) throws Exception{
materialService.queryMaterialDepotItemByNormsId(inputObject, outputObject);
}
}

View file

@ -59,4 +59,6 @@ public interface MaterialDao {
public Map<String, Object> queryMaterialTockByNormsIdAndDepotId(Map<String, Object> params) throws Exception;
public List<Map<String, Object>> queryMaterialDepotItemByNormsId(Map<String, Object> params, PageBounds pageBounds) throws Exception;
}

View file

@ -27,4 +27,6 @@ public interface MaterialService {
public void queryMaterialTockByNormsIdAndDepotId(InputObject inputObject, OutputObject outputObject) throws Exception;
public void queryMaterialDepotItemByNormsId(InputObject inputObject, OutputObject outputObject) throws Exception;
}

View file

@ -498,5 +498,23 @@ public class MaterialServiceImpl implements MaterialService{
Map<String, Object> bean = materialDao.queryMaterialTockByNormsIdAndDepotId(params);
outputObject.setBean(bean);
}
/**
* 根据产品规格id获取库存订单
* @param inputObject
* @param outputObject
* @throws Exception
*/
@Override
public void queryMaterialDepotItemByNormsId(InputObject inputObject, OutputObject outputObject) throws Exception {
Map<String, Object> params = inputObject.getParams();
params.put("userId", inputObject.getLogParams().get("id"));
List<Map<String, Object>> beans = materialDao.queryMaterialDepotItemByNormsId(params,
new PageBounds(Integer.parseInt(params.get("page").toString()), Integer.parseInt(params.get("limit").toString())));
PageList<Map<String, Object>> beansPageList = (PageList<Map<String, Object>>)beans;
int total = beansPageList.getPaginator().getTotalCount();
outputObject.setBeans(beans);
outputObject.settotal(total);
}
}

View file

@ -202,17 +202,20 @@
a.id,
b.`name` unitName,
CASE b.base_unit WHEN '1' THEN '基础单位' WHEN '2' THEN '副单位' ELSE '' END baseUnit,
IFNULL(a.safety_tock, '0') safetyTock,
IFNULL(a.safety_tock, 0) safetyTock,
FORMAT(a.retail_price, 2) retailPrice,
FORMAT(a.low_price, 2) lowPrice,
FORMAT(a.estimate_purchase_price, 2) estimatePurchasePrice,
FORMAT(a.sale_price, 2) salePrice,
IFNULL(SUM(c.oper_number * (CASE d.type WHEN 2 THEN 1 ELSE -1 END)), 0) currentTock
IFNULL(SUM(c.oper_number * (CASE d.sub_type
WHEN 10 THEN 0
ELSE CASE d.type WHEN 2 THEN 1 ELSE -1 END
END)), 0) currentTock
FROM
erp_material_norms a
LEFT JOIN erp_unit b ON a.unit_id = b.id
LEFT JOIN erp_depotitem c ON a.id = c.m_unit_id
LEFT JOIN erp_depothead d ON c.header_id = d.id AND d.sub_type != '10'
LEFT JOIN erp_depothead d ON c.header_id = d.id
WHERE
a.meterial_id = #{id}
AND a.delete_flag = '0'
@ -396,5 +399,30 @@
AND b.sub_type != '10'
GROUP BY a.m_unit_id
</select>
<select id="queryMaterialDepotItemByNormsId" parameterType="java.util.Map" resultType="java.util.Map">
SELECT
b.id,
b.default_number defaultNumber,
a.oper_number operNumber,
b.type,
a.unit_price unitPrice,
b.link_number linkNumber,
b.status,
b.sub_type subType,
CONVERT(IFNULL(a.tax_last_money, a.all_price), decimal(24, 2)) taxLastMoney,
CONVERT (b.oper_time, CHAR) operTime,
c.supplier supplierName
FROM
erp_depotitem a
LEFT JOIN erp_depothead b ON a.header_id = b.id
LEFT JOIN erp_supplier c ON b.organ_id = c.id
WHERE
a.m_unit_id = #{mUnitId}
AND a.tenant_id = #{userId}
AND a.delete_flag = '0'
AND b.sub_type != '10'
ORDER BY b.oper_time DESC
</select>
</mapper>

View file

@ -137,6 +137,11 @@
<property id="depotId" name="depotId" ref="required" var="仓库id"/>
<property id="mUnitId" name="mUnitId" ref="required" var="规格id"/>
</url>
<url id="material012" path="/post/MaterialController/queryMaterialDepotItemByNormsId" val="根据产品规格id获取库存订单" allUse="2">
<property id="mUnitId" name="mUnitId" ref="required" var="规格id"/>
<property id="limit" name="limit" ref="required,num" var="分页参数,每页多少条数据" />
<property id="page" name="page" ref="required,num" var="分页参数,第几页"/>
</url>
<!-- 产品结束 -->
<!-- 其他入库开始 -->

View file

@ -1,4 +1,6 @@
var mUnitId = "";
layui.config({
base: basePath,
version: skyeyeVersion
@ -35,6 +37,17 @@ layui.config({
form.render();
}
});
$("body").on("click", ".notice-title-click", function(e){
mUnitId = $(this).attr("rowid");
_openNewWindows({
url: "../../tpl/material/materialstocklist.html",
title: "库存明细",
pageId: "materialstocklist",
area: ['100vw', '100vh'],
callBack: function(refreshCode){
}});
});
});
});

View file

@ -0,0 +1,83 @@
layui.config({
base: basePath,
version: skyeyeVersion
}).extend({ //指定js别名
window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui'], function (exports) {
winui.renderColor();
var $ = layui.$,
table = layui.table;
//表格渲染
table.render({
id: 'messageTable',
elem: '#messageTable',
method: 'post',
url: reqBasePath + 'material012',
where: {mUnitId: parent.mUnitId},
even: true, //隔行变色
page: true,
limits: [8, 16, 24, 32, 40, 48, 56],
limit: 8,
cols: [[
{ title: '序号', type: 'numbers'},
{ field: 'defaultNumber', title: '单据编号', align: 'left', width: 250, templet: function(d){
var str = '<a lay-event="details" class="notice-title-click">' + d.defaultNumber + '</a>';
if(!isNull(d.linkNumber)){
str += '<span class="state-new">[转]</span>';
if(d.status == 2){
str += '<span class="state-up"> [正常]</span>';
}else{
str += '<span class="state-down"> [预警]</span>';
}
}
return str;
}},
{ field: 'supplierName', title: '供应商', align: 'left', width: 150},
{ field: 'unitPrice', title: '入库单价', align: 'left', width: 120 },
{ field: 'operNumber', title: '数量', align: 'left', width: 120, templet: function(d){
if(d.type == 2){
return d.operNumber;
}else{
return "-" + d.operNumber;
}
}},
{ field: 'taxLastMoney', title: '含税合计', align: 'left', width: 120 },
{ field: 'operTime', title: '单据日期', align: 'center', width: 140 }
]],
done: function(){
}
});
table.on('tool(messageTable)', function (obj) { //注tool是工具条事件名test是table原始容器的属性 lay-filter="对应的值"
var data = obj.data; //获得当前行数据
var layEvent = obj.event; //获得 lay-event 对应的值
if (layEvent === 'details') { //详情
details(data);
}
});
//详情
function details(data){
rowId = data.id;
var url = "";
if(data.subType == '1'){//采购入库
url = "../../tpl/purchaseput/purchaseputdetails.html";
}else if(data.subType == '4'){//其他入库
url = "../../tpl/otherwarehous/otherwarehousdetails.html";
}
_openNewWindows({
url: url,
title: "单据详情",
pageId: "otherwarehousdetails",
area: ['90vw', '90vh'],
callBack: function(refreshCode){
}});
}
exports('materialstocklist', {});
});

View file

@ -17,7 +17,7 @@
<div class="layui-form-item layui-col-xs12">
<label class="layui-form-label">当前存量:</label>
<div class="layui-input-block ver-center">
<a class="notice-title-click">{{currentTock}}</a>
<a class="notice-title-click" rowid="{{id}}">{{currentTock}}</a>
</div>
</div>
<div class="layui-form-item layui-col-xs6">
@ -99,7 +99,7 @@
<td>{{baseUnit}}</td>
<td>{{unitName}}</td>
<td>{{safetyTock}}</td>
<td><a class="notice-title-click">{{currentTock}}</a></td>
<td><a class="notice-title-click" rowid="{{id}}">{{currentTock}}</a></td>
<td>{{retailPrice}}</td>
<td>{{lowPrice}}</td>
<td>{{estimatePurchasePrice}}</td>

View file

@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<link href="../../assets/lib/layui/css/layui.css" rel="stylesheet" />
<link href="../../assets/lib/font-awesome-4.7.0/css/font-awesome.css" rel="stylesheet" />
<link href="../../assets/lib/winui/css/winui.css" rel="stylesheet" />
</head>
<body>
<div style="margin:auto 10px;">
<table id="messageTable" lay-filter="messageTable"></table>
</div>
<script src="../../assets/lib/layui/layui.js"></script>
<script src="../../assets/lib/layui/custom.js"></script>
<script type="text/javascript">
layui.config({base: '../../js/material/'}).use('materialstocklist');
</script>
</body>
</html>