Commit 827d32b7 authored by 鲁鑫's avatar 鲁鑫

SAP采购审批

parent 0cb62a27
var itemGridManager = null;
$(function () {
initItemGrid();
bindEvent();
});
function bindEvent() {
}
function initItemGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function(){
UICtrl.addGridRow(itemGridManager);
},
deleteHandler: function (){
var _grid = UICtrl.getGridManager('#maingrid');
DataUtil.delSelectedRows({
action: 'sapPurchaseApprovalItem/deleteSapPurchaseApprovalItem.ajax',
param: {},
gridManager: _grid,
idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
},
});
itemGridManager = UICtrl.grid('#maingrid', {
columns: getGridColumns(),
dataAction: 'server',
url: web_app.name + '/sapPurchaseApprovalItem/querySapPurchaseApprovalItems.ajax',
parms:{sapPurchaseId:getId()},
height: '99.6%',
heightDiff: -4,
sortName: 'id',
sortOrder: 'asc',
checkbox: true,
usePager: true,
rownumbers: true,
enabledEdit: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
//autoApplyNextEditor:false,
toolbar: toolbarOptions,
}
);
UICtrl.setSearchAreaToggle(itemGridManager);
}
function getGridColumns() {
var columns = [];
columns = [
{display: "项目编号", name: "bnfpo", width: "80", align: "left", type: "string",
editor: { type: 'spinner', min: 10, max: 200, mask: 'nnn'}
},
{display: "项目类别", name: "pstyp", width: "100", align: "left", type: "string"},
{display: "项目类别描述", name: "ptext", width: "100", align: "left", type: "string"},
{display: "科目分配类别", name: "knttp", width: "100", align: "left", type: "string",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "knttp",
getParam: function (item) {
return {paramValue: $("#bsart").val()}
},
back: {
knttp: "knttp"
}
},
}
},
{display: "科目分配类别描述", name: "knttx", width: "100", align: "left", type: "string"},
{display: "工厂", name: "werks", width: "200", align: "left", type: "string",
editor: {required: false, type: "text"}
},
{display: "工厂名称", name: "name1", width: "100", align: "left", type: "string"},
{display: "物料编号", name: "matnr", width: "100", align: "left", type: "string",},
{display: "物料描述", name: "txz01", width: "100", align: "left", type: "string",},
{display: "物料组", name: "matkl", width: "100", align: "left", type: "string",
editor: {required: false, type: "text"}
},
{display: "物料组描述", name: "wgbez", width: "100", align: "left", type: "string",
//editor: {required: false, type: "text"}
},
{display: "采购申请数量", name: "menge", width: 150, minWidth: 60, type: "string", align: "center",
editor: {required: false, type: "text",mask: '9999999.999'}
},
{display: "采购申请计量单位", name: "meins", width: 150, minWidth: 60, type: "string", align: "center",
editor: {required: false, type: "text"}
},
{display: "单位描述", name: "msehl", width: 150, minWidth: 60, type: "string", align: "center",
editor: {required: false, type: "text"}
},
{display: "要求交货日期", name: "lfdat", width: "100", align: "left", type: "string",
editor: {required: false, type: "date"}
},
{display: "库存地点", name: "lgort", width: "100", align: "left", type: "string",},
{display: "库存地点名称", name: "lgobe", width: "100", align: "left", type: "string"},
//{display: "短文本", name: "txz01", width: "100", align: "left", type: "string",
// editor: {required: false, type: "text"}
//},
{display: "采购组", name: "ekgrp", width: 150, minWidth: 60, type: "string", align: "center",
editor: {required: false, type: "text"}
},
{display: "采购组描述", name: "eknam", width: 150, minWidth: 60, type: "string", align: "center",
//editor: {required: false, type: "text"}
},
{display: "评估价格", name: "preis", width: "100", align: "left", type: "string",
editor: {type: 'text', mask: '9999999.99',required: false}
},
{display: "价格单位", name: "peinh", width: 150, minWidth: 60, type: "string", align: "center",
editor: {required: false, type: "text"}
},
{display: "币种", name: "waers", width: "100", align: "left", type: "string",
editor: {type: 'text'}
},
{display: "价格基数", name: "rlwrt", width: "100", align: "left", type: "string",
editor: {type: 'text', mask: '9999999',required: false}
},
]
return columns;
}
//获取数据保存的参数
function getExtendedData(processAction) {
//回退、打回、转交时,不需要验证必填项是否已经填写;
if (processAction == ProcessAction.BACK
|| processAction == ProcessAction.REPLENISH
|| processAction == ProcessAction.TRANSMIT) {
//不验证
$('#submitForm').attr('check', false);
}
var extendedData = {};
var _grid = UICtrl.getGridManager('#maingrid');
if (_grid) {
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: true
});
if (!datas) {
return false;
}
extendedData.sapPurchaseApprovalItems = Public.encodeJSONURI(datas);
}
return extendedData;
}
function getId() {
return $('#id').val();
}
function setId(value) {
$("#id").val(value);
var _grid=UICtrl.getGridManager('#maingrid');
_grid.options.parms.sapPurchaseApprovalId = value;
}
function reloadGrid() {
itemGridManager.loadData();
}
function getGridData(){
var _grid = UICtrl.getGridManager('#maingrid');
var datas = DataUtil.getGridData({
gridManager: _grid,
isAllData: true
});
return datas;
}
<%--采购申请--%>
<%@ 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,dateTime,combox,attachment,commonTree,comboDialog"/>
<x:script src="/biz/topsun/sap/purchaseApproval/sapPurchaseApprovalDetail.js"/>
</head>
<body>
<div class="container-fluid">
<x:billTitle title="采购申请" needStatus="true" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<x:hidden name="version"/>
<x:hidden name="billCode"/>
<x:hidden name="fillinDate"/>
<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:hidden name="statusId"/>
<x:hidden name="bsart"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="banfn" label="采购申请号" readonly="true" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="batxt" label="采购申请类型描述" readonly="true" labelCol="1" fieldCol="2" required="true"/>
</div>
</div>
<div id="maingrid"></div>
</form>
</div>
</body>
\ No newline at end of file
var purchaseApprovalGridManager = null;
$(document).ready(function () {
initUI();
initPurchaseListGrid();
}
);
function initUI() {
UICtrl.initDefaultLayout();
}
function initPurchaseListGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: addHandler,
});
purchaseApprovalGridManager = UICtrl.grid('#purchaseApprovalGrid', {
columns: [
{display: "状态", name: "statusTextView", width: "100", align: "left", type: "string"}
, {display: "id", name: "id", width: "140", align: "left", type: "string", hide: true}
, {display: "需求跟踪编号", name: "billCode", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "采购申请类型描述", name: "batxt", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "采购申请编号", name: "banfn", width: 150, minWidth: 60, type: "string", align: "center"}
],
dataAction: 'server',
url: web_app.name + '/sapPurchaseApproval/slicedSapPurchaseApprovalList.ajax?',
//parms: {requireItemId: $("#prepareItemId").val()},
toolbar: toolbarOptions,
width: '99.8%',
height: '100%',
pageSize: 100,
heightDiff: -4,
//sortName: 'lastModifiedDate',
//sortOrder: 'desc',
checkbox: true,
usePager: true,
rownumbers: true,
enabledEdit: false,
fixedCellHeight: true,
selectRowButtonOnly: true,
enableObjectBag: true,
onSuccess: function (data) {
if (data.error) {
Public.tip(data.error);
}
}
,
onDblClickRow: function (data, rowindex, rowobj) {
viewHandler(data.id);
},
onAfterShowData: function (currentData) {
}
}
);
UICtrl.setSearchAreaToggle(purchaseApprovalGridManager);
}
/**
* 查看采购申请详情
* @param id 采购申请id
* @returns {boolean}
*/
function viewHandler(id) {
if (!id) {
var row = DataUtil.getSelectedRow(purchaseApprovalGridManager);
if (!row) {
return row;
}
id = row.id;
}
UICtrl.addTabItem({
tabid: 'viewPurchase' + id,
text: '查看采购申请',
url: web_app.name + '/sapPurchaseApproval/loadPurchaseApprovalDetail.do?isReadOnly=true&id=' + id
});
}
function addHandler() {
UICtrl.addTabItem({
tabid: 'addPurchase',
text: '新增采购审批',
url: web_app.name + '/sapPurchaseApproval/forwardSapPurchaseApprovalDetail.job'
});
}
function reloadPurchaseGrid() {
var params = $("#queryMainForm").formToJSON();
UICtrl.gridSearch(purchaseApprovalGridManager, params);
}
function query(obj) {
var param = $(obj).formToJSON();
UICtrl.gridSearch(purchaseApprovalGridManager, param);
}
function resetForm(obj) {
$(obj).formClean();
}
<%@ 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,dateTime,combox,attachment,commonTree,comboDialog"/>
<script src='<c:url value="/lib/jquery/jquery.comboDialog.js"/>' type="text/javascript"></script>
<script src='<c:url value="/lib/jquery/jquery.commonTree.js"/>' type="text/javascript"></script>
<script src='<c:url value="/lib/jquery/jquery.flexField.js"/>' type="text/javascript"></script>
<script src='<c:url value="/biz/topsun/sap/purchaseApproval/sapPurchaseApprovalList.js"/>' type="text/javascript"></script>
</head>
<body>
<div class="container-fluid">
<div id="layout">
<div position="center" title="">
<x:title title="搜索" hideTable="queryMainForm"/>
<form class="hg-form ui-show" method="post" action="" id="queryMainForm">
<div class="hg-form-row">
<x:inputC name="billCode" label="需求跟踪编号" labelCol="1"/>
</div>
<x:searchButtons/>
</form>
<x:title title="采购审批明细" hideTable="#purchaseApprovalGrid" name="list"/>
<div id="purchaseApprovalGrid" style="margin:2px;"></div>
</div>
</div>
</div>
</body>
</html>
package com.huigou.topsun.demo.controller; package com.huigou.topsun.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.huigou.cache.DictUtil; import com.huigou.cache.DictUtil;
import com.huigou.topsun.product.application.ColorApplication; import com.huigou.topsun.product.application.ColorApplication;
import com.huigou.topsun.product.domain.query.ColorQueryRequest; import com.huigou.topsun.product.domain.query.ColorQueryRequest;
import com.huigou.topsun.resource.service.ResourceFiledService; import com.huigou.topsun.resource.service.ResourceFiledService;
import com.huigou.topsun.sap.dictionary.application.SapDictionaryApplication;
import com.huigou.topsun.technology.application.ProcessApplication; import com.huigou.topsun.technology.application.ProcessApplication;
import com.huigou.topsun.technology.domain.query.ProcessQueryRequest; import com.huigou.topsun.technology.domain.query.ProcessQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping; import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.bmp.common.easysearch.EasySearch; import com.huigou.uasp.bmp.common.easysearch.EasySearch;
import com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse; import com.huigou.uasp.bmp.common.easysearch.domain.model.EasySearchParse;
import com.huigou.uasp.bmp.common.easysearch.domain.model.QuerySchemeField; import com.huigou.uasp.bmp.common.easysearch.domain.model.QuerySchemeField;
import com.huigou.uasp.bmp.configuration.application.DictionaryApplication;
import com.huigou.uasp.bmp.opm.application.MemEasySearcher; import com.huigou.uasp.bmp.opm.application.MemEasySearcher;
import com.huigou.uasp.bmp.opm.application.impl.MemEasySearcherImpl; import com.huigou.uasp.bmp.opm.application.impl.MemEasySearcherImpl;
import com.huigou.util.SDO; import com.huigou.util.SDO;
...@@ -18,6 +19,7 @@ import org.springframework.data.domain.PageRequest; ...@@ -18,6 +19,7 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException;
import java.util.*; import java.util.*;
/** /**
...@@ -34,6 +36,8 @@ public class ResourceSearchController { ...@@ -34,6 +36,8 @@ public class ResourceSearchController {
private ProcessApplication processApplication; private ProcessApplication processApplication;
@Resource @Resource
private ColorApplication colorApplication; private ColorApplication colorApplication;
@Resource
private SapDictionaryApplication sapDictionaryApplication;
@EasySearch(queryName = "resourceNameGroup") @EasySearch(queryName = "resourceNameGroup")
public Map<String, Object> queryResourceNameGroup(SDO sdo){ public Map<String, Object> queryResourceNameGroup(SDO sdo){
Integer intPage = sdo.getInteger("intPage", 1); Integer intPage = sdo.getInteger("intPage", 1);
...@@ -205,4 +209,27 @@ public class ResourceSearchController { ...@@ -205,4 +209,27 @@ public class ResourceSearchController {
Map<String, Object> model = memEasySearcher.search(mapList, easySearchParse, pageRequest, null); Map<String, Object> model = memEasySearcher.search(mapList, easySearchParse, pageRequest, null);
return model; return model;
} }
@EasySearch(queryName = "dictionary")
public Map<String, Object> queryDictionary(SDO sdo) throws IOException {
String fieldName = sdo.getString("paramValue");
List<Map<String, Object>> mapList = sapDictionaryApplication.getSapDictionary(fieldName);
List<QuerySchemeField> fields = new ArrayList<>();
if (CollectionUtil.isNotEmpty(mapList)){
Map<String, Object> map = mapList.get(0);
map.keySet().forEach(key->{
QuerySchemeField querySchemeField = new QuerySchemeField("",key,"string",200L);
fields.add(querySchemeField);
});
}
Integer intPage = sdo.getInteger("intPage", 1);
Integer pageSize = sdo.getInteger("pageSize",10);
PageRequest pageRequest = new PageRequest(intPage - 1, pageSize);
EasySearchParse easySearchParse = new EasySearchParse();
easySearchParse.setFields(fields);
easySearchParse.setWidth(450L);
MemEasySearcher<Map<String, Object>> memEasySearcher = new MemEasySearcherImpl<>();
Map<String, Object> model = memEasySearcher.search(mapList, easySearchParse, pageRequest, null);
return model;
}
} }
...@@ -12,6 +12,7 @@ import org.apache.http.client.methods.HttpPost; ...@@ -12,6 +12,7 @@ import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType; import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -58,11 +59,9 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient { ...@@ -58,11 +59,9 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
.append("?") .append("?")
.append(client); .append(client);
HttpPost post = new HttpPost(serverUrl.toString()); HttpPost post = new HttpPost(serverUrl.toString());
post.setHeader("Content-type", "application/json;charset=utf-8");
String usernameAndPassword = username + ":" + password; String usernameAndPassword = username + ":" + password;
post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes())); post.addHeader("Authorization", "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes()));
//post.addHeader("token",SystemCache.getParameter("material.token",String.class));
// String requestText = messageSerializer.serialize(param);
String requestText = new ObjectMapper().writeValueAsString(param); String requestText = new ObjectMapper().writeValueAsString(param);
LOG.info("requestText={}", requestText); LOG.info("requestText={}", requestText);
...@@ -72,16 +71,12 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient { ...@@ -72,16 +71,12 @@ public class DefaultHttpClient extends BaseApplication implements HttpClient {
String responseText = ""; String responseText = "";
try { try {
response = http.execute(post); response = http.execute(post);
LOG.info("response={}", response);
StatusLine statusLine = response.getStatusLine(); StatusLine statusLine = response.getStatusLine();
LOG.info("statusLine={}", statusLine);
int statusCode = statusLine.getStatusCode(); int statusCode = statusLine.getStatusCode();
if (statusLine.getStatusCode() < HttpStatus.SC_OK || statusLine.getStatusCode() >= HttpStatus.SC_MULTIPLE_CHOICES) { if (statusLine.getStatusCode() < HttpStatus.SC_OK || statusLine.getStatusCode() >= HttpStatus.SC_MULTIPLE_CHOICES) {
throw new IOException(String.format("调用SAP系统出错,statusCode=%s, %s", statusCode, statusLine.getReasonPhrase())); throw new IOException(String.format("调用SAP系统出错,statusCode=%s, %s", statusCode, statusLine.getReasonPhrase()));
} }
responseText = IOUtils.readLines(response.getEntity().getContent()) responseText = EntityUtils.toString(response.getEntity(), "UTF-8");
.stream()
.collect(Collectors.joining("\n"));
LOG.info("responseText={}", responseText); LOG.info("responseText={}", responseText);
LOG.info("----------->> 调用SAP接口 {} 成功 <<-----------", serverUrl); LOG.info("----------->> 调用SAP接口 {} 成功 <<-----------", serverUrl);
}finally { }finally {
......
package com.huigou.topsun.sap.dictionary.application;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/11:23
* @Description:
*/
public interface SapDictionaryApplication {
List<Map<String,Object>> getSapDictionary(String fieldName) throws IOException;
}
package com.huigou.topsun.sap.dictionary.application.impl;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.huigou.cache.SystemCache;
import com.huigou.topsun.sap.common.HttpClient;
import com.huigou.topsun.sap.dictionary.application.SapDictionaryApplication;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/11:24
* @Description:
*/
@Service
public class SapDictionaryApplicationImpl implements SapDictionaryApplication {
@Resource
private HttpClient httpClient;
@Override
public List<Map<String,Object>> getSapDictionary(String fieldName) throws IOException {
String url = SystemCache.getParameter("sap.service.dictionary.url", String.class);
Map<String,Object> map = new HashMap<>();
map.put("FIELDNAME",fieldName);
String execute = httpClient.execute(map, url);
List<Map<String,Object>> mapList = (List<Map<String,Object>>) JSONArray.parse(execute);
return mapList;
}
}
package com.huigou.topsun.sap.dictionary.controller;
import com.huigou.topsun.sap.dictionary.application.SapDictionaryApplication;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.client.CommonController;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import java.io.IOException;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/11:24
* @Description:
*/
@Controller
@ControllerMapping("/sapDictionary")
public class SapDictionaryController extends CommonController {
@Resource
private SapDictionaryApplication sapDictionaryApplication;
@SkipAuth
public String getSapDictionary() throws IOException {
sapDictionaryApplication.getSapDictionary("EKGRP");
return success();
}
}
package com.huigou.topsun.sap.purchaseApproval.application;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/18:59
* @Description:
*/
public interface SapPurchaseApprovalApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/sapPurchaseApproval/sapPurchaseApproval.xml";
String PROCESS_DEFINITION_KEY = "sapPurchaseApprovalProc";
Map<String,Object> slicedSapPurchaseApprovalList(SapPurchaseApprovalQueryRequest queryRequest);
SapPurchaseApproval loadSapPurchaseApproval(String id);
}
package com.huigou.topsun.sap.purchaseApproval.application;
import com.huigou.topsun.sap.purchase.domain.SapPurchaseItem;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalItemQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/19:19
* @Description:
*/
public interface SapPurchaseApprovalItemApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/sapPurchaseApproval/sapPurchaseApprovalItem.xml";
void saveSapPurchaseApprovalItems(String sapPurchaseApprovalId, List<SapPurchaseApprovalItem> sapPurchaseApprovalItems);
void deleteByIds(List<String> ids);
Map<String, Object> querySapPurchaseApprovalItems(SapPurchaseApprovalItemQueryRequest queryRequest);
}
package com.huigou.topsun.sap.purchaseApproval.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalApplication;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalItemApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest;
import com.huigou.topsun.sap.purchaseApproval.repository.SapPurchaseApprovalRepository;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.util.ClassHelper;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/18:59
* @Description:
*/
@Service
public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements SapPurchaseApprovalApplication {
@Resource
private SapPurchaseApprovalRepository sapPurchaseApprovalRepository;
@Resource
private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication;
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
SapPurchaseApproval sapPurchaseApproval = getBizEntity(SapPurchaseApproval.class);
if (sapPurchaseApproval.isNew()) {
sapPurchaseApproval.setStatusId(BizBillStatus.APPLYING.getId());
} else {
sapPurchaseApproval = (SapPurchaseApproval) commonDomainService.loadAndFillinProperties(sapPurchaseApproval);
}
sapPurchaseApproval = sapPurchaseApprovalRepository.save(sapPurchaseApproval);
List<SapPurchaseApprovalItem> sapPurchaseApprovalItems = getBizEntities(SapPurchaseApprovalItem.class, "sapPurchaseItems");
sapPurchaseApprovalItemApplication.saveSapPurchaseApprovalItems(sapPurchaseApproval.getId(),sapPurchaseApprovalItems);
//String sapPurchaseVoJson = this.getSapPurchaseVoJson(sapPurchaseApproval);
return sapPurchaseApproval.getId();
}
@Override
protected Map<String, Object> getProcessBizParams(String bizId) {
// 返回业务数据给流程实例,
return ClassHelper.toMap(sapPurchaseApprovalRepository.getOne(bizId));
}
@Override
protected void onEnd(DelegateExecution delegateExecution) {
super.onEnd(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
SapPurchaseApproval sapPurchaseApproval = sapPurchaseApprovalRepository.findOne(bizId);
sapPurchaseApproval.setStatusId(status.getId());
sapPurchaseApprovalRepository.save(sapPurchaseApproval);
}
/**
* 转换成SAP JSON格式数据
* @param sapPurchase
* @return
*/
/*public String getSapPurchaseVoJson(SapPurchaseApproval sapPurchase){
List<SapPurchaseItem> sapPurchaseItemList = this.sapPurchaseApprovalItemApplication.findBySapPurchaseApprovalId(sapPurchase.getId());
List<SapPurchaseVo> sapPurchaseVoList = new ArrayList<>();
sapPurchaseItemList.forEach(sapPurchaseItem -> {
SapPurchaseVo sapPurchaseVo = new SapPurchaseVo();
BeanUtil.copyProperties(sapPurchaseItem,sapPurchaseVo);
sapPurchaseVo.setBillCode(sapPurchase.getBillCode());
sapPurchaseVo.setBsart(sapPurchase.getBsart());
sapPurchaseVoList.add(sapPurchaseVo);
});
ObjectMapper objectMapper = new ObjectMapper();
String returnJson = null;
try {
returnJson = objectMapper.writeValueAsString(sapPurchaseVoList);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
return returnJson;
}*/
@Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
super.onAbortProcessInstance(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
SapPurchaseApproval sapPurchaseApproval = sapPurchaseApprovalRepository.findOne(bizId);
sapPurchaseApproval.setStatusId(BizBillStatus.ABORTED.getId());
sapPurchaseApprovalRepository.save(sapPurchaseApproval);
}
/**
* @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();
SapPurchaseApproval sapPurchaseApproval = sapPurchaseApprovalRepository.findOne(bizId);
sapPurchaseApproval.setStatusId(BizBillStatus.APPLYING.getId());
sapPurchaseApprovalRepository.save(sapPurchaseApproval);
}
}
@Override
public Map<String, Object> slicedSapPurchaseApprovalList(SapPurchaseApprovalQueryRequest queryRequest) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPurchaseApprovalList");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.putDictionary("status", BizBillStatus.getMap());
return this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
@Override
public SapPurchaseApproval loadSapPurchaseApproval(String id) {
return sapPurchaseApprovalRepository.findOne(id);
}
}
package com.huigou.topsun.sap.purchaseApproval.application.impl;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalItemApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalItemQueryRequest;
import com.huigou.topsun.sap.purchaseApproval.repository.SapPurchaseApprovalItemRepository;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.util.StringUtil;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/19:20
* @Description:
*/
@Service
public class SapPurchaseApprovalItemApplicationImpl extends BaseApplication implements SapPurchaseApprovalItemApplication {
@Resource
private SapPurchaseApprovalItemRepository sapPurchaseApprovalItemRepository;
@Override
public void saveSapPurchaseApprovalItems(String sapPurchaseApprovalId, List<SapPurchaseApprovalItem> sapPurchaseApprovalItems) {
sapPurchaseApprovalItems.forEach(sapPurchaseApprovalItem -> {
sapPurchaseApprovalItem.setSapPurchaseApprovalId(sapPurchaseApprovalId);
sapPurchaseApprovalItemRepository.save(sapPurchaseApprovalItem);
});
}
@Override
public void deleteByIds(List<String> ids) {
ids.forEach(id->{
sapPurchaseApprovalItemRepository.delete(id);
});
}
@Override
public Map<String, Object> querySapPurchaseApprovalItems(SapPurchaseApprovalItemQueryRequest queryRequest) {
Map<String, Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getSapPurchaseApprovalId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPurchaseApprovalItems");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
}
}
package com.huigou.topsun.sap.purchaseApproval.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/18:58
* @Description:
*/
@Controller
@ControllerMapping("/sapPurchaseApproval")
public class SapPurchaseApprovalController extends CommonController {
@Resource
private SapPurchaseApprovalApplication sapPurchaseApprovalApplication;
@Override
protected String getPagePath() {
return "/biz/topsun/sap/purchaseApproval/";
}
@SkipAuth
public String getSapPurchaseApprovalApproval(){
SDO sdo = this.getSDO();
HashMap<String, Object> messageMap = new HashMap<>();
messageMap.put("Message_Status","S");
messageMap.put("Message_Text","成功");
return toResult(messageMap);
}
public String forwardSapPurchaseApprovalList(){
return forward("sapPurchaseApprovalList");
}
public String slicedSapPurchaseApprovalList(){
SDO sdo = this.getSDO();
SapPurchaseApprovalQueryRequest queryRequest = sdo.toQueryRequest(SapPurchaseApprovalQueryRequest.class);
Map<String, Object> map = sapPurchaseApprovalApplication.slicedSapPurchaseApprovalList(queryRequest);
return toResult(map);
}
public String forwardSapPurchaseApprovalDetail(){
this.putAttribute("processDefinitionKey", SapPurchaseApprovalApplication.PROCESS_DEFINITION_KEY);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("procUnitId", "Apply");
SapPurchaseApproval sapPurchase = new SapPurchaseApproval();
sapPurchase.setStatusId(BizBillStatus.APPLYING.getId());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
sapPurchase.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
return forward("sapPurchaseApprovalDetail",sapPurchase);
}
public String showSapPurchaseApprovalDetail(){
SDO sdo = this.getSDO();
String id = sdo.getBizId();
SapPurchaseApproval sapPurchaseApproval = sapPurchaseApprovalApplication.loadSapPurchaseApproval(id);
return forward("sapPurchaseApprovalDetail",sapPurchaseApproval);
}
}
package com.huigou.topsun.sap.purchaseApproval.controller;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalItemApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalItemQueryRequest;
import com.huigou.topsun.sap.purchaseApproval.repository.SapPurchaseApprovalItemRepository;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.client.CommonController;
import com.huigou.util.SDO;
import org.springframework.stereotype.Controller;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2023/12/27/17:24
* @Description:
*/
@Controller
@ControllerMapping("/sapPurchaseApprovalItem")
public class SapPurchaseApprovalItemController extends CommonController {
@Resource
private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication;
@Resource
private SapPurchaseApprovalItemRepository sapPurchaseApprovalItemRepository;
public String querySapPurchaseApprovalItems(){
SDO sdo = this.getSDO();
SapPurchaseApprovalItemQueryRequest queryRequest = sdo.toQueryRequest(SapPurchaseApprovalItemQueryRequest.class);
Map<String, Object> map = sapPurchaseApprovalItemApplication.querySapPurchaseApprovalItems(queryRequest);
return toResult(map);
}
public String deleteSapPurchaseApprovalItem(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
sapPurchaseApprovalItemApplication.deleteByIds(ids);
return success();
}
}
package com.huigou.topsun.sap.purchaseApproval.domain;
import javax.persistence.*;
import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data;
/**
* SAP采购申请审批表
* @TableName sap_purchase_approval
*/
@Table(name="sap_purchase_approval")
@Entity
@Data
public class SapPurchaseApproval extends FlowBillAbstractEntity {
/**
* 采购申请号
*/
@Column(name = "BANFN")
private String banfn;
/**
* 采购申请类型(只传输四种:NB、ZNB1、ZNB2和ZSTR)
*/
@Column(name = "BSART")
private String bsart;
/**
* 采购申请类型描述
*/
@Column(name = "BATXT")
private String batxt;
private static final long serialVersionUID = 1L;
@Override
protected String getCodeRuleId() {
return "purchaseApproval";
}
}
\ No newline at end of file
package com.huigou.topsun.sap.purchaseApproval.domain;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import com.huigou.data.domain.model.AbstractEntity;
import lombok.Data;
/**
*
* @TableName sap_purchase_approval_item
*/
@Table(name="sap_purchase_approval_item")
@Entity
@Data
public class SapPurchaseApprovalItem extends AbstractEntity {
/**
* SAP采购申请审批id
*/
@Column(name = "sap_purchase_approval_id")
private String sapPurchaseApprovalId;
/**
* 项目编号(已删除(EBAN-LOEKZ=X)者不传EP;已结清(EBAN-EBAKZ=X)者也不传(结清指已全部转为采购订单))
*/
@Column(name = "BNFPO")
private String bnfpo;
/**
* 项目类别
*/
@Column(name = "PSTYP")
private String pstyp;
/**
* 项目类别描述
*/
@Column(name = "PTEXT")
private String ptext;
/**
* 科目分配类别
*/
@Column(name = "KNTTP")
private String knttp;
/**
* 科目分配类别描述
*/
@Column(name = "KNTTX")
private String knttx;
/**
* 物料号
*/
@Column(name = "MATNR")
private String matnr;
/**
* 物料描述
*/
@Column(name = "TXZ01")
private String txz01;
/**
* 物料组
*/
@Column(name = "MATKL")
private String matkl;
/**
* 物料组描述
*/
@Column(name = "WGBEZ")
private String wgbez;
/**
* 采购申请数量
*/
@Column(name = "MENGE")
private BigDecimal menge;
/**
* 采购申请计量单位
*/
@Column(name = "MEINS")
private String meins;
/**
* 单位描述
*/
@Column(name = "MSEHL")
private String msehl;
/**
* 要求交货日期
*/
@Column(name = "LFDAT")
private Date lfdat;
/**
* 工厂
*/
@Column(name = "WERKS")
private String werks;
/**
* 名称
*/
@Column(name = "NAME1")
private String name1;
/**
* 库存地点
*/
@Column(name = "LGORT")
private String lgort;
/**
* 库存地点的描述
*/
@Column(name = "LGOBE")
private String lgobe;
/**
* 采购组
*/
@Column(name = "EKGRP")
private String ekgrp;
/**
* 采购组描述
*/
@Column(name = "EKNAM")
private String eknam;
/**
* 评估价格
*/
@Column(name = "PREIS")
private BigDecimal preis;
/**
* 价格单位
*/
@Column(name = "PEINH")
private String peinh;
/**
* 币种
*/
@Column(name = "WAERS")
private String waers;
/**
* 评估金额
*/
@Column(name = "RLWRT")
private BigDecimal rlwrt;
private static final long serialVersionUID = 1L;
}
\ No newline at end of file
package com.huigou.topsun.sap.purchaseApproval.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
/**
* @Auther: xin.lu
* @Date: 2023/12/27/10:45
* @Description:
*/
@Data
public class SapPurchaseApprovalItemQueryRequest extends QueryAbstractRequest {
/**
* 采购审批id
*/
private String sapPurchaseApprovalId;
}
package com.huigou.topsun.sap.purchaseApproval.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/19:13
* @Description:
*/
@Data
public class SapPurchaseApprovalQueryRequest extends QueryAbstractRequest {
}
package com.huigou.topsun.sap.purchaseApproval.repository;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/19:01
* @Description:
*/
public interface SapPurchaseApprovalItemRepository extends JpaRepository<SapPurchaseApprovalItem,String> {
}
package com.huigou.topsun.sap.purchaseApproval.repository;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Auther: xin.lu
* @Date: 2024/01/09/19:00
* @Description:
*/
public interface SapPurchaseApprovalRepository extends JpaRepository<SapPurchaseApproval,String> {
}
<?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="sapPurchaseProcProc" name="采购审批" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="Apply" name="采购申请" activiti:formKey="sapPurchaseApproval/showSapPurchaseApprovalDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="Approve" name="采购审批" activiti:assignee="${assignee} " activiti:formKey="sapPurchaseApproval/showSapPurchaseApprovalDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{sapPurchaseApprovalApplication}"></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_sapPurchaseProcProc">
<bpmndi:BPMNPlane bpmnElement="sapPurchaseProcProc" id="BPMNPlane_sapPurchaseProcProc">
<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="sapPurchaseApprovalList" label="SAP采购审批" table="sap_purchase_approval">
<sql-query>
select t.* from sap_purchase_approval t
</sql-query>
<condition column="bill_code" name="billCode" type="java.lang.String" symbol="like" alias="t"/>
</query>
</query-mappings>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" ?>
<query-mappings>
<query name="sapPurchaseApprovalItems" label="SAP采购申请明细" table="sap_purchase_approval_item">
<sql-query>
select t.* from sap_purchase_approval_item t
</sql-query>
<condition column="SAP_PURCHASE_APPROVAL_ID" name="sapPurchaseApprovalId" 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