完成物料操作流水新增功能和物料库存查看完善

This commit is contained in:
wangcl 2021-12-26 19:19:43 +08:00
parent e501180c2c
commit 44dba2b232
9 changed files with 233 additions and 93 deletions

View File

@ -1,6 +1,8 @@
package com.ruoyi.busi.controller; package com.ruoyi.busi.controller;
import java.util.List; import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
@ -86,6 +88,9 @@ public class BusiMaterialOperateController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult addSave(BusiMaterialOperate busiMaterialOperate) public AjaxResult addSave(BusiMaterialOperate busiMaterialOperate)
{ {
busiMaterialOperate.setCreateBy(getLoginName());
busiMaterialOperate.setCreateTime(DateUtils.getNowDate());
return toAjax(busiMaterialOperateService.insertBusiMaterialOperate(busiMaterialOperate)); return toAjax(busiMaterialOperateService.insertBusiMaterialOperate(busiMaterialOperate));
} }

View File

@ -5,78 +5,131 @@ import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import java.util.Optional;
/** /**
* 物料操作流水对象 busi_material_operate * 物料操作流水对象 busi_material_operate
* *
* @author WangCL * @author WangCL
* @date 2021-12-24 * @date 2021-12-24
*/ */
public class BusiMaterialOperate extends BaseEntity public class BusiMaterialOperate extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** ID主键 */ /**
* ID主键
*/
private Long id; private Long id;
/** 订单 */ /**
* 订单
*/
@Excel(name = "订单") @Excel(name = "订单")
private String materialStockId; private String materialStockId;
/** 操作数量 */ /**
* 操作数量
*/
@Excel(name = "操作数量") @Excel(name = "操作数量")
private Long amount; private Long amount;
/** 操作类型 */ /**
* 操作类型
*/
@Excel(name = "操作类型") @Excel(name = "操作类型")
private String oprateType; private String oprateType;
public void setId(Long id) /**
{ * 颜色和类型
*/
private String colorAndType;
private String orderId;
public String getColor() {
if (colorAndType != null) {
return colorAndType.split(";")[0];
} else {
return "";
}
}
public String getClassify() {
if (colorAndType != null) {
return colorAndType.split(";")[1];
} else {
return "";
}
}
public String getUnit() {
if (colorAndType != null) {
return colorAndType.split(";")[2];
} else {
return "";
}
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getColorAndType() {
return colorAndType;
}
public void setColorAndType(String colorAndType) {
this.colorAndType = colorAndType;
}
public void setId(Long id) {
this.id = id; this.id = id;
} }
public Long getId() public Long getId() {
{
return id; return id;
} }
public void setMaterialStockId(String materialStockId)
{ public void setMaterialStockId(String materialStockId) {
this.materialStockId = materialStockId; this.materialStockId = materialStockId;
} }
public String getMaterialStockId() public String getMaterialStockId() {
{
return materialStockId; return materialStockId;
} }
public void setAmount(Long amount)
{ public void setAmount(Long amount) {
this.amount = amount; this.amount = amount;
} }
public Long getAmount() public Long getAmount() {
{
return amount; return amount;
} }
public void setOprateType(String oprateType)
{ public void setOprateType(String oprateType) {
this.oprateType = oprateType; this.oprateType = oprateType;
} }
public String getOprateType() public String getOprateType() {
{
return oprateType; return oprateType;
} }
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId()) .append("id", getId())
.append("materialStockId", getMaterialStockId()) .append("materialStockId", getMaterialStockId())
.append("amount", getAmount()) .append("amount", getAmount())
.append("oprateType", getOprateType()) .append("oprateType", getOprateType())
.append("createBy", getCreateBy()) .append("createBy", getCreateBy())
.append("createTime", getCreateTime()) .append("createTime", getCreateTime())
.append("remark", getRemark()) .append("remark", getRemark())
.toString(); .toString();
} }
} }

