产品需求功能完善

This commit is contained in:
wangcl 2021-12-23 16:31:35 +08:00
parent 6deaf5ebfb
commit de4349daec
6 changed files with 92 additions and 16 deletions

View File

@ -1,6 +1,9 @@
package com.ruoyi.busi.controller; package com.ruoyi.busi.controller;
import java.util.Collections;
import java.util.List; import java.util.List;
import org.apache.commons.collections4.ListUtils;
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 +89,15 @@ public class BusiProductRequireController extends BaseController
@ResponseBody @ResponseBody
public AjaxResult addSave(BusiProductRequire busiProductRequire) public AjaxResult addSave(BusiProductRequire busiProductRequire)
{ {
BusiProductRequire query = new BusiProductRequire();
query.setOrderId(busiProductRequire.getOrderId());
query.setColor(busiProductRequire.getColor());
query.setSize(busiProductRequire.getSize());
List<BusiProductRequire> list = busiProductRequireService.selectBusiProductRequireList(query);
if(!list.isEmpty()){
return error("该订单已存在相同尺码颜色的产品");
}
return toAjax(busiProductRequireService.insertBusiProductRequire(busiProductRequire)); return toAjax(busiProductRequireService.insertBusiProductRequire(busiProductRequire));
} }

View File

@ -21,9 +21,12 @@ public class BusiProductRequire extends BaseEntity
/** ID主键 */ /** ID主键 */
private String id; private String id;
/** 订单ID */
private String orderId;
/** 订单名称 */ /** 订单名称 */
@Excel(name = "订单名称") @Excel(name = "订单名称")
private String orderId; private String orderName;
/** 数量 */ /** 数量 */
@Excel(name = "数量") @Excel(name = "数量")
@ -110,11 +113,20 @@ public class BusiProductRequire extends BaseEntity
this.busiMaterialRequireList = busiMaterialRequireList; this.busiMaterialRequireList = busiMaterialRequireList;
} }
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)
.append("id", getId()) .append("id", getId())
.append("orderId", getOrderId()) .append("orderId", getOrderId())
.append("orderName", getOrderName())
.append("amount", getAmount()) .append("amount", getAmount())
.append("size", getSize()) .append("size", getSize())
.append("color", getColor()) .append("color", getColor())

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BusiProductRequire" id="BusiProductRequireResult"> <resultMap type="BusiProductRequire" id="BusiProductRequireResult">
<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="amount" column="amount" /> <result property="amount" column="amount" />
<result property="size" column="size" /> <result property="size" column="size" />
<result property="color" column="color" /> <result property="color" column="color" />
@ -35,23 +36,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectBusiProductRequireVo"> <sql id="selectBusiProductRequireVo">
select id, order_id, amount, size, color, create_by, create_time, update_by, update_time, end_date from busi_product_require select A.id, A.order_id,B.order_name, A.amount,A.size, A.color, A.create_by, A.create_time, A.update_by, A.update_time, A.end_date
from busi_product_require A LEFT JOIN busi_order B on A.order_id = B.id
</sql> </sql>
<select id="selectBusiProductRequireList" parameterType="BusiProductRequire" resultMap="BusiProductRequireResult"> <select id="selectBusiProductRequireList" parameterType="BusiProductRequire" resultMap="BusiProductRequireResult">
<include refid="selectBusiProductRequireVo"/> <include refid="selectBusiProductRequireVo"/>
<where> <where>
<if test="orderId != null and orderId != ''"> and order_id like concat('%', #{orderId}, '%')</if> <if test="orderId != null and orderId != ''"> and A.order_id = #{orderId}</if>
<if test="size != null and size != ''"> and size = #{size}</if> <if test="size != null and size != ''"> and A.size = #{size}</if>
<if test="color != null and color != ''"> and color = #{color}</if> <if test="color != null and color != ''"> and A.color = #{color}</if>
</where> </where>
order by A.update_time desc
</select> </select>
<select id="selectBusiProductRequireById" parameterType="String" resultMap="BusiProductRequireBusiMaterialRequireResult"> <select id="selectBusiProductRequireById" parameterType="String" resultMap="BusiProductRequireBusiMaterialRequireResult">
select a.id, a.order_id, a.amount, a.size, a.color, a.create_by, a.create_time, a.update_by, a.update_time, a.end_date, select a.id, a.order_id,c.order_name, a.amount, a.size, a.color, a.create_by, a.create_time, a.update_by, a.update_time, a.end_date,
b.id as sub_id, b.product_require_id as sub_product_require_id, b.amount as sub_amount, b.unit as sub_unit, b.color as sub_color, b.classify as sub_classify, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time b.id as sub_id, b.product_require_id as sub_product_require_id, b.amount as sub_amount, b.unit as sub_unit, b.color as sub_color, b.classify as sub_classify, b.create_by as sub_create_by, b.create_time as sub_create_time, b.update_by as sub_update_by, b.update_time as sub_update_time
from busi_product_require a from busi_product_require a
left join busi_material_require b on b.product_require_id = a.id left join busi_material_require b on b.product_require_id = a.id
left join busi_order c on c.id = a.order_id
where a.id = #{id} where a.id = #{id}
</select> </select>

View File

@ -11,7 +11,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">所属订单:</label> <label class="col-sm-3 control-label is-required">所属订单:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<!-- <input name="orderId" class="form-control" type="text" required>--> <input id="treeId" name="orderId" type="hidden">
<input id="treeName" name="orderName" readonly="true" onclick="selectOrder(1)" class="form-control" type="text" required> <input id="treeName" name="orderName" readonly="true" onclick="selectOrder(1)" class="form-control" type="text" required>
</div> </div>
</div> </div>
@ -70,11 +70,34 @@
}); });
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if (sizeAndColorValidate() && $.validate.form()) {
$.operate.save(prefix + "/add", $('#form-productRequire-add').serialize()); $.operate.save(prefix + "/add", $('#form-productRequire-add').serialize());
} }
} }
function sizeAndColorValidate() {
var colors = $("table select[name$='color']");
var classify = $("table select[name$='classify']");
colors.removeClass("error");
classify.removeClass("error");
var colorAndClassify = [];
var result = true;
classify.each(function (i, ele) {
var ele = colors[i].value + classify[i].value;
var index = colorAndClassify.indexOf(ele);
if ( index >= 0) {
$(colors[i]).addClass("error");
$(classify[i]).addClass("error");
$(colors[index]).addClass("error");
$(classify[index]).addClass("error");
result = false;
} else {
colorAndClassify.push(ele);
}
});
return result;
}
$("input[name='endDate']").datetimepicker({ $("input[name='endDate']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
@ -107,7 +130,7 @@
align: 'center', align: 'center',
title: '数量', title: '数量',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var html = $.common.sprintf("<input class='form-control' type='text' name='busiMaterialRequireList[%s].amount' value='%s'>", index, value); var html = $.common.sprintf("<input class='form-control digits required' type='text' name='busiMaterialRequireList[%s].amount' value='%s'>", index, value);
return html; return html;
} }
}, },

View File

@ -12,19 +12,20 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">所属订单:</label> <label class="col-sm-3 control-label is-required">所属订单:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="orderId" th:field="*{orderId}" class="form-control" type="text" required> <input name="orderId" th:field="*{orderId}" class="form-control" type="hidden">
<input name="orderId" th:field="*{orderName}" class="form-control" type="text" readonly>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label">数量:</label> <label class="col-sm-3 control-label">数量:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input name="amount" th:field="*{amount}" class="form-control" type="text"> <input name="amount" th:field="*{amount}" class="form-control digits required" type="text">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">尺码:</label> <label class="col-sm-3 control-label is-required">尺码:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="size" class="form-control m-b" th:with="type=${@dict.getType('busi_size')}" required> <select name="size" class="form-control m-b" disabled th:with="type=${@dict.getType('busi_size')}" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{size}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{size}"></option>
</select> </select>
</div> </div>
@ -32,7 +33,7 @@
<div class="form-group"> <div class="form-group">
<label class="col-sm-3 control-label is-required">颜色:</label> <label class="col-sm-3 control-label is-required">颜色:</label>
<div class="col-sm-8"> <div class="col-sm-8">
<select name="color" class="form-control m-b" th:with="type=${@dict.getType('busi_color')}" required> <select name="color" class="form-control m-b" disabled th:with="type=${@dict.getType('busi_color')}" required>
<option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{color}"></option> <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{color}"></option>
</select> </select>
</div> </div>
@ -70,14 +71,38 @@
}); });
function submitHandler() { function submitHandler() {
if ($.validate.form()) { if (colorAndClassifyValidate() && $.validate.form()) {
$.operate.save(prefix + "/edit", $('#form-productRequire-edit').serialize()); $.operate.save(prefix + "/edit", $('#form-productRequire-edit').serialize());
} }
} }
function colorAndClassifyValidate() {
var colors = $("table select[name$='color']");
var classify = $("table select[name$='classify']");
colors.removeClass("error");
classify.removeClass("error");
var colorAndClassify = [];
var result = true;
classify.each(function (i, ele) {
var ele = colors[i].value + classify[i].value;
var index = colorAndClassify.indexOf(ele);
if ( index >= 0) {
$(colors[i]).addClass("error");
$(classify[i]).addClass("error");
$(colors[index]).addClass("error");
$(classify[index]).addClass("error");
result = false;
} else {
colorAndClassify.push(ele);
}
});
return result;
}
$("input[name='endDate']").datetimepicker({ $("input[name='endDate']").datetimepicker({
format: "yyyy-mm-dd", format: "yyyy-mm-dd",
minView: "month", minView: "month",
startDate: new Date(),
autoclose: true autoclose: true
}); });
@ -107,7 +132,7 @@
align: 'center', align: 'center',
title: '数量', title: '数量',
formatter: function(value, row, index) { formatter: function(value, row, index) {
var html = $.common.sprintf("<input class='form-control' type='text' name='busiMaterialRequireList[%s].amount' value='%s'>", index, value); var html = $.common.sprintf("<input class='form-control digits required' type='text' name='busiMaterialRequireList[%s].amount' value='%s'>", index, value);
return html; return html;
} }
}, },

View File

@ -82,7 +82,7 @@
visible: false visible: false
}, },
{ {
field: 'orderId', field: 'orderName',
title: '订单名称' title: '订单名称'
}, },
{ {