目的:(次表)回款明细表内的回款金额(invoiceSum)应小于合同总额(contractSum)和(主表)回款表内的回款总额(paySum)
思路:首先要写出校验,类似于校验唯一性一样,然后在SQL语句中(Mapper.xml),写出求和的SQL语句,然后在Controller层中调用SQL求和语句,然后最后的判断写在前端页面上(例如:你需要新增的时候判断,就写在add中,修改的,就写在edit中)
主表&次表实体类:int
次表dao层:
public String checkInvoiceSumByPayId(FdContractPaymentr contractPaymentr);
主表dao层:
public String checkPaySumByPayId(FdContractPayment contractPayment);
次表service层:
public String checkInvoiceSumByPayId(FdContractPaymentr contractPaymentr);`
主表service层:
public String checkRemainScale(FdContractPayitem contractPayitem);
次表service.impl层:
@Override
public String checkInvoiceSumByPayId(FdContractPaymentr contractPaymentr) {
return contractPaymentrMapper.checkInvoiceSumByPayId(contractPaymentr);
}
主表service.impl层:
@Override
public String checkPaySumByPayId(FdContractPayment contractPayment) {
return contractPaymentMapper.checkPaySumByPayId(contractPayment);
}
次表SQL语句(Mapper.xml):
<select id="checkInvoiceSumByPayId" parameterType="FdContractPaymentr" resultType="String">
select sum(invoice_sum) from fd_contract_paymentr where pay_id = #{payId}
</select>
主表SQL语句(Mapper.xml):
<select id="checkPaySumByPayId" parameterType="FdContractPayment" resultType="string">
select sum(pay_sum) from fd_contract_payment where pay_id = #{payId}
</select>
次表controller层:
@PostMapping("/checkInvoiceSumByPayId")
@ResponseBody
public double checkInvoiceSumByPayId(FdContractPaymentr contractPaymentr,FdContractPayment contractPayment) {
String num = contractPaymentrService.checkInvoiceSumByPayId(contractPaymentr);
String sum = contractPaymentService.checkPaySumByPayId(contractPayment);
if(sum==null||num==null){
return 100000000.00;
}else{
return Double.valueOf(sum)-Double.valueOf(num);
}
}
add页面:
$("#form-paymentr-add").validate({
onkeyup: false,
rules: {
/* contractSum:{
isSum:true,
}, */
invoiceSum:{
isSum:true,
**remote: {
url: prefix + "/checkInvoiceSumByPayId",
type: "post",
dataType: "json",
data: {
"payId": function() {
return $.common.trim($("#payId").val());
}
},
dataFilter: function(data, type) {
console.log(data)
console.log(type)
var isum = $("#invoiceSum").val();
var csum = $("#contractSum").val();
return 0<=csum-isum&&0<=data-isum;
}
},**
}
},
messages: {
},
focusCleanup: true
});