View File

@ -19,16 +19,19 @@ public class BusiMaterialStock extends BaseEntity
private String id; private String id;
/** 所属订单 */ /** 所属订单 */
@Excel(name = "所属订单")
private String orderId; private String orderId;
/** 所属订单名称 */
@Excel(name = "所属订单")
private String orderName;
/** 进库量 */ /** 进库量 */
@Excel(name = "进库量") @Excel(name = "进库量")
private String amountIn; private Long amountIn;
/** 出库量 */ /** 出库量 */
@Excel(name = "出库量") @Excel(name = "出库量")
private String amountOut; private Long amountOut;
/** 单位 */ /** 单位 */
@Excel(name = "单位") @Excel(name = "单位")
@ -60,24 +63,7 @@ public class BusiMaterialStock extends BaseEntity
{ {
return orderId; return orderId;
} }
public void setAmountIn(String amountIn)
{
this.amountIn = amountIn;
}
public String getAmountIn()
{
return amountIn;
}
public void setAmountOut(String amountOut)
{
this.amountOut = amountOut;
}
public String getAmountOut()
{
return amountOut;
}
public void setUnit(String unit) public void setUnit(String unit)
{ {
this.unit = unit; this.unit = unit;
@ -106,6 +92,30 @@ public class BusiMaterialStock extends BaseEntity
return classify; return classify;
} }
public Long getAmountIn() {
return amountIn;
}
public void setAmountIn(Long amountIn) {
this.amountIn = amountIn;
}
public Long getAmountOut() {
return amountOut;
}
public void setAmountOut(Long amountOut) {
this.amountOut = amountOut;
}
public String getOrderName() {
return orderName;
}
public void setOrderName(String orderName) {
this.orderName = orderName;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -1,6 +1,10 @@
package com.ruoyi.busi.service.impl; package com.ruoyi.busi.service.impl;
import java.util.Date;
import java.util.List; import java.util.List;
import com.ruoyi.busi.domain.BusiMaterialStock;
import com.ruoyi.busi.mapper.BusiMaterialStockMapper;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -8,6 +12,7 @@ import com.ruoyi.busi.mapper.BusiMaterialOperateMapper;
import com.ruoyi.busi.domain.BusiMaterialOperate; import com.ruoyi.busi.domain.BusiMaterialOperate;
import com.ruoyi.busi.service.IBusiMaterialOperateService; import com.ruoyi.busi.service.IBusiMaterialOperateService;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
/** /**
* 物料操作流水Service业务层处理 * 物料操作流水Service业务层处理
@ -16,11 +21,13 @@ import com.ruoyi.common.core.text.Convert;
* @date 2021-12-24 * @date 2021-12-24
*/ */
@Service @Service
public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateService public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateService {
{
@Autowired @Autowired
private BusiMaterialOperateMapper busiMaterialOperateMapper; private BusiMaterialOperateMapper busiMaterialOperateMapper;
@Autowired
private BusiMaterialStockMapper busiMaterialStockMapper;
/** /**
* 查询物料操作流水 * 查询物料操作流水
* *
@ -28,8 +35,7 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 物料操作流水 * @return 物料操作流水
*/ */
@Override @Override
public BusiMaterialOperate selectBusiMaterialOperateById(Long id) public BusiMaterialOperate selectBusiMaterialOperateById(Long id) {
{
return busiMaterialOperateMapper.selectBusiMaterialOperateById(id); return busiMaterialOperateMapper.selectBusiMaterialOperateById(id);
} }
@ -40,8 +46,7 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 物料操作流水 * @return 物料操作流水
*/ */
@Override @Override
public List<BusiMaterialOperate> selectBusiMaterialOperateList(BusiMaterialOperate busiMaterialOperate) public List<BusiMaterialOperate> selectBusiMaterialOperateList(BusiMaterialOperate busiMaterialOperate) {
{
return busiMaterialOperateMapper.selectBusiMaterialOperateList(busiMaterialOperate); return busiMaterialOperateMapper.selectBusiMaterialOperateList(busiMaterialOperate);
} }
@ -52,12 +57,51 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) @Transactional(rollbackFor = Exception.class)
{ public int insertBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) {
busiMaterialOperate.setCreateTime(DateUtils.getNowDate()); // 先查询库存
List<BusiMaterialStock> busiMaterialStocks = queryBusiMaterialStocks(busiMaterialOperate);
BusiMaterialStock busiMaterialStock;
if (busiMaterialStocks.size() != 0) { // 已有库存则更新
busiMaterialStock = busiMaterialStocks.get(0);
if ("1".equals(busiMaterialOperate.getOprateType())) {
busiMaterialStock.setAmountIn(busiMaterialOperate.getAmount() + busiMaterialStock.getAmountIn());
} else {
busiMaterialStock.setAmountOut(busiMaterialOperate.getAmount() + busiMaterialStock.getAmountOut());
}
busiMaterialStockMapper.updateBusiMaterialStock(busiMaterialStock);
} else {// 没有库存则新建
busiMaterialStock = new BusiMaterialStock();
busiMaterialStock.setColor(busiMaterialOperate.getColor());
busiMaterialStock.setClassify(busiMaterialOperate.getClassify());
busiMaterialStock.setOrderId(busiMaterialOperate.getOrderId());
busiMaterialStock.setUnit(busiMaterialOperate.getUnit());
busiMaterialStock.setCreateTime(new Date());
busiMaterialStock.setCreateBy("system");
if ("1".equals(busiMaterialOperate.getOprateType())) {
busiMaterialStock.setAmountIn(busiMaterialOperate.getAmount());
} else {
busiMaterialStock.setAmountOut(busiMaterialOperate.getAmount());
}
busiMaterialStockMapper.insertBusiMaterialStock(busiMaterialStock);
}
busiMaterialOperate.setMaterialStockId(busiMaterialStock.getId());
// 插入操作流水
return busiMaterialOperateMapper.insertBusiMaterialOperate(busiMaterialOperate); return busiMaterialOperateMapper.insertBusiMaterialOperate(busiMaterialOperate);
} }
private List<BusiMaterialStock> queryBusiMaterialStocks(BusiMaterialOperate busiMaterialOperate) {
BusiMaterialStock stockQuery = new BusiMaterialStock();
stockQuery.setOrderId(busiMaterialOperate.getOrderId());
stockQuery.setColor(busiMaterialOperate.getColor());
stockQuery.setClassify(busiMaterialOperate.getClassify());
return busiMaterialStockMapper.selectBusiMaterialStockList(stockQuery);
}
/** /**
* 修改物料操作流水 * 修改物料操作流水
* *
@ -65,8 +109,7 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) public int updateBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) {
{
return busiMaterialOperateMapper.updateBusiMaterialOperate(busiMaterialOperate); return busiMaterialOperateMapper.updateBusiMaterialOperate(busiMaterialOperate);
} }
@ -77,8 +120,7 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteBusiMaterialOperateByIds(String ids) public int deleteBusiMaterialOperateByIds(String ids) {
{
return busiMaterialOperateMapper.deleteBusiMaterialOperateByIds(Convert.toStrArray(ids)); return busiMaterialOperateMapper.deleteBusiMaterialOperateByIds(Convert.toStrArray(ids));
} }
@ -89,8 +131,7 @@ public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateServi
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteBusiMaterialOperateById(Long id) public int deleteBusiMaterialOperateById(Long id) {
{
return busiMaterialOperateMapper.deleteBusiMaterialOperateById(id); return busiMaterialOperateMapper.deleteBusiMaterialOperateById(id);
} }
} }

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BusiMaterialStock" id="BusiMaterialStockResult"> <resultMap type="BusiMaterialStock" id="BusiMaterialStockResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="orderId" column="order_id" /> <result property="orderId" column="order_id" />
<result property="orderName" column="order_name" />
<result property="amountIn" column="amount_in" /> <result property="amountIn" column="amount_in" />
<result property="amountOut" column="amount_out" /> <result property="amountOut" column="amount_out" />
<result property="unit" column="unit" /> <result property="unit" column="unit" />
@ -19,21 +20,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectBusiMaterialStockVo"> <sql id="selectBusiMaterialStockVo">
select id, order_id, amount_in, amount_out, unit, color, classify, create_by, create_time, update_by, update_time from busi_material_stock select bms.id, bms.order_id,bo.order_name, bms.amount_in, bms.amount_out, bms.unit, bms.color, bms.classify, bms.create_by, bms.create_time, bms.update_by, bms.update_time
from busi_material_stock bms LEFT JOIN busi_order bo on bo.id = bms.order_id
</sql> </sql>
<select id="selectBusiMaterialStockList" parameterType="BusiMaterialStock" resultMap="BusiMaterialStockResult"> <select id="selectBusiMaterialStockList" parameterType="BusiMaterialStock" resultMap="BusiMaterialStockResult">
<include refid="selectBusiMaterialStockVo"/> <include refid="selectBusiMaterialStockVo"/>
<where> <where>
<if test="orderId != null and orderId != ''"> and order_id = #{orderId}</if> <if test="orderId != null and orderId != ''"> and bms.order_id = #{orderId}</if>
<if test="color != null and color != ''"> and color = #{color}</if> <if test="color != null and color != ''"> and bms.color = #{color}</if>
<if test="classify != null and classify != ''"> and classify = #{classify}</if> <if test="classify != null and classify != ''"> and bms.classify = #{classify}</if>
</where> </where>
</select> </select>
<select id="selectBusiMaterialStockById" parameterType="String" resultMap="BusiMaterialStockResult"> <select id="selectBusiMaterialStockById" parameterType="String" resultMap="BusiMaterialStockResult">
<include refid="selectBusiMaterialStockVo"/> <include refid="selectBusiMaterialStockVo"/>
where id = #{id} where bms.id = #{id}
</select> </select>
<insert id="insertBusiMaterialStock" parameterType="BusiMaterialStock" useGeneratedKeys="true" keyProperty="id"> <insert id="insertBusiMaterialStock" parameterType="BusiMaterialStock" useGeneratedKeys="true" keyProperty="id">

View File

@ -132,7 +132,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectMaterialRequireByOrderId" parameterType="String" resultType="java.util.Map"> <select id="selectMaterialRequireByOrderId" parameterType="String" resultType="java.util.Map">
select max(A.classify) classifyCode,max(sdd2.dict_label) classifyVal, max(A.color) colorCode, max(sdd.dict_label) colorVal,sum(A.amount) amount, MAX(sdd3.dict_label) unitVal select max(A.classify) classifyCode,max(sdd2.dict_label) classifyVal, max(A.color) colorCode, max(sdd.dict_label) colorVal,sum(A.amount) amount, MAX(sdd3.dict_label) unitVal, max(A.unit) as unitCode
from busi_material_require A from busi_material_require A
left join busi_product_require B on A.product_require_id = B.id left join busi_product_require B on A.product_require_id = B.id
left join busi_order bo on B.order_id = bo.id left join busi_order bo on B.order_id = bo.id

View File

@ -16,7 +16,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label" title="若无对应的物料选项,请先在产品需求中添加物料需求">物料选择:<i class="fa fa-question-circle-o"></i></label> <label class="col-sm-3 control-label" title="若无对应的物料选项,请先在产品需求中添加物料需求">物料选择:<i class="fa fa-question-circle-o"></i></label>
<div class="col-sm-8"> <div class="col-sm-8">
<select id="post" class="form-control required" > <select id="post" name="colorAndType" class="form-control required" >
</select> </select>
</div> </div>
@ -91,7 +91,7 @@
$("#post").append("<option value=''>请选择物料</option>"); $("#post").append("<option value=''>请选择物料</option>");
if (result.code == web_status.SUCCESS) { if (result.code == web_status.SUCCESS) {
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var val = data[i].colorCode + ';' + data[i].classifyCode; var val = data[i].colorCode + ';' + data[i].classifyCode + ';' + data[i].unitCode;
var text = data[i].colorVal + ',' + data[i].classifyVal; var text = data[i].colorVal + ',' + data[i].classifyVal;
var requireAmount = data[i].amount + data[i].unitVal; var requireAmount = data[i].amount + data[i].unitVal;
$("#post").append("<option requireAmount='" + requireAmount + "' value='" + val + "'>" + text + "</option>"); $("#post").append("<option requireAmount='" + requireAmount + "' value='" + val + "'>" + text + "</option>");

View File

@ -11,8 +11,9 @@
<div class="select-list"> <div class="select-list">
<ul> <ul>
<li> <li>
<label>所属订单:</label> <label>订单名称:</label>
<input type="text" name="orderId"/> <input id="treeId" name="orderId" type="text" style="display: none;">
<input id="treeName" name="orderName" type="text" readonly="true" onclick="selectOrder()" >
</li> </li>
<li> <li>
<label>颜色:</label> <label>颜色:</label>
@ -61,6 +62,7 @@
var editFlag = [[${@permission.hasPermi('busi:materialtock:edit')}]]; var editFlag = [[${@permission.hasPermi('busi:materialtock:edit')}]];
var removeFlag = [[${@permission.hasPermi('busi:materialtock:remove')}]]; var removeFlag = [[${@permission.hasPermi('busi:materialtock:remove')}]];
var colorDatas = [[${@dict.getType('busi_color')}]]; var colorDatas = [[${@dict.getType('busi_color')}]];
var unitDatas = [[${@dict.getType('busi_material_unit')}]];
var classifyDatas = [[${@dict.getType('busi_material_type')}]]; var classifyDatas = [[${@dict.getType('busi_material_type')}]];
var prefix = ctx + "busi/materialtock"; var prefix = ctx + "busi/materialtock";
@ -81,20 +83,30 @@
visible: false visible: false
}, },
{ {
field: 'orderId', field: 'orderName',
title: '所属订单' title: '所属订单'
}, },
// {
// field: 'amountIn',
// title: '进库量'
// },
// {
// field: 'amountOut',
// title: '出库量'
// },
{ {
field: 'amountIn', field: 'amount',
title: '进库量' title: '库存量',
}, formatter: function(value, row, index) {
{ return row.amountIn - row.amountOut;
field: 'amountOut', }
title: '出库量'
}, },
{ {
field: 'unit', field: 'unit',
title: '单位' title: '单位',
formatter: function(value, row, index) {
return $.table.selectDictLabel(unitDatas, value);
}
}, },
{ {
field: 'color', field: 'color',
@ -123,6 +135,23 @@
}; };
$.table.init(options); $.table.init(options);
}); });
/*订单选择*/
function selectOrder() {
var options = {
title: '选择订单',
width: "380",
height: "400",
url: ctx + "busi/order/selectOrder/" ,
callBack: function(index, layero){
var body = $.modal.getChildFrame(index);
$("#treeId").val(body.find('#treeId').val());
$("#treeName").val(body.find('#treeName').val());
$.modal.close(index);
}
};
$.modal.openOptions(options);
}
</script> </script>
</body> </body>
</html> </html>

View File

@ -120,7 +120,7 @@
}; };
$.table.init(options); $.table.init(options);
}); });
/*客户公司选择*/ /*订单选择*/
function selectOrder() { function selectOrder() {
var options = { var options = {
title: '选择订单', title: '选择订单',