Commit 2d8dc0bd authored by 刘学辉's avatar 刘学辉

供应商主数据维护

parent 4ae37c28
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree,date"/>
<x:script src='/biz/topsun/sap/suppliers/suppliersDataDetail.js'/>
</head>
<body>
<x:billTitle title="供应商主数据维护申请表" needStatus="false" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<%-- <x:hidden name="billCode"/>--%>
<%-- <x:hidden name="fillinDate" type="datetime"/>--%>
<x:hidden name="fullId"/>
<x:hidden name="organId"/>
<x:hidden name="organName"/>
<x:hidden name="deptId"/>
<%-- <x:hidden name="deptName"/>--%>
<x:hidden name="positionId"/>
<x:hidden name="positionName"/>
<x:hidden name="personMemberId"/>
<%-- <x:hidden name="personMemberName"/>--%>
<x:title title="申请人填写区域" name="group"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="billCode" label="申请单编号" labelCol="1" readonly="true" fieldCol="2"/>
<x:inputC name="personMemberName" label="申请人" readonly="true" labelCol="1" fieldCol="2"/>
<x:inputC name="deptName" label="申请部门" readonly="true" labelCol="1" fieldCol="2"/>
<x:inputC name="fillinDate" label="申请日期" readonly="true" wrapper="date" labelCol="1" fieldCol="2"/>
</div>
</div>
<x:title title="供应商主数据" name="group"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="rltgr" label="BP角色" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="buGroup" label="业务伙伴分组" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="partner" label="业务伙伴编号" labelCol="1" fieldCol="2"/>
<x:inputC name="title" label="称谓代码" labelCol="1" fieldCol="2"/>
<x:inputC name="nameOrg1" label="组织名称1" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="nameOrg2" label="组织名称2" labelCol="1" fieldCol="2"/>
<x:inputC name="nameOrg3" label="组织名称3" labelCol="1" fieldCol="2"/>
<x:inputC name="nameOrg4" label="组织名称4" labelCol="1" fieldCol="2"/>
<x:inputC name="buSort1" label="业务伙伴的搜索词1" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="buSort2" label="业务伙伴的搜索词2" labelCol="1" fieldCol="2"/>
<x:inputC name="street" label="街道" labelCol="1" fieldCol="2"/>
<x:inputC name="strSuppl1" label="街道2" labelCol="1" fieldCol="2"/>
<x:inputC name="strSuppl2" label="街道3" labelCol="1" fieldCol="2"/>
<x:inputC name="strSuppl3" label="街道4" labelCol="1" fieldCol="2"/>
<x:inputC name="land1" label="国家/地区代码" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="region" label="地区" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="langu" label="语言关键字" labelCol="1" fieldCol="2"/>
<x:inputC name="city1" label="城市" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="postCode1" label="城市邮政编码" labelCol="1" fieldCol="2"/>
<x:inputC name="telNumber" label="第一个电话号码" labelCol="1" fieldCol="2"/>
<x:inputC name="telExtens" label="第一个电话号码分机" labelCol="1" fieldCol="2"/>
<x:inputC name="mobNumber" label="第一个移动电话号码" labelCol="1" fieldCol="2"/>
<x:inputC name="mobExtens" label="第一个移动电话号码分机" labelCol="1" fieldCol="2"/>
<x:inputC name="faxNumber" label="第一个传真号" labelCol="1" fieldCol="2"/>
<x:inputC name="faxExtens" label="第一个传真号分机号" labelCol="1" fieldCol="2"/>
<x:inputC name="smtpAddr" label="电子邮件地址" labelCol="1" fieldCol="2"/>
<x:inputC name="ktokk" label="供应商帐户组" labelCol="1" fieldCol="2"/>
<x:inputC name="sperm" label="集中设置的采购冻结" labelCol="1" fieldCol="2"/>
<x:inputC name="sperr" label="中心记帐冻结" labelCol="1" fieldCol="2"/>
<x:inputC name="vbund" label="贸易合作伙伴的公司标识" labelCol="1" fieldCol="2"/>
<x:inputC name="kunnr" label="客户编号" labelCol="1" fieldCol="2"/>
<x:inputC name="stenr" label="责任税务部门的税收编号" labelCol="1" fieldCol="2" required="true"/>
</div>
</div>
<div class="blank_div clearfix"></div>
<div id="sapSuppliersPayGrid" style="margin: 2px;"></div>
<div class="blank_div clearfix"></div>
<div id="sapSuppliersBuyerGrid" style="margin: 2px;"></div>
<div class="blank_div clearfix"></div>
<div id="sapSuppliersBankGrid" style="margin: 2px;"></div>
</form>
</body>
</html>
var gridManager = null;
$(document).ready(function () {
initializateUI()
loadSuppliersDataListGrid();
})
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3});
}
function loadSuppliersDataListGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function (){
addHandler()
},
deleteHandler: deleteHandler
/* testHandler: {id: 'basicInfoMaintenance', text: '基本信息维护', img: 'fa-music', className: 'btn-gray',
click: function () {
let result=DataUtil.getUpdateRow(gridManager);
if(result.status!==3){
Public.tip("请选择一条已审核后数据!")
return false;
}
UICtrl.addTabItem({
tabid: 'showNonProdApplyNext'+result.id,
text: "非产品/非本成品类物料主数据维护申请详情",
url: web_app.name + '/sapNonProdApplyNext/forwardNonProdApplyNext.do?bizId='+result.id
});
}
}*/
});
gridManager = UICtrl.grid("#suppliersDataListGrid", {
columns: [
{display: "申请单编号", name: "billCode", width: 60, minWidth: 60, type: "string", align: "left"},
{display: "申请状态", name: "statusTextView", width: 60, minWidth: 60, type: "string", align: "left"},
{display: "申请人", name: "personMemberName", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "申请部门", name: "deptName", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "申请日期", name: "fillinDate", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "业务伙伴编号", name: "partner", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "组织名称1", name: "nameOrg1", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "组织名称2", name: "nameOrg2", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "组织名称3", name: "nameOrg3", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "组织名称4", name: "nameOrg4", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "业务伙伴的搜索词1", name: "buSort1", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "业务伙伴的搜索词2", name: "buSort2", width: 140, minWidth: 60, type: "string", align: "left"},
// {display: "通用品名", name: "genericName", width: 140, minWidth: 60, type: "string", align: "left"},
// {display: "适用标准", name: "applicableStandard", width: 140, minWidth: 60, type: "string", align: "left"},
//{display: "基本计量单位", name: "baseUnitTextView", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "地区", name: "region", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "国家", name: "land1", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "街道", name: "street", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "城市", name: "city1", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "邮编", name: "postCode1", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "税收编号", name: "stenr", width: 140, minWidth: 60, type: "string", align: "left"},
],
dataAction: "server",
url: web_app.name + '/sapSuppliersData/slicedSuppliersDataList.ajax',
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
async: false,
fixedCellHeight: true,
selectRowButtonOnly: true,
onDblClickRow: function (data, rowindex, rowobj) {
doView(data.id);
},
onAfterShowData: function (data){
console.log(data)
}
});
UICtrl.setSearchAreaToggle(gridManager);
}
function query(obj) {
var param = $(obj).formToJSON();
UICtrl.gridSearch(gridManager, param);
}
function reloadGrid() {
gridManager.loadData();
}
function resetForm(obj) {
$(obj).formClean();
}
//删除按钮
function deleteHandler() {
DataUtil.del({
action: 'sapSuppliersData/deleteSuppliersData.ajax',
gridManager: gridManager, idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
}
function addHandler() {
UICtrl.addTabItem({
tabid: 'suppliersDataApply',
text: "供应商主数据维护申请",
url: web_app.name + '/sapSuppliersData/forwardSuppliersDataApply.job'
});
}
function doView(id) {
UICtrl.addTabItem({
tabid: 'suppliersData'+id,
text: "供应商主数据申请详情",
url: web_app.name + '/sapSuppliersData/showSuppliersData.job?bizId='+id+"&isDetailPage=true"
});
}
// function next(){
// UICtrl.addTabItem({
// tabid: 'showNonProdApplyNext',
// text: "非产品/非本成品类物料主数据维护申请详情",
// url: web_app.name + '/sapNonProdApply/forwardNonProdApplyNext.do?isDetailPage=true'
// });
// }
\ No newline at end of file
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree"/>
<x:script src='/biz/topsun/sap/suppliers/suppliersDataList.js'/>
</head>
<body>
<div class="container-fluid">
<%-- <x:button value="next" onclick="next()" icon="fa-save"/>--%>
<div class="ui-hide">
<x:select name="processType" dictionary="processType"/>
<x:select name="yesorno" dictionary="yesorno"/>
</div>
<div id="layout">
<div position="center" title="供应商主数据查询">
<x:title title="common.button.search" hideTable="queryMainForm" isHide="true"/>
<form class="hg-form ui-hide" method="post" action="" id="queryMainForm">
<x:inputC name="proofingApplyNo" required="false" label="申请单号" labelCol="1"/>
<x:searchButtons/>
</form>
<div class="blank_div clearfix"></div>
<div id="suppliersDataListGrid" style="margin: 2px;"></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
package com.huigou.topsun.sap.suppliers.application;
import com.huigou.topsun.sap.nonProdApply.domain.query.NonProdApplyBaseInfoQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBank;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBuyer;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
import com.huigou.topsun.sap.suppliers.domain.SuppliersPay;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBankQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBuyerQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersDataQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersPayQueryRequest;
import org.springframework.data.domain.Sort;
import java.util.List;
import java.util.Map;
public interface SuppliersDataApplication {
String PROCESS_DEFINITION_KEY = "sapSuppliersDataProc";
String QUERY_XML_FILE_PATH= "config/topsun/sap/sapSuppliersData/suppliersData.xml";
Map<String, Object> slicedSuppliersDataQuery(SuppliersDataQueryRequest query);
SuppliersInfo loadSuppliersDataById(String id);
Map<String, Object> loadSuppliersPayDatas(SuppliersPayQueryRequest queryRequest);
Map<String, Object> loadSuppliersBuyerDatas(SuppliersBuyerQueryRequest queryRequest);
Map<String, Object> loadSuppliersBankDatas(SuppliersBankQueryRequest queryRequest);
}
package com.huigou.topsun.sap.suppliers.application.impl;
import com.huigou.cache.DictUtil;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.nonProdApply.application.NonProdApplyApplication;
import com.huigou.topsun.sap.nonProdApply.domain.NonProdApplyBaseInfo;
import com.huigou.topsun.sap.nonProdApply.domain.SapNonProdApplyDept;
import com.huigou.topsun.sap.priceMasterData.domain.SapPriceMasterDataItem;
import com.huigou.topsun.sap.suppliers.application.SuppliersDataApplication;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBank;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBuyer;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
import com.huigou.topsun.sap.suppliers.domain.SuppliersPay;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBankQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBuyerQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersDataQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersPayQueryRequest;
import com.huigou.topsun.sap.suppliers.repository.SuppliersBankRepository;
import com.huigou.topsun.sap.suppliers.repository.SuppliersBuyerRepository;
import com.huigou.topsun.sap.suppliers.repository.SuppliersInfoRepository;
import com.huigou.topsun.sap.suppliers.repository.SuppliersPayRepository;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.util.ClassHelper;
import com.huigou.util.StringUtil;
import lombok.SneakyThrows;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Service("suppliersDataApplication")
public class SuppliersDataApplicationImpl extends FlowBroker implements SuppliersDataApplication {
@Autowired
SuppliersInfoRepository suppliersInfoRepository;
@Autowired
SuppliersPayRepository suppliersPayRepository;
@Autowired
SuppliersBuyerRepository suppliersBuyerRepository;
@Autowired
SuppliersBankRepository suppliersBankRepository;
@Override
public Map<String, Object> slicedSuppliersDataQuery(SuppliersDataQueryRequest query){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "slicedSuppliersInfoQuery");
QueryModel model = this.sqlExecutorDao.getQueryModel(queryDescriptor, query);
// model.putDictionary("maintenanceType", DictUtil.getDictionary("maintainType"));
// model.putDictionary("baseUnit", DictUtil.getDictionary("measuringUnit"));
// model.putDictionary("itemAttributes", DictUtil.getDictionary("suppliesType"));
// model.putDictionary("businessUsage", DictUtil.getDictionary("serviceusage"));
// model.putDictionary("status", DictUtil.getDictionary("bizBillStatus"));
return this.sqlExecutorDao.executeSlicedQuery(model);
}
@SneakyThrows
@Transactional(propagation = Propagation.REQUIRES_NEW)
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
SuppliersInfo suppliersInfo = getBizEntity(SuppliersInfo.class);
List<SuppliersPay> suppliersPayList = getBizEntities(SuppliersPay.class, "suppliersPayList");
List<SuppliersBuyer> suppliersBuyerList = getBizEntities(SuppliersBuyer.class, "suppliersBuyerList");
List<SuppliersBank> suppliersBankList = getBizEntities(SuppliersBank.class, "suppliersBankList");
if (suppliersInfo.isNew()) {
suppliersInfo.setStatusId(BizBillStatus.APPLYING.getId());
} else {
suppliersInfo = (SuppliersInfo) commonDomainService.loadAndFillinProperties(suppliersInfo);
}
suppliersInfo = suppliersInfoRepository.save(suppliersInfo);
for (SuppliersPay pay:suppliersPayList){
pay.setSId(suppliersInfo.getId());
this.suppliersPayRepository.save(pay);
}
for (SuppliersBuyer buyer:suppliersBuyerList){
buyer.setSId(suppliersInfo.getId());
this.suppliersBuyerRepository.save(buyer);
}
for (SuppliersBank bank:suppliersBankList){
bank.setSId(suppliersInfo.getId());
this.suppliersBankRepository.save(bank);
}
return suppliersInfo.getId();
}
@Override
protected Map<String, Object> getProcessBizParams(String bizId) {
// 返回业务数据给流程实例,
return ClassHelper.toMap(suppliersInfoRepository.getOne(bizId));
}
/**
* 流程实例结束
*
* @param delegateExecution
*/
@Override
protected void onEnd(DelegateExecution delegateExecution) {
super.onEnd(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
SuppliersInfo suppliersInfo = suppliersInfoRepository.findOne(bizId);
suppliersInfo.setStatusId(status.getId());
suppliersInfoRepository.save(suppliersInfo);
}
@Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
super.onAbortProcessInstance(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
SuppliersInfo suppliersInfo = suppliersInfoRepository.findOne(bizId);
suppliersInfo.setStatusId(BizBillStatus.ABORTED.getId());
suppliersInfoRepository.save(suppliersInfo);
}
/**
* @param delegateTask
* @param destActivityId 回退到的目标节点id
*/
@Override
protected void onBack(DelegateTask delegateTask, String destActivityId) {
super.onBack(delegateTask, destActivityId);
if ("Apply".equalsIgnoreCase(destActivityId)) {
String bizId = delegateTask.getExecution().getProcessBusinessKey();
SuppliersInfo suppliersInfo= suppliersInfoRepository.findOne(bizId);
suppliersInfo.setStatusId(BizBillStatus.APPLYING.getId());
suppliersInfoRepository.save(suppliersInfo);
}
}
@Override
public SuppliersInfo loadSuppliersDataById(String id) {
SuppliersInfo suppliersInfo=suppliersInfoRepository.findOne(id);
return suppliersInfo;
}
@Override
public Map<String, Object> loadSuppliersPayDatas(SuppliersPayQueryRequest queryRequest){
// System.out.println("sId=============="+sId);
// Sort sort = new Sort(Sort.Direction.ASC, "sequence");
// List<SuppliersPay> list=suppliersPayRepository.findAllBySId(sId, sort);
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "slicedSuppliersPayList");
// SuppliersPayQueryRequest queryRequest=new SuppliersPayQueryRequest();
// queryRequest.setSId(sId);
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
// queryModel.putDictionary("konwa", DictUtil.getDictionary("currency"));
queryModel.addCriteria(" and t.s_id =:sId");
queryModel.putParam("sId", queryRequest.getSId());
return this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
@Override
public Map<String, Object> loadSuppliersBuyerDatas(SuppliersBuyerQueryRequest queryRequest){
//return this.suppliersBuyerRepository.findBysId(sId);
// Sort sort = new Sort(Sort.Direction.ASC, "sequence");
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "slicedSuppliersBuyerList");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.addCriteria(" and t.s_id =:sId");
queryModel.putParam("sId", queryRequest.getSId());
return this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
@Override
public Map<String, Object> loadSuppliersBankDatas(SuppliersBankQueryRequest queryRequest){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "slicedSuppliersBankList");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.addCriteria(" and t.s_id =:sId");
queryModel.putParam("sId", queryRequest.getSId());
return this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
}
package com.huigou.topsun.sap.suppliers.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.base.bsnMessage.domain.BsnMessageReject;
import com.huigou.topsun.sap.nonProdApply.application.NonProdApplyApplication;
import com.huigou.topsun.sap.nonProdApply.domain.NonProdApplyBaseInfo;
import com.huigou.topsun.sap.nonProdApply.domain.query.NonProdApplyBaseInfoQueryRequest;
import com.huigou.topsun.sap.priceMasterData.domain.query.SapPriceMasterDataItemQueryRequest;
import com.huigou.topsun.sap.suppliers.application.SuppliersDataApplication;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBank;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBuyer;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
import com.huigou.topsun.sap.suppliers.domain.SuppliersPay;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBankQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersBuyerQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersDataQueryRequest;
import com.huigou.topsun.sap.suppliers.domain.query.SuppliersPayQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.List;
import java.util.Map;
/**
* @Auther: LXH
*
* @Date: 2024/03/01
* @Description:
*/
@Controller
@ControllerMapping("/sapSuppliersData")
public class SuppliersDataController extends CommonController {
protected String getPagePath() {
return "/biz/topsun/sap/suppliers/";
}
@Autowired
SuppliersDataApplication suppliersDataApplication;
public String forwardSuppliersDataList() {
return forward("suppliersDataList");
}
public String slicedSuppliersDataList() {
SDO sdo = this.getSDO();
SuppliersDataQueryRequest queryRequest = sdo.toQueryRequest(SuppliersDataQueryRequest.class);
Map<String, Object> map = suppliersDataApplication.slicedSuppliersDataQuery(queryRequest);
return toResult(map);
}
public String forwardSuppliersDataApply() {
this.putAttribute("processDefinitionKey",SuppliersDataApplication.PROCESS_DEFINITION_KEY);
this.putAttribute("procUnitId","Apply");//定义流程环节的id
SuppliersInfo suppliersInfo = new SuppliersInfo();
suppliersInfo.setStatusId(BizBillStatus.APPLYING.getId());
Operator operator = getOperator();//获取当前操作员的详情信息
suppliersInfo.setDefaultValues(new OrgUnit(operator.getFullId(),operator.getFullName()));
return forward("suppliersDataDetail",suppliersInfo);
}
public String showSuppliersData() {
SDO sdo = this.getSDO();
String id = sdo.getBizId();
String isDetailPage = sdo.getString("isDetailPage");
if("true".equals(isDetailPage)) this.putAttribute("isDetailPage","true");
SuppliersInfo suppliersInfo = suppliersDataApplication.loadSuppliersDataById(id);
return forward("suppliersDataDetail", suppliersInfo);
}
public String slicedSuppliersPayData(){
SDO sdo = this.getSDO();
SuppliersPayQueryRequest queryRequest=sdo.toQueryRequest(SuppliersPayQueryRequest.class);
queryRequest.setSId(sdo.getString("sId"));
Map<String, Object> map = suppliersDataApplication.loadSuppliersPayDatas(queryRequest);
return toResult(map);
}
public String slicedSuppliersBuyerData(){
SDO sdo = this.getSDO();
SuppliersBuyerQueryRequest queryRequest=sdo.toQueryRequest(SuppliersBuyerQueryRequest.class);
queryRequest.setSId(sdo.getString("sId"));
Map<String, Object> map = suppliersDataApplication.loadSuppliersBuyerDatas(queryRequest);
return toResult(map);
}
public String slicedSuppliersBankData(){
SDO sdo = this.getSDO();
SuppliersBankQueryRequest queryRequest=sdo.toQueryRequest(SuppliersBankQueryRequest.class);
queryRequest.setSId(sdo.getString("sId"));
Map<String, Object> map = suppliersDataApplication.loadSuppliersBankDatas(queryRequest);
return toResult(map);
}
public String deleteSuppliersData() {
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
// suppliersDataApplication.deleteSuppliersData(ids);
return success();
}
}
package com.huigou.topsun.sap.suppliers.domain;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
*
* @TableName sap_suppliers_bank
*/
@Table(name="sap_suppliers_bank")
@Data
@Entity
public class SuppliersBank implements Serializable {
@Id
@GeneratedValue(
generator = "system-uuid"
)
@GenericGenerator(
name = "system-uuid",
strategy = "guid"
)
private String id;
/**
* 主表id
*/
@Column(name = "s_id")
private String sId;
/**
* 银行所属国家/地区代码
*/
@Column(name = "banks")
private String banks;
/**
* 银行代码
*/
@Column(name = "bankl")
private String bankl;
/**
* 银行帐户号码
*/
@Column(name = "bankn")
private String bankn;
/**
* 账户持有人姓名
*/
@Column(name = "koinh")
private String koinh;
/**
* 银行控制代码
*/
@Column(name = "bkont")
private String bkont;
/**
* 对方开户行类型
*/
@Column(name = "bvtyp")
private String bvtyp;
/**
* 财务机构名称
*/
@Column(name = "banka")
private String banka;
/**
* 分行
*/
@Column(name = "brnch")
private String brnch;
/**
* 银行细目的参考明细
*/
@Column(name = "bkref")
private String bkref;
@Column(name = "sequence")
private int sequence;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.huigou.topsun.sap.suppliers.domain;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
/**
*
* @TableName sap_suppliers_buyer
*/
@Table(name="sap_suppliers_buyer")
@Data
@Entity
public class SuppliersBuyer implements Serializable {
@Id
@GeneratedValue(
generator = "system-uuid"
)
@GenericGenerator(
name = "system-uuid",
strategy = "guid"
)
private String id;
/**
* 主表id
*/
@Column(name = "s_id")
private String sId;
/**
* 采购组织
*/
@Column(name = "ekorg")
private String ekorg;
/**
* 货币码
*/
@Column(name = "waers")
private String waers;
/**
* 付款条件代码
*/
@Column(name = "zterm")
private String zterm;
/**
* 国际贸易条款
*/
@Column(name = "inco1")
private String inco1;
/**
* 国际贸易条款位置 1
*/
@Column(name = "inco2_l")
private String inco2L;
/**
* 国际贸易条款位置 2
*/
@Column(name = "inco3_l")
private String inco3L;
/**
* 标识:基于收货的发票验证
*/
@Column(name = "webre")
private String webre;
/**
* 计算方案组(供应商)
*/
@Column(name = "kalsk")
private String kalsk;
/**
* 供应商办公室的负责销售人员
*/
@Column(name = "verkf")
private String verkf;
/**
* 供应商电话号码
*/
@Column(name = "telf1")
private String telf1;
/**
* 基于服务的发票校验标识
*/
@Column(name = "lebre")
private String lebre;
/**
* 边境运输方式(欧盟内部贸易统计)
*/
@Column(name = "expvz")
private String expvz;
/**
* 采购冻结在采购组织层
*/
@Column(name = "sperm")
private String sperm;
@Column(name = "sequence")
private int sequence;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.huigou.topsun.sap.suppliers.domain;
import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import java.util.Date;
import java.util.List;
/**
* 供应商主数据
*/
@Table(name="sap_suppliers_info")
@Data
@Entity
public class SuppliersInfo extends FlowBillAbstractEntity {
/**
* 屏幕用途的bp角色
*/
@Column(name = "rltgr")
private String rltgr;
/**
* 业务伙伴分组
*/
@Column(name = "bu_group")
private String buGroup;
/**
* 业务伙伴编号
*/
@Column(name = "partner")
private String partner;
/**
* 称谓代码
*/
@Column(name = "title")
private String title;
/**
* 组织名称 1
*/
@Column(name = "name_org1")
private String nameOrg1;
/**
* 组织名称 2
*/
@Column(name = "name_org2")
private String nameOrg2;
/**
* 组织名称 3
*/
@Column(name = "name_org3")
private String nameOrg3;
/**
* 组织名称 4
*/
@Column(name = "name_org4")
private String nameOrg4;
/**
* 业务伙伴的搜索词1
*/
@Column(name = "bu_sort1")
private String buSort1;
/**
* 业务伙伴的搜索词2
*/
@Column(name = "bu_sort2")
private String buSort2;
/**
* 街道
*/
@Column(name = "street")
private String street;
/**
* 街道2
*/
@Column(name = "str_suppl1")
private String strSuppl1;
/**
* 街道3
*/
@Column(name = "str_suppl2")
private String strSuppl2;
/**
* 街道4
*/
@Column(name = "str_suppl3")
private String strSuppl3;
/**
* 国家/地区代码
*/
@Column(name = "land1")
private String land1;
/**
* 国家/地区代码
*/
@Column(name = "region")
private String region;
/**
* 语言关键字
*/
@Column(name = "langu")
private String langu;
/**
* 语言关键字
*/
@Column(name = "city1")
private String city1;
/**
* 城市邮政编码
*/
@Column(name = "post_code1")
private String postCode1;
/**
* 第一个电话号码
*/
@Column(name = "tel_number")
private String telNumber;
/**
* 一个电话号码:分机号
*/
@Column(name = "tel_extens")
private String telExtens;
/**
* 第一个移动电话号码
*/
@Column(name = "mob_number")
private String mobNumber;
/**
* 第一个移动电话号码:分机
*/
@Column(name = "mob_extens")
private String mobExtens;
/**
* 第一个传真号
*/
@Column(name = "fax_number")
private String faxNumber;
/**
* 第一个传真号:分机号
*/
@Column(name = "fax_extens")
private String faxExtens;
/**
* 电子邮件地址
*/
@Column(name = "smtp_addr")
private String smtpAddr;
/**
* 供应商帐户组
*/
@Column(name = "ktokk")
private String ktokk;
/**
* 集中设置的采购冻结
*/
@Column(name = "sperm")
private String sperm;
/**
* 中心记帐冻结
*/
@Column(name = "sperr")
private String sperr;
/**
* 贸易合作伙伴的公司标识
*/
@Column(name = "vbund")
private String vbund;
/**
* 客户编号
*/
@Column(name = "kunnr")
private String kunnr;
/**
* 责任税务部门的税收编号
*/
@Column(name = "stenr")
private String stenr;
/**
* 更新标识
*/
@Column(name = "updkz")
private String updkz;
@Override
protected String getCodeRuleId() {
return "sapSuppliersInfo";
}
// @Transient
// private List<SuppliersPay> suppliersPayList;
//
// @Transient
// private List<SuppliersBuyer> suppliersBuyerList;
//
// @Transient
// private List<SuppliersBank> suppliersBankList;
}
\ No newline at end of file
package com.huigou.topsun.sap.suppliers.domain;
import lombok.Data;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.Date;
/**
*
* @TableName sap_suppliers_pay
*/
@Table(name="sap_suppliers_pay")
@Data
@Entity
public class SuppliersPay implements Serializable {
@Id
@GeneratedValue(
generator = "system-uuid"
)
@GenericGenerator(
name = "system-uuid",
strategy = "guid"
)
private String id;
/**
* 主表id
*/
@Column(name = "s_id")
private String sId;
/**
* 公司代码
*/
@Column(name = "bukrs")
private String bukrs;
/**
* 总帐中的统驭科目
*/
@Column(name = "akont")
private String akont;
/**
* 根据分配号排序代码
*/
@Column(name = "zuawa")
private String zuawa;
/**
* 付款条件代码
*/
@Column(name = "zterm")
private String zterm;
/**
* 考虑的付款方式清单
*/
@Column(name = "zwels")
private String zwels;
/**
* 检查双重发票或信贷凭单的标志
*/
@Column(name = "reprf")
private String reprf;
/**
* 中心记帐冻结
*/
@Column(name = "sperr")
private String sperr;
/**
* 对公司代码过帐冻结
*/
@Column(name = "sperr_b")
private String sperrB;
@Column(name = "sequence")
private int sequence;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.huigou.topsun.sap.suppliers.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
@Data
public class SuppliersBankQueryRequest extends QueryAbstractRequest {
/**
* sId
*/
private String sId;
}
package com.huigou.topsun.sap.suppliers.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
@Data
public class SuppliersBuyerQueryRequest extends QueryAbstractRequest {
/**
* sId
*/
private String sId;
}
package com.huigou.topsun.sap.suppliers.domain.query;
import com.huigou.data.domain.query.FlowBillSuperQueryRequest;
public class SuppliersDataQueryRequest extends FlowBillSuperQueryRequest {
/**
* 业务伙伴编号
*/
private String partner;
/**
* 称谓代码
*/
private String title;
/**
* 组织名称1
*/
private String nameOrg1;
/**
* 组织名称2
*/
private String nameOrg2;
/**
* 组织名称3
*/
private String nameOrg3;
}
package com.huigou.topsun.sap.suppliers.domain.query;
import com.huigou.data.domain.query.FlowBillSuperQueryRequest;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
@Data
public class SuppliersPayQueryRequest extends QueryAbstractRequest {
/**
* sId
*/
private String sId;
}
package com.huigou.topsun.sap.suppliers.repository;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBank;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBuyer;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: lxh
* @Date: 2024/03/01
* @Description:
*/
public interface SuppliersBankRepository extends JpaRepository<SuppliersBank,String> {
List<SuppliersBank> findAllBySId(String sId, Sort sortOrder);
}
package com.huigou.topsun.sap.suppliers.repository;
import com.huigou.topsun.sap.suppliers.domain.SuppliersBuyer;
import com.huigou.topsun.sap.suppliers.domain.SuppliersPay;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: lxh
* @Date: 2024/03/01
* @Description:
*/
public interface SuppliersBuyerRepository extends JpaRepository<SuppliersBuyer,String> {
List<SuppliersBuyer> findAllBySId(String sId, Sort sortOrder);
}
package com.huigou.topsun.sap.suppliers.repository;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Auther: lxh
* @Date: 2024/03/01
* @Description:
*/
public interface SuppliersInfoRepository extends JpaRepository<SuppliersInfo,String> {
// SapPurchaseOrder findAllByEbeln(String ebeln);
}
package com.huigou.topsun.sap.suppliers.repository;
import com.huigou.topsun.base.bsnMessage.domain.BsnMessageReject;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
import com.huigou.topsun.sap.suppliers.domain.SuppliersPay;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @Auther: lxh
* @Date: 2024/03/01
* @Description:
*/
public interface SuppliersPayRepository extends JpaRepository<SuppliersPay,String> {
// SuppliersPay findBysId(String sId);
List<SuppliersPay> findAllBySId(String sId, Sort sortOrder);
}
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:xsd="http://www.w3.org/2001/XMLSchema" typeLanguage="http://www.w3.org/2001/XMLSchema" expressionLanguage="http://www.w3.org/1999/XPath" targetNamespace="http://www.activiti.org/test">
<process id="sapSuppliersDataProc" name="供应商主数据维护" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{suppliersDataApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{suppliersDataApplication}"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="Apply" name="供应商主数据维护申请" activiti:formKey="sapSuppliersData/showSuppliersData.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{suppliersDataApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{suppliersDataApplication}"></activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="Approve" name="供应商主数据维护审批" activiti:assignee="${assignee} " activiti:formKey="sapSuppliersData/showSuppliersData.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{suppliersDataApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{suppliersDataApplication}"></activiti:taskListener>
</extensionElements>
<multiInstanceLoopCharacteristics isSequential="false" activiti:collection="handlerList" activiti:elementVariable="assignee">
<completionCondition>${chiefApprovePassed}</completionCondition>
</multiInstanceLoopCharacteristics>
</userTask>
<sequenceFlow id="flow1" sourceRef="startevent1" targetRef="Apply"></sequenceFlow>
<sequenceFlow id="flow2" sourceRef="Apply" targetRef="Approve"></sequenceFlow>
<exclusiveGateway id="ApproveFinished" name="审批结束"></exclusiveGateway>
<sequenceFlow id="flow3" name="审批通过" sourceRef="ApprovePassed" targetRef="ApproveFinished">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${approvePassed}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow4" name="审批结束" sourceRef="ApproveFinished" targetRef="endevent1">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${approveFinished}]]></conditionExpression>
</sequenceFlow>
<sequenceFlow id="flow5" name="审批未结束" sourceRef="ApproveFinished" targetRef="Approve">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approveFinished}]]></conditionExpression>
</sequenceFlow>
<exclusiveGateway id="ApprovePassed" name="审批通过"></exclusiveGateway>
<sequenceFlow id="flow6" sourceRef="Approve" targetRef="ApprovePassed"></sequenceFlow>
<sequenceFlow id="flow9" name="审批未通过" sourceRef="ApprovePassed" targetRef="Apply">
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approvePassed}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_sapSuppliersDataProc">
<bpmndi:BPMNPlane bpmnElement="sapSuppliersDataProc" id="BPMNPlane_sapNonProdApplyProc">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="355.0" y="50.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="endevent1" id="BPMNShape_endevent1">
<omgdc:Bounds height="35.0" width="35.0" x="355.0" y="550.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Apply" id="BPMNShape_Apply">
<omgdc:Bounds height="55.0" width="161.0" x="292.0" y="140.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="Approve" id="BPMNShape_Approve">
<omgdc:Bounds height="55.0" width="161.0" x="292.0" y="240.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ApproveFinished" id="BPMNShape_ApproveFinished">
<omgdc:Bounds height="40.0" width="40.0" x="352.0" y="440.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNShape bpmnElement="ApprovePassed" id="BPMNShape_ApprovePassed">
<omgdc:Bounds height="40.0" width="40.0" x="352.0" y="349.0"></omgdc:Bounds>
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge bpmnElement="flow1" id="BPMNEdge_flow1">
<omgdi:waypoint x="372.0" y="85.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="140.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow2" id="BPMNEdge_flow2">
<omgdi:waypoint x="372.0" y="195.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="240.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow3" id="BPMNEdge_flow3">
<omgdi:waypoint x="372.0" y="389.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="440.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="48.0" x="320.0" y="396.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow4" id="BPMNEdge_flow4">
<omgdi:waypoint x="372.0" y="480.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="550.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="48.0" x="382.0" y="489.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow5" id="BPMNEdge_flow5">
<omgdi:waypoint x="392.0" y="460.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="459.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="317.0"></omgdi:waypoint>
<omgdi:waypoint x="519.0" y="267.0"></omgdi:waypoint>
<omgdi:waypoint x="489.0" y="267.0"></omgdi:waypoint>
<omgdi:waypoint x="453.0" y="267.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="60.0" x="459.0" y="411.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow6" id="BPMNEdge_flow6">
<omgdi:waypoint x="372.0" y="295.0"></omgdi:waypoint>
<omgdi:waypoint x="372.0" y="349.0"></omgdi:waypoint>
</bpmndi:BPMNEdge>
<bpmndi:BPMNEdge bpmnElement="flow9" id="BPMNEdge_flow9">
<omgdi:waypoint x="352.0" y="369.0"></omgdi:waypoint>
<omgdi:waypoint x="231.0" y="369.0"></omgdi:waypoint>
<omgdi:waypoint x="231.0" y="167.0"></omgdi:waypoint>
<omgdi:waypoint x="292.0" y="167.0"></omgdi:waypoint>
<bpmndi:BPMNLabel>
<omgdc:Bounds height="14.0" width="60.0" x="257.0" y="376.0"></omgdc:Bounds>
</bpmndi:BPMNLabel>
</bpmndi:BPMNEdge>
</bpmndi:BPMNPlane>
</bpmndi:BPMNDiagram>
</definitions>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<query-mappings>
<query name="slicedSuppliersInfoQuery" table="sap_suppliers_info">
<sql-query>
select t.* from sap_suppliers_info t
where 1=1
</sql-query>
<!-- <condition column="stats_indicators_id" name="statsIndicatorsId" type="java.lang.String" symbol="=" alias="t"/>-->
</query>
<query name="slicedSuppliersPayList" label="付款明细数据" table="sap_suppliers_pay">
<sql-query>
select t.*
from sap_suppliers_pay t
</sql-query>
<condition column="s_id" name="sId" type="java.lang.String" symbol="=" alias="t"/>
</query>
<query name="slicedSuppliersBuyerList" label="采购组织数据" table="sap_suppliers_buyer">
<sql-query>
select t.*
from sap_suppliers_buyer t
</sql-query>
<condition column="s_id" name="sId" type="java.lang.String" symbol="=" alias="t"/>
</query>
<query name="slicedSuppliersBankList" label="银行明细" table="sap_suppliers_bank">
<sql-query>
select t.*
from sap_suppliers_bank t
</sql-query>
<condition column="s_id" name="sId" type="java.lang.String" symbol="=" alias="t"/>
</query>
</query-mappings>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment