1.基本功能 1.基本功能
1.1.数据流转配置 1.1.数据流转配置
1.场景1:
⽆界⾯数据流转:点击按钮,根据⽅法参数查询原对象数据,并根据映射关系新增到⽬标对象中。
2.场景2:
弹窗数据流转(更新):选择要更新的数据,点击⽅法按钮跳转到原对象维护⻚⾯,选择界⾯数据并确认,根据映射关系更新⾄⽬标对象选中⾏数据。
3.场景3:
弹窗数据流转(新增):点击⽅法按钮跳转到原对象维护⻚⾯,选择界⾯数据并确认,根据映射关系新增到⽬标对象⻚⾯。
1.2.对账单-添加单据-添加按钮 1.2.对账单-添加单据-添加按钮
1、在收款对账单管理页面选中一条记录点击编辑跳转收款对账单编辑页面,在收款对账单编辑页面点击【添加单据】按钮跳转到添加单据页面,在添加单据页面里面根据查询条件查出数据,勾选查询数据点击【添加】按钮把勾选的数据带到收款对账单编辑页面的子表表格里面。
2、效果图如下:
2.配置方法 2.配置方法
2.1.数据流转配置 2.1.数据流转配置
- 对象建模 –> 数据流转,点击【新增】按钮,输入数据流转代码、数据流转名称、原对象名称、目标对象名称,创建数据流转映射。
- 点击【可视化编辑】按钮,通过可视化编辑维护对象映射关系字段。
注意:
1)映射关系只能⼀对⼀、⼀对多,不可多对。
2)维护映射关系字段赋值
值类型:
默认(不填写):将原属性值赋值给⽬标对象属性
不处理:不赋值(null)
常量:字符串或数字
变量:变量名称
表达式:⽅法或运算
固定值:平台默认值,如当前⻆⾊、当前⽤户等
- 编辑业务对象,进入方法定义tab页,新增一个方法。
1)⽆界⾯数据流转:
配置⽅式:指定⽅法类型:请求⽅法;指定数据流转代码名称;维护⽅法参数。
2)弹窗数据流转(更新):
配置⽅式:指定⽅法类型:批量更新;指定数据流转代码名称;指定弹窗跳转地址。
3)弹窗数据流转(新增):
配置⽅式:指定⽅法类型:弹出窗口;指定数据流转代码名称;指定弹窗跳转地址。
- 编辑业务对象,点击【可视化布局】按钮进入可视化界面,配置数据流转按钮。
- 设置完后点击保存,并提交业务对象。
部分代码示例
1. ⽆界⾯数据流转:
- 弹窗数据流转(更新):
- 弹窗数据流转(新增):
2.2.对账单-添加单据-添加按钮 2.2.对账单-添加单据-添加按钮
- 在收款对账单的子业务对象VwFreightAndPublic上自定义一个添加单据的方法,方法类型是自定义JS,同时在主业务对象bcLedgerCompGather勾选’是否需扩展JS’选项,避免生成的代码覆盖自定义代码。
3.常用扩展 3.常用扩展
3.1.对账单-添加单据-添加按钮 3.1.对账单-添加单据-添加按钮
对账单-添加单据-添加按钮
- 在bcLedgerCompGatherEditCtrl.js文件里面自定义写这个方法,具体代码参考如下:
$scope.toBfVwFreightAndPublic = function(){
var url = "/wj_bms_www/html/bill/freightpublic/vwFreightAndPublicManage.html";
if (url.indexOf("?") >= 0) {
url = url + "&";
} else {
url = url + "?";
}
var openType = "1";
if (url.indexOf("?") >= 0) {
url = url + "&openType=" + openType;
} else {
url = url + "?openType=" + openType;
}
var b = false;
var options = {
title: '添加单据',
data:$scope.bcLedgerCompGather,
closable: true,
modal: true,
url: url,
width: 1300,
height: 600,
onBeforeClose: function() {
debugger
vwFreightAndPublic.getGatherById($scope.bcLedgerCompGather,function (obj) {
$scope.bcLedgerCompGather = obj.obj;
})
if (!b) {
$timeout(function() {
b = true;
indexScope.closeModal();
});
}
return b;
}
};
debugger
var indexScope = top.angular.element("body").scope();
indexScope.showUrl(options);
};
- 在收款对账单的子业务对象VwFreightAndPublic上自定义一个添加的方法,方法类型是自定义JS,同时该子业务对象VwFreightAndPublic勾选’是否需扩展JS’选项,避免生成的代码覆盖自定义代码。
- 在vwFreightAndPublicManageCtrl.js文件里面文件里面自定义写这个方法,具体代码参考如下:
$scope.addbfVwFreightAndPublic = function(){
debugger
$scope.bsf = {};
$scope.ids = {};
if($scope.vwFreightAndPublicCheckedRows.length<1){
GillionMsg.alert("提示信息", "请至少选择一条数据进行添加!");
}else{
GillionMsg.confirm("提示信息", "添加选中的内容?",function(answer) {
if (answer) {
for (var i = 0; i < $scope.vwFreightAndPublicCheckedRows.length; i++) {
$scope.ids[i] = $scope.vwFreightAndPublicCheckedRows[i].bcFreightId;
}
debugger
$scope.bsf[0] = $scope.inputData.bcLedgerCompId;
$scope.bsf[1] = $scope.ids;
$scope.bsf[2] = $scope.inputData.compNo;
$scope.bsf[3] = $scope.inputData.rpFlag;
if($scope.inputData.rpFlag=="1"){
vwFreightAndPublic.updateGatherStatus($scope.bsf, function (obj) {
debugger
if (obj.success == true) {
GillionMsg.alert("操作成功", "添加成功!");
GillionMsgService.close();
}
$scope.queryVwFreightAndPublic();
})
}else if($scope.inputData.rpFlag=="2"){
vwFreightAndPublic.updatePaymentStatus($scope.bsf, function (obj) {
debugger
if (obj.success == true) {
GillionMsg.alert("操作成功", "添加成功!");
GillionMsgService.close();
}
$scope.queryVwFreightAndPublic();
})
}
}
})
}
};
- 自定义控制器代码参考如下:
//添加收款单据
@RequestMapping( value="/bcLedgerCompGather/updateGatherStatus" ,method= RequestMethod.POST)
@ResponseBody
public Map<String,Object> updatestatus(@RequestBody Map<String,Object> bfsMap){
return ext.updateBcFreightAndBcLedgerCompGather(bfsMap);
}
- 自定义接口类代码参考如下:
/**
* 添加单据逻辑 更新对账单数据
* 抽取出来是因为 有收款和付款
* @param bfsMap
* @return
*/
Map<String,Object> updateBcFreightByBcLedgerCompGather(Map<String,Object> bfsMap);
- 自定义实现类代码参考如下:
/**
* 添加单据逻辑 更新对账单数据
* 抽取出来是因为 有收款和付款
* @param bfsMap
* @return
*/
public Map<String,Object> updateBcFreightByBcLedgerCompGather(Map<String,Object> bfsMap){
//前台传的 0为对账单id 1为ids 2为no 3为收付款标志
String id = bfsMap.get(BusinessConstants.LEDGER_COMP_KEY.ZERO).toString();
Map<String,String> bfs = (Map<String,String>) bfsMap.get(BusinessConstants.LEDGER_COMP_KEY.ONE);
String compNo = bfsMap.get(BusinessConstants.LEDGER_COMP_KEY.TWO).toString();
String rpFlag = bfsMap.get(BusinessConstants.LEDGER_COMP_KEY.THREE).toString();
//查询对账单是否已对账
BcLedgerCompGather bcLedgerCompGather = bcLedgerCompGatherService.get(id);
if(bcLedgerCompGather.getAuditStatus().equals("1")){
return ResultUtils.getFaildResultData("对账单已确认,不可编辑!");
}
//设置查询条件
BcFreightExample example = new BcFreightExample();
BcFreightExample.Criteria criteria = example.createCriteria();
criteria.andBcLedgerCompIdEqualTo(id);
List<BcFreight> bcFreightList = bcFreightService.selectByExample(example);
List<BcFreight> bclist = new ArrayList<>();
//遍历map 设置值 并添加到集合
for(Map.Entry<String,String> entry :bfs.entrySet()){
String bfid = entry.getValue();
BcFreight bf = bcFreightService.get(bfid);
bf.setCreateTime(bf.getCreateTime());
bf.setCompNo(compNo);
bf.setBcLedgerCompId(id);
bf.setCompStatus(BusinessConstants.LEDGER_COMP_KEY.COMP_STATUS_NOW);
bf.setRowStatus(BusinessConstants.LEDGER_COMP_KEY.UPDATE);
bcFreightList.add(bf);
bclist.add(bf);
}
List<BcLedgerCompGather> gathersList = bcLedgerCompGatherExt.getBcLedgerCompGathers(bcFreightList);
gathersList.get(0).setBcLedgerCompId(id);
StringBuffer str = new StringBuffer();
//根据收付款标识 进行不同操作
this.saveOrUopdateGather(gathersList,rpFlag,BusinessConstants.LEDGER_COMP_KEY.UPDATE,str);
if(str.toString().equals("")){
for(BcFreight bf :bclist){
bcFreightService.updateByPrimaryKey(bf);
}
return ResultUtils.getSuccessResultData("创建成功!");
}else{
if(bcLedgerCompGather.getRpFlag().equals(BusinessConstants.LEDGER_COMP_KEY.R_FLAG)){
// str.append("所选金额超出限制,请去付款对账单添加!");
str = new StringBuffer("部分金额合计为负数,请到付款对账单中创建!");
return ResultUtils.getFaildResultData(str.toString());
}else{
// str.append("所选金额超出限制,请去收款对账单添加!");
str = new StringBuffer("部分金额合计为负数,请到收款对账单中创建!");
return ResultUtils.getFaildResultData(str.toString());
}
}
}