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

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;
import java.util.List;
import com.ruoyi.common.utils.DateUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
@ -86,6 +88,9 @@ public class BusiMaterialOperateController extends BaseController
@ResponseBody
public AjaxResult addSave(BusiMaterialOperate busiMaterialOperate)
{
busiMaterialOperate.setCreateBy(getLoginName());
busiMaterialOperate.setCreateTime(DateUtils.getNowDate());
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.core.domain.BaseEntity;
import java.util.Optional;
/**
* 物料操作流水对象 busi_material_operate
*
*
* @author WangCL
* @date 2021-12-24
*/
public class BusiMaterialOperate extends BaseEntity
{
public class BusiMaterialOperate extends BaseEntity {
private static final long serialVersionUID = 1L;
/** ID主键 */
/**
* ID主键
*/
private Long id;
/** 订单 */
/**
* 订单
*/
@Excel(name = "订单")
private String materialStockId;
/** 操作数量 */
/**
* 操作数量
*/
@Excel(name = "操作数量")
private Long amount;
/** 操作类型 */
/**
* 操作类型
*/
@Excel(name = "操作类型")
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;
}
public Long getId()
{
public Long getId() {
return id;
}
public void setMaterialStockId(String materialStockId)
{
public void setMaterialStockId(String materialStockId) {
this.materialStockId = materialStockId;
}
public String getMaterialStockId()
{
public String getMaterialStockId() {
return materialStockId;
}
public void setAmount(Long amount)
{
public void setAmount(Long amount) {
this.amount = amount;
}
public Long getAmount()
{
public Long getAmount() {
return amount;
}
public void setOprateType(String oprateType)
{
public void setOprateType(String oprateType) {
this.oprateType = oprateType;
}
public String getOprateType()
{
public String getOprateType() {
return oprateType;
}
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("materialStockId", getMaterialStockId())
.append("amount", getAmount())
.append("oprateType", getOprateType())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("remark", getRemark())
.toString();
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("materialStockId", getMaterialStockId())
.append("amount", getAmount())
.append("oprateType", getOprateType())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("remark", getRemark())
.toString();
}
}

View File

@ -19,16 +19,19 @@ public class BusiMaterialStock extends BaseEntity
private String id;
/** 所属订单 */
@Excel(name = "所属订单")
private String orderId;
/** 所属订单名称 */
@Excel(name = "所属订单")
private String orderName;
/** 进库量 */
@Excel(name = "进库量")
private String amountIn;
private Long amountIn;
/** 出库量 */
@Excel(name = "出库量")
private String amountOut;
private Long amountOut;
/** 单位 */
@Excel(name = "单位")
@ -60,24 +63,7 @@ public class BusiMaterialStock extends BaseEntity
{
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)
{
this.unit = unit;
@ -106,6 +92,30 @@ public class BusiMaterialStock extends BaseEntity
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
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

View File

@ -1,6 +1,10 @@
package com.ruoyi.busi.service.impl;
import java.util.Date;
import java.util.List;
import com.ruoyi.busi.domain.BusiMaterialStock;
import com.ruoyi.busi.mapper.BusiMaterialStockMapper;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -8,89 +12,126 @@ import com.ruoyi.busi.mapper.BusiMaterialOperateMapper;
import com.ruoyi.busi.domain.BusiMaterialOperate;
import com.ruoyi.busi.service.IBusiMaterialOperateService;
import com.ruoyi.common.core.text.Convert;
import org.springframework.transaction.annotation.Transactional;
/**
* 物料操作流水Service业务层处理
*
*
* @author WangCL
* @date 2021-12-24
*/
@Service
public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateService
{
public class BusiMaterialOperateServiceImpl implements IBusiMaterialOperateService {
@Autowired
private BusiMaterialOperateMapper busiMaterialOperateMapper;
@Autowired
private BusiMaterialStockMapper busiMaterialStockMapper;
/**
* 查询物料操作流水
*
*
* @param id 物料操作流水主键
* @return 物料操作流水
*/
@Override
public BusiMaterialOperate selectBusiMaterialOperateById(Long id)
{
public BusiMaterialOperate selectBusiMaterialOperateById(Long id) {
return busiMaterialOperateMapper.selectBusiMaterialOperateById(id);
}
/**
* 查询物料操作流水列表
*
*
* @param busiMaterialOperate 物料操作流水
* @return 物料操作流水
*/
@Override
public List<BusiMaterialOperate> selectBusiMaterialOperateList(BusiMaterialOperate busiMaterialOperate)
{
public List<BusiMaterialOperate> selectBusiMaterialOperateList(BusiMaterialOperate busiMaterialOperate) {
return busiMaterialOperateMapper.selectBusiMaterialOperateList(busiMaterialOperate);
}
/**
* 新增物料操作流水
*
*
* @param busiMaterialOperate 物料操作流水
* @return 结果
*/
@Override
public int insertBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate)
{
busiMaterialOperate.setCreateTime(DateUtils.getNowDate());
@Transactional(rollbackFor = Exception.class)
public int insertBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) {
// 先查询库存
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);
}
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);
}
/**
* 修改物料操作流水
*
*
* @param busiMaterialOperate 物料操作流水
* @return 结果
*/
@Override
public int updateBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate)
{
public int updateBusiMaterialOperate(BusiMaterialOperate busiMaterialOperate) {
return busiMaterialOperateMapper.updateBusiMaterialOperate(busiMaterialOperate);
}
/**
* 批量删除物料操作流水
*
*
* @param ids 需要删除的物料操作流水主键
* @return 结果
*/
@Override
public int deleteBusiMaterialOperateByIds(String ids)
{
public int deleteBusiMaterialOperateByIds(String ids) {
return busiMaterialOperateMapper.deleteBusiMaterialOperateByIds(Convert.toStrArray(ids));
}
/**
* 删除物料操作流水信息
*
*
* @param id 物料操作流水主键
* @return 结果
*/
@Override
public int deleteBusiMaterialOperateById(Long id)
{
public int deleteBusiMaterialOperateById(Long id) {
return busiMaterialOperateMapper.deleteBusiMaterialOperateById(id);
}
}

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BusiMaterialStock" id="BusiMaterialStockResult">
<result property="id" column="id" />
<result property="orderId" column="order_id" />
<result property="orderName" column="order_name" />
<result property="amountIn" column="amount_in" />
<result property="amountOut" column="amount_out" />
<result property="unit" column="unit" />
@ -19,21 +20,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<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>
<select id="selectBusiMaterialStockList" parameterType="BusiMaterialStock" resultMap="BusiMaterialStockResult">
<include refid="selectBusiMaterialStockVo"/>
<where>
<if test="orderId != null and orderId != ''"> and order_id = #{orderId}</if>
<if test="color != null and color != ''"> and color = #{color}</if>
<if test="classify != null and classify != ''"> and classify = #{classify}</if>
<if test="orderId != null and orderId != ''"> and bms.order_id = #{orderId}</if>
<if test="color != null and color != ''"> and bms.color = #{color}</if>
<if test="classify != null and classify != ''"> and bms.classify = #{classify}</if>
</where>
</select>
<select id="selectBusiMaterialStockById" parameterType="String" resultMap="BusiMaterialStockResult">
<include refid="selectBusiMaterialStockVo"/>
where id = #{id}
where bms.id = #{id}
</select>
<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 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
left join busi_product_require B on A.product_require_id = B.id
left join busi_order bo on B.order_id = bo.id

View File

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

View File

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

View File

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