完成物料操作流水新增功能和物料库存查看完善
This commit is contained in:
parent
e501180c2c
commit
44dba2b232
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>");
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -120,7 +120,7 @@
|
|||
};
|
||||
$.table.init(options);
|
||||
});
|
||||
/*客户公司选择*/
|
||||
/*订单选择*/
|
||||
function selectOrder() {
|
||||
var options = {
|
||||
title: '选择订单',
|
||||
|
|
|
|||
Loading…
Reference in New Issue