Browse Source

Merge remote-tracking branch 'origin/master'

zhanglei
God 11 months ago
parent
commit
2ad9f74032
  1. 129
      anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue
  2. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecord.java
  3. 3
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordUpdateDto.java
  4. 2
      anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/appaybill/ApPayBill.java
  5. 6
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java
  6. 1
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/ApPayBillService.java
  7. 3
      anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/data_FPAYBILLENTRY.json
  8. 8
      anrui-riskcenter-ui/src/api/customerrepayment/customerrepayment.js
  9. 152
      anrui-riskcenter-ui/src/views/customerrepayment/customerrepayment.vue
  10. 14
      anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

129
anrui-buscenter/anrui-finmanage-ui/src/views/anruifinmanagement/chunafukuan/chunafukuanguanli/cashier.vue

@ -162,7 +162,7 @@
<el-row>
<el-col :span="24">
<el-form-item>
<el-image style="width: 178px;height: 178px;" v-for="(item) in url_list" @click="open(item)" :src="item"></el-image>
<el-image style="width: 178px;height: 178px;" v-for="(item, index) in url_list" @click="open(item)" :key="index" :src="item"></el-image>
</el-form-item>
</el-col>
</el-row>
@ -171,106 +171,80 @@
<el-dialog :visible.sync="dialogUrlVisible" :append-to-body="true">
<img width="100%" :src="dialogUrl" alt="">
</el-dialog>
<el-dialog :visible.sync="dialogVisible" width="60%" center :show-close="false">
<el-form ref="form_obj" :rules="rules" :model="formobj" class="formadd">
<el-dialog :visible.sync="dialogVisible" width="70%" center :show-close="false">
<el-form ref="form_obj" :rules="rules" :model="formobj" class="formaddcopy02">
<el-row style="border-top: 1px solid #e0e3eb">
<el-col :span="4">
<span><span class="icon">*</span>收款单位名称</span>
</el-col>
<el-col :span="8">
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>收款单位名称</div>
<el-form-item prop="receiveCompany">
<el-select v-model="formobj.receiveCompany" placeholder="请选择" @change="changerRceiveCompany" class="addinputw" clearable>
<el-select class="addinputInfo addinputw" v-model="formobj.receiveCompany" placeholder="请选择" @change="changerRceiveCompany" clearable filterable>
<el-option v-for="item in receiveCompany_list" :key="item.sid" :label="item.name" :value="item.name"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<span><span class="icon">*</span>收款银行账号</span>
</el-col>
<el-col :span="8">
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>收款银行账号</div>
<el-form-item prop="receiveBankAccount">
<el-select v-model="formobj.receiveBankAccount" placeholder="请选择" @change="changeReceiveBankAccount" class="addinputw" clearable>
<el-select class="addinputInfo addinputw" v-model="formobj.receiveBankAccount" placeholder="请选择" @change="changeReceiveBankAccount" clearable filterable>
<el-option v-for="item in receiveBankAccount_list" :key="item.receiveBankAccount" :label="item.receiveBankAccount" :value="item.receiveBankAccount"/>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<span>收款账户开户行</span>
</el-col>
<el-col :span="8">
<el-form-item>
<span>{{ formobj.receiveBank }}</span>
</el-form-item>
<el-col :span="24">
<div class="span-sty">收款账户开户行</div>
<el-form-item><span class="addinputInfo">{{ formobj.receiveBank }}</span></el-form-item>
</el-col>
<el-col :span="4">
<span><span class="icon">*</span>付款金额</span>
</el-row>
<el-row>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>付款金额</div>
<el-form-item prop="cost"><el-input class="addinputInfo addinputw" v-model="formobj.cost" :disabled="disabledCost" clearable placeholder="" /></el-form-item>
</el-col>
<el-col :span="8">
<el-form-item prop="cost">
<el-input v-model="formobj.cost" :disabled="disabledCost" clearable placeholder="" class="addinputw" />
</el-form-item>
<el-col :span="12">
<div class="span-sty">付款手续费</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.paymentCharges" clearable placeholder="对应金蝶付款单”手续费“" /></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<span><span class="icon">*</span>付款方式</span>
</el-col>
<el-col :span="8">
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>付款方式</div>
<el-form-item prop="payWayValue">
<el-select v-model="formobj.payWayValue" placeholder="请选择" @change="changePayWay" clearable>
<el-select class="addinputInfo addinputw" v-model="formobj.payWayValue" placeholder="请选择" @change="changePayWay" clearable filterable>
<el-option v-for="item in payWay_list" :key="item.dictKey" :label="item.dictValue" :value="item.dictValue"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<span><span class="icon">*</span>付款日期</span>
</el-col>
<el-col :span="8">
<el-form-item prop="payDate">
<el-date-picker v-model="formobj.payDate" type="date" clearable value-format="yyyy-MM-dd" style="width: 93%" placeholder="请选择日期"/>
</el-form-item>
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>付款日期</div>
<el-form-item prop="payDate"><el-date-picker class="addinputInfo addinputw" v-model="formobj.payDate" type="date" clearable value-format="yyyy-MM-dd" placeholder="请选择日期"/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<span><span class="icon">*</span>付款账号</span>
</el-col>
<el-col :span="8">
<el-col :span="12">
<div class="span-sty"><span class="icon">*</span>付款账号</div>
<el-form-item prop="payBankAccount">
<el-select v-model="formobj.payBankAccount" placeholder="请选择" @change="changePayBankAccount" class="addinputw" clearable>
<el-select class="addinputInfo addinputw" v-model="formobj.payBankAccount" placeholder="请选择" @change="changePayBankAccount" clearable filterable>
<el-option v-for="item in payBankAccount_list" :key="item.bankAccount" :label="item.bankAccount" :value="item.bankAccount"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<span>开户名称</span>
</el-col>
<el-col :span="8">
<el-form-item>
<span>{{ formobj.payBank }}</span>
</el-form-item>
<el-col :span="12">
<div class="span-sty">开户名称</div>
<el-form-item><span class="addinputInfo">{{ formobj.payBank }}</span></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<span>本次付款说明</span>
</el-col>
<el-col :span="20">
<el-form-item>
<el-input v-model="formobj.payRemark" placeholder="请填写本次付款说明" clearable/>
</el-form-item>
<el-col :span="24">
<div class="span-sty">本次付款说明</div>
<el-form-item><el-input class="addinputInfo addinputw" v-model="formobj.payRemark" placeholder="请填写本次付款说明" clearable/></el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="4">
<span><span class="icon">*</span>付款凭证</span>
</el-col>
<el-col :span="20">
<el-form-item>
<upload ref="uploadImg" v-model="diploma_list" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/>
</el-form-item>
<el-col :span="24">
<div class="span-sty"><span class="icon">*</span>付款凭证</div>
<el-form-item><upload ref="uploadImg" class="addinputInfo" v-model="diploma_list" :accept="accept" :limit="50" bucket="map" :upload-data="{ type: '0001' }"/></el-form-item>
</el-col>
</el-row>
</el-form>
@ -405,7 +379,8 @@ export default {
receiveBank: '', //
receiveBankAccount: '', //
payCode: '', //
cost: ''
cost: '',
paymentCharges: ''
},
disabledCost: false,
imgList: [],
@ -414,7 +389,7 @@ export default {
payDate: [{ required: true, message: '请选择付款日期', trigger: 'blur' }],
payBankAccount: [{ required: true, message: '请选择付款账号', trigger: 'change' }],
receiveCompany: [{ required: true, message: '收款单位不能为空', trigger: 'change' }],
receiveBankAccount: [{ required: true, message: '收款银行账号不能为空', trigger: 'change' }],
receiveBankAccount: [{ required: true, message: '收款银行账号不能为空', trigger: 'change' }],
cost: [{ required: true, message: '付款金额不能为空', trigger: 'blur' }]
}
}
@ -801,7 +776,8 @@ export default {
receiveBank: '', //
receiveBankAccount: '', //
payCode: '', //
cost: ''
cost: '',
paymentCharges: ''
}
this.disabledCost = false
this.submitdisabled = false
@ -816,12 +792,17 @@ export default {
}
</script>
<style scoped>
/deep/ .el-col-4 {
text-align: right;
float: left;
font-size: 14px;
color: #606266;
line-height: 40px !important;
font-weight: 600;
.span-sty {
width: 130px !important;
}
.addinputInfo {
margin-left: 120px !important;
}
/deep/ .el-form-item__error {
margin-left: 120px !important;
}
.formaddcopy02 .el-row .el-col /deep/ .el-form-item .addinputw {
margin-left: 120px !important;
width: calc(100% - 115px);
}
</style>

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecord.java

@ -115,4 +115,6 @@ public class FinPaymentrecord extends BaseEntity {
private String purchaseSystemName; // 采购系统名称
@ApiModelProperty("付款时备注内容")
private String busRemarks;
@ApiModelProperty(value = "付款手续费")
private BigDecimal paymentCharges;
}

3
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/finpaymentrecord/FinPaymentrecordUpdateDto.java

@ -52,4 +52,7 @@ public class FinPaymentrecordUpdateDto implements Dto {
private String cost;
@ApiModelProperty(value = "应收金额")
private String accountsReceive;
@ApiModelProperty(value = "付款手续费")
private String paymentCharges;
}

2
anrui-fin/anrui-fin-api/src/main/java/com/yxt/anrui/fin/api/kingdee/appaybill/ApPayBill.java

@ -86,6 +86,8 @@ public class ApPayBill {
/**
* 结算方式:FSETTLETYPEIDKey (必填项)
*/
@JsonProperty("FHANDLINGCHARGEFOR")
public double FHANDLINGCHARGEFOR; //手续费
@JsonProperty("FSETTLETYPEIDKey")
@NotBlank(message = "FSETTLETYPEIDKey不能为空")
public String FSETTLETYPEIDKey;

6
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/finpaymentrecord/FinPaymentrecordService.java

@ -592,6 +592,10 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
if (finPaymentrecord.getCost() != null
&& finPaymentrecord.getCost().compareTo(BigDecimal.ZERO) > 0) {
ApPayBill.FPAYBILLENTRY fpaybillentry = new ApPayBill.FPAYBILLENTRY();
//手续费
if (null != finPaymentrecord.getPaymentCharges()) {
fpaybillentry.setFHANDLINGCHARGEFOR(finPaymentrecord.getPaymentCharges().doubleValue());
}
//应付金额
fpaybillentry.setFPAYTOTALAMOUNTFOR(finPaymentrecord.getCost().doubleValue());
//登账日期
@ -1098,4 +1102,4 @@ public class FinPaymentrecordService extends MybatisBaseService<FinPaymentrecord
}
}
}

1
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/ApPayBillService.java

@ -12,6 +12,7 @@ import com.yxt.anrui.portal.api.sysmapping.SysMappingInfoQuery;
import com.yxt.anrui.portal.api.sysmapping.SysMappingInfoQueryBatch;
import com.yxt.anrui.portal.api.sysmapping.SysMappingInfoVo;
import com.yxt.common.core.result.ResultBean;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;

3
anrui-fin/anrui-fin-biz/src/main/java/com/yxt/anrui/fin/biz/kingdee/appaybill/data_FPAYBILLENTRY.json

@ -5,6 +5,7 @@
"FPURPOSEID": {
"FNumber": "@KD_FPURPOSEID"
},
"FHANDLINGCHARGEFOR": @KD_FHANDLINGCHARGEFOR,
"FPAYTOTALAMOUNTFOR": @KD_FPAYTOTALAMOUNTFOR,
"FPAYAMOUNTFOR_E": @KD_FPAYTOTALAMOUNTFOR,
"FSETTLEPAYAMOUNTFOR": @KD_FPAYTOTALAMOUNTFOR,
@ -14,4 +15,4 @@
"FPOSTDATE": "@KD_FPOSTDATE",
"FRuZhangType": "1",
"FPayType": "A"
}
}

8
anrui-riskcenter-ui/src/api/customerrepayment/customerrepayment.js

@ -19,6 +19,14 @@ export default {
headers: { 'Content-Type': 'application/json' }
})
},
// 客户还款情况计划表 -- 生成休眠还款记录
importSleepHistoryData: function(params) {
return request({
url: '/riskcenter/v1/loanrepaymentschedule/importSleepHistoryData',
method: 'post',
params: params
})
},
// 客户还款情况计划表 -- 导出
exportExcel(data) {
return request({

152
anrui-riskcenter-ui/src/views/customerrepayment/customerrepayment.vue

@ -125,6 +125,44 @@
<!--End查询列表部分-->
</div>
</div>
<el-dialog :visible.sync="dialogVisible" width="70%" :show-close="false">
<!-- <div>-->
<!-- <el-button style="font-weight: bold" size="small" type="text" @click="downLoad">下载厂家索赔单模板</el-button>-->
<!-- </div>-->
<el-card class="box-card">
<div>
<el-upload
ref="upload"
class="upload-demo"
accept=".xls"
name="file"
:action="updateAction"
:on-success="handleSuccess"
:on-change="handleChange"
:on-remove="handleRemove"
:file-list="fileList"
:auto-upload="false"
:multiple="false"
:limit="1"
:data="uploadData"
:headers="headers"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传</el-button>
</el-upload>
</div>
<div>
<h3>文件上传结果</h3>
<el-card class="box-card">
<div>{{ uploadResultMesssage }}</div>
</el-card>
</div>
</el-card>
<div slot="footer" class="dialog-footer" style="text-align: center">
<el-button type="primary" size="small" @click="handleConfirm">确定</el-button>
<el-button size="small" @click="dialogVisible = false">取消</el-button>
</div>
</el-dialog>
</div>
</template>
@ -133,6 +171,7 @@ import Pagination from '@/components/pagination'
import pageye from '@/components/pagination/pageye'
import ButtonBar from '@/components/ButtonBar'
import req from '@/api/customerrepayment/customerrepayment'
import { getButtonPermissions } from '@/api/Common/dictcommons'
export default {
name: 'CustomerRepayment',
@ -144,7 +183,39 @@ export default {
data() {
return {
btndisabled: false,
dialogVisible: false,
updateAction: '',
fileList: [],
uploadResultMesssage: '',
uploadData: {
fileName: '',
userSid: window.sessionStorage.getItem('userSid')
},
headers: {
token: window.sessionStorage.getItem('token')
},
btnList: [
{
type: 'primary',
size: 'small',
icon: 'Import',
btnKey: 'historyImport',
btnLabel: '贷后历史数据导入'
},
{
type: 'primary',
size: 'small',
icon: 'Import',
btnKey: 'detailImport',
btnLabel: '休眠还款计划明细导入'
},
{
type: 'primary',
size: 'small',
icon: 'Import',
btnKey: 'recordImport',
btnLabel: '生成休眠还款记录'
},
{
type: 'primary',
size: 'small',
@ -237,7 +308,18 @@ export default {
this.getList()
},
mounted() {
this.$refs['btnbar'].setButtonList(this.btnList)
getButtonPermissions({ userSid: window.sessionStorage.getItem('userSid'), url: this.$route.path, type: 0 }).then((res) => {
if (res.success) {
for (var i = 0; i < res.data.length; i++) {
for (var k = 0; k < this.btnList.length; k++) {
if (res.data[i].buttonId === this.btnList[k].btnKey) {
this.btnList.splice(k, 1)
}
}
}
this.$refs['btnbar'].setButtonList(this.btnList)
}
})
},
methods: {
//
@ -252,6 +334,15 @@ export default {
btnHandle(btnKey) {
console.log('XXXXXXXXXXXXXXX ' + btnKey)
switch (btnKey) {
case 'historyImport':
this.historyImport()
break
case 'detailImport':
this.detailImport()
break
case 'recordImport':
this.recordImport()
break
case 'doExport':
this.doExport()
break
@ -329,6 +420,65 @@ export default {
}
this.getList()
},
historyImport() {
this.dialogVisible = true
this.updateAction = process.env.VUE_APP_BASE_API + '/riskcenter/v1/loanrepaymentschedule/importHistoryData'
this.fileList = []
this.uploadResultMesssage = ''
},
detailImport() {
this.dialogVisible = true
this.updateAction = process.env.VUE_APP_BASE_API + '/riskcenter/v1/loanrepaymentschedule/importSleepData'
this.fileList = []
this.uploadResultMesssage = ''
},
recordImport() {
const tip = '请确认是否生成休眠数据还款记录'
this.$confirm(tip, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
const loading = this.$loading({
lock: true,
text: 'Loading',
spinner: 'el-icon-loading',
background: 'rgba(0, 0, 0, 0.7)'
})
req.importSleepHistoryData({ userSid: window.sessionStorage.getItem('userSid') }).then((resp) => {
if (resp.success) {
this.$message({ type: 'success', message: resp.msg, showClose: true })
}
this.getList()
loading.close()
}).catch(e => {
loading.close()
})
}).catch(() => {
})
},
handleChange(file) {
this.uploadData.fileName = file.name
},
handleRemove() {
this.uploadResultMesssage = ''
},
submitUpload() {
this.$refs.upload.submit()
},
handleSuccess(resp, file, fileList) {
const _this = this
if (resp.success) {
_this.uploadResultMesssage = resp.msg
//
} else {
_this.uploadResultMesssage = resp.msg
}
},
handleConfirm() {
this.dialogVisible = false
this.getList()
},
doExport() {
const loading = this.$loading({
lock: true,

14
anrui-riskcenter/anrui-riskcenter-biz/src/main/java/com/yxt/anrui/riskcenter/biz/loanrepaymentschedule/LoanRepaymentScheduleService.java

@ -4902,7 +4902,13 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
if (null != orgDept) {
customerNoPrefix = customerNoPrefix + orgDept.getOrgCode();
}
customerNoPrefix = customerNoPrefix + mobile + HanZiConverterPinYin.getPinYinFirst(name);
String customerNo = "";
try {
customerNo = HanZiConverterPinYin.getPinYinFirst(name);
} catch (Throwable t) {
t.printStackTrace();
}
customerNoPrefix = customerNoPrefix + mobile + customerNo;
System.out.println(customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix);
return customerNoPrefix.length() > 30 ? customerNoPrefix.substring(0, 30) : customerNoPrefix;
}
@ -5220,6 +5226,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
//主方案
for (int i = 0; i < mainPeriod; i++) {
LoanRepaymentPlanDetails mainDto = new LoanRepaymentPlanDetails();
mainDto.setIsEnable(3);
mainDto.setCreateBySid(userSid);
mainDto.setSalesOrderSid(salesOrderSid);
mainDto.setLoanContractNo(loanContractNo);
@ -5259,6 +5266,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
if (scheduleDetails.getIsOtherPolicy().equals("1")) {
for (int i = 0; i < Integer.parseInt(oPeriod); i++) {
LoanRepaymentPlanDetails otherDto = new LoanRepaymentPlanDetails();
otherDto.setIsEnable(3);
otherDto.setCreateBySid(userSid);
otherDto.setSalesOrderSid(salesOrderSid);
otherDto.setLoanContractNo(loanContractNo);
@ -5310,6 +5318,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
//主方案
for (int i = 0; i < mainPeriod; i++) {
LoanRepaymentPlanDetails mainDto = new LoanRepaymentPlanDetails();
mainDto.setIsEnable(3);
mainDto.setCreateBySid(userSid);
mainDto.setSalesOrderSid(salesOrderSid);
mainDto.setLoanContractNo(loanContractNo);
@ -5484,7 +5493,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
} catch (Exception e) {
e.printStackTrace();
}
return rb.success();
return rb.success().setMsg("导入成功");
}
@ -5645,6 +5654,7 @@ public class LoanRepaymentScheduleService extends MybatisBaseService<LoanRepayme
LoanRepaymentPlanDetails p = new LoanRepaymentPlanDetails();
BeanUtil.copyProperties(importSleepData, p, "id", "sid");
p.setCreateBySid(userSid);
p.setIsEnable(3);
planDetails.add(p);
}
loanRepaymentPlanDetailsService.saveList(planDetails);

Loading…
Cancel
Save