Commit 50d46772 authored by 鲁鑫's avatar 鲁鑫

无订单入库流程

parent 9e837896
$(document).ready(function () {
initializateUI();
bindEvent();
});
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3});
}
function bindEvent() {
$('#werksName').searchbox({
type: "system", name: "dictionary",
getParam: function (item) {
return {fieldName: "WERKS"}
},
onChange: function (value, data) {
$('#werks').val(data.WERKS);
$('#werksName').val(data.NAME1);
}
});
$('#storeName').searchbox({
type: "system", name: "dictionary",
getParam: function (item) {
if (Public.isBlank($('#werks').val())){
Public.tip("请先选择工厂");
return false;
}
return {fieldName: "LGORT"}
},
onChange: function (value, data) {
$('#store').val(data.LGORT);
$('#storeName').val(data.LGOBE);
}
});
$('#unitName').searchbox({
type: "system", name: "dictionary",
getParam: function (item) {
return {fieldName: "MEINS"}
},
onChange: function (value, data) {
$('#unit').val(data.MSEHI);
$('#unitName').val(data.MSEHL);
}
});
}
function setId(value) {
$('#id').val(value);
}
function getId() {
return $("#id").val();
}
\ No newline at end of file
<%@ 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/nonOrderStorage/nonOrderStorageDetail.js'/>
</head>
<body>
<div class="container-fluid">
<x:billTitle title="无订单库存入库" needStatus="false" needPerson="true"/>
<div class="blank_div clearfix"></div>
<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" 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:hidden name="statusId"/>
<x:hidden name="productCode"/>
<x:hidden name="unit"/>
<x:hidden name="werks"/>
<x:hidden name="store"/>
<x:hidden name="type"/>
<x:hidden name="message"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="productName" required="true" label="品名" labelCol="1" maxLength="64" fieldCol="2"/>
<x:inputC name="number" required="true" label="数量" labelCol="1" maxLength="64" fieldCol="2"/>
<x:inputC name="unitName" required="true" label="单位" labelCol="1" wrapper="select" fieldCol="2"/>
<x:selectC name="isCharge" required="true" label="是否收费" labelCol="1" dictionary="yesorno" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:inputC name="werksName" required="true" label="工厂" labelCol="1" wrapper="select" fieldCol="2"/>
<x:inputC name="storeName" required="true" label="库存地点" labelCol="1" wrapper="select" fieldCol="2"/>
<x:inputC name="supplier" required="true" label="供应商" labelCol="1" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:textareaC name="reason" required="true" label="事由" labelCol="1" rows="3" fieldCol="6"/>
</div>
</div>
</form>
</div>
</body>
</html>
var gridManager = null;
$(document).ready(function () {
initializateUI();
loadCostCenterListGrid();
});
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3});
}
function loadCostCenterListGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () {
addHandler();
},
deleteHandler: deleteHandler,
});
gridManager = UICtrl.grid("#maingrid", {
columns: [
{display: "品名", name: "productName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "数量", name: "number", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "单位", name: "unitName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "是否收费", name: "isChargeTextView", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "工厂", name: "werksName", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "库存地点", name: "storeName", width: 100, minWidth: 60, type: "string", align: "left"},
{display: "供应商", name: "supplier", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "申请人", name: "personMemberName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "申请部门", name: "deptName", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "申请日期", name: "fillinDate", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "事由", name: "reason", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "状态", name: "statusTextView", width: 60, minWidth: 60, type: "string", align: "center",},
{display: "消息类型", name: "type", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "消息文本", name: "message", width: 200, minWidth: 60, type: "string", align: "left"},
],
dataAction: "server",
url: web_app.name + '/nonOrderStorage/slicedNonOrderStorageList.ajax',
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
// 双击执行
onDblClickRow: function (data, rowindex, rowobj) {
updateHandler(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 addHandler() {
UICtrl.addTabItem({
tabid: 'nonOrderStorageDetail',
text: "新增无订单库存入库",
url: web_app.name + '/nonOrderStorage/addNonOrderStorageDetail.job'
})
}
function updateHandler(row) {
if (!row) {
row = DataUtil.getUpdateRow(gridManager);
if (!row) {
return;
}
}
UICtrl.addTabItem({
tabid: 'nonOrderStorageDetail',
text: "查看无订单库存入库",
url: web_app.name + '/nonOrderStorage/showNonOrderStorageDetail.job?isReadOnly=true&id=' + row.id
})
}
//删除按钮
function deleteHandler() {
DataUtil.del({
action: 'nonOrderStorage/deleteNonOrderStorageById.ajax',
gridManager: gridManager, idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
}
<%@ 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" />
<x:script src='/biz/topsun/sap/nonOrderStorage/nonOrderStorageList.js'/>
</head>
<body>
<div class="container-fluid">
<div class="ui-hide">
</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="billCode" required="false" label="编码" labelCol="1"/>
<x:searchButtons />
</form>
<div class="blank_div clearfix"></div>
<div id="maingrid" style="margin: 2px;"></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
package com.huigou.topsun.sap.nonOrderStorage.application;
import com.huigou.topsun.sap.nonOrderStorage.domain.NonOrderStorage;
import com.huigou.topsun.sap.nonOrderStorage.domain.query.NonOrderStorageQueryRequest;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/14:08
* @Description:
*/
public interface NonOrderStorageApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/nonOrderStorage/nonOrderStorage.xml";
String PROCESS_DEFINITION_KEY = "nonOrderStorageProc";
Map<String,Object> slicedNonOrderStorageList(NonOrderStorageQueryRequest nonOrderStorageQueryRequest);
void deleteNonOrderStorageById(List<String> ids);
void saveNonOrderStorage(NonOrderStorage nonOrderStorage);
public NonOrderStorage sendSapCenterData(NonOrderStorage nonOrderStorage);
NonOrderStorage findNonOrderStorageById(String id);
}
package com.huigou.topsun.sap.nonOrderStorage.application.impl;
import com.huigou.cache.DictUtil;
import com.huigou.context.Operator;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.nonOrderStorage.domain.NonOrderStorage;
import com.huigou.topsun.sap.nonOrderStorage.application.NonOrderStorageApplication;
import com.huigou.topsun.sap.nonOrderStorage.domain.query.NonOrderStorageQueryRequest;
import com.huigou.topsun.sap.nonOrderStorage.repository.NonOrderStorageRepository;
import com.huigou.topsun.sap.suppliers.domain.SuppliersInfo;
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.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/14:09
* @Description:
*/
@Service("nonOrderStorageApplication")
public class NonOrderStorageApplicationImpl extends FlowBroker implements NonOrderStorageApplication {
@Autowired
private NonOrderStorageRepository nonOrderStorageRepository;
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
NonOrderStorage nonOrderStorage = getBizEntity(NonOrderStorage.class);
if (nonOrderStorage.isNew()) {
Operator operator = this.getOperator();
BeanUtils.copyProperties(operator, nonOrderStorage);
nonOrderStorage.setStatusId(BizBillStatus.APPLYING.getId());
} else {
nonOrderStorage = (NonOrderStorage) commonDomainService.loadAndFillinProperties(nonOrderStorage);
}
nonOrderStorage = nonOrderStorageRepository.save(nonOrderStorage);
return nonOrderStorage.getId();
}
@Override
protected void onAbortProcessInstance(DelegateExecution delegateExecution) {
super.onAbortProcessInstance(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
NonOrderStorage nonOrderStorage = nonOrderStorageRepository.findOne(bizId);
nonOrderStorage.setStatusId(BizBillStatus.ABORTED.getId());
nonOrderStorageRepository.save(nonOrderStorage);
}
@Override
protected void onBack(DelegateTask delegateTask, String destActivityId) {
super.onBack(delegateTask, destActivityId);
if ("Apply".equalsIgnoreCase(destActivityId)) {
String bizId = delegateTask.getExecution().getProcessBusinessKey();
NonOrderStorage nonOrderStorage = nonOrderStorageRepository.findOne(bizId);
nonOrderStorage.setStatusId(BizBillStatus.APPLYING.getId());
nonOrderStorageRepository.save(nonOrderStorage);
}
}
@Override
protected Map<String, Object> getProcessBizParams(String bizId) {
return ClassHelper.toMap(nonOrderStorageRepository.getOne(bizId));
}
@Override
protected void onBeforeComplete(DelegateTask delegateTask) {
super.onBeforeComplete(delegateTask);
String bizId = delegateTask.getExecution().getProcessBusinessKey();
if (this.isApplyProcUnit(delegateTask) && this.getApprovalParameter().isAdvanceProcessAction()) {
NonOrderStorage nonOrderStorage = nonOrderStorageRepository.findOne(bizId);
nonOrderStorage.setStatusId(BizBillStatus.APPROVING.getId());
nonOrderStorageRepository.save(nonOrderStorage);
}
}
@Override
protected void onEnd(DelegateExecution delegateExecution) {
super.onEnd(delegateExecution);
String bizId = delegateExecution.getProcessBusinessKey();
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
NonOrderStorage nonOrderStorage = nonOrderStorageRepository.findOne(bizId);
nonOrderStorage.setStatusId(status.getId());
this.sendSapCenterData(nonOrderStorage);
nonOrderStorageRepository.save(nonOrderStorage);
}
@Override
public Map<String, Object> slicedNonOrderStorageList(NonOrderStorageQueryRequest nonOrderStorageQueryRequest) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "nonOrderStorage");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, nonOrderStorageQueryRequest);
queryModel.putDictionary("status", DictUtil.getDictionary("bizBillStatus"));
queryModel.putDictionary("isCharge", DictUtil.getDictionary("yesorno"));
Map<String, Object> map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
return map;
}
@Override
public void deleteNonOrderStorageById(List<String> ids) {
for (String id : ids) {
nonOrderStorageRepository.delete(id);
}
}
@Override
public void saveNonOrderStorage(NonOrderStorage nonOrderStorage) {
nonOrderStorageRepository.save(nonOrderStorage);
}
@Override
public NonOrderStorage sendSapCenterData(NonOrderStorage nonOrderStorage) {
return null;
}
@Override
public NonOrderStorage findNonOrderStorageById(String id) {
return nonOrderStorageRepository.findOne(id);
}
}
package com.huigou.topsun.sap.nonOrderStorage.controller;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.nonOrderStorage.application.NonOrderStorageApplication;
import com.huigou.topsun.sap.nonOrderStorage.domain.NonOrderStorage;
import com.huigou.topsun.sap.nonOrderStorage.domain.query.NonOrderStorageQueryRequest;
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;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/14:09
* @Description:
*/
@Controller
@ControllerMapping("/nonOrderStorage")
public class NonOrderStorageController extends CommonController {
@Autowired
private NonOrderStorageApplication nonOrderStorageApplication;
@Override
protected String getPagePath() {
return "/biz/topsun/sap/nonOrderStorage/";
}
public String forwardNonOrderStorageList() {
return forward("nonOrderStorageList");
}
public String slicedNonOrderStorageList() {
SDO sdo = this.getSDO();
NonOrderStorageQueryRequest NonOrderStorageQueryRequest = sdo.toQueryRequest(NonOrderStorageQueryRequest.class);
return toResult(nonOrderStorageApplication.slicedNonOrderStorageList(NonOrderStorageQueryRequest));
}
/**
* 跳转到新增页面
*/
public String addNonOrderStorageDetail() {
this.putAttribute("processDefinitionKey", NonOrderStorageApplication.PROCESS_DEFINITION_KEY);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("procUnitId", "Apply");
NonOrderStorage nonOrderStorage = new NonOrderStorage();
nonOrderStorage.setStatusId(BizBillStatus.APPLYING.getId());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
nonOrderStorage.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
return forward("nonOrderStorageDetail", nonOrderStorage);
}
/**
* 根据id获取
* @return
*/
public String showNonOrderStorageDetail() {
SDO sdo = this.getSDO();
String id = sdo.getBizId();
NonOrderStorage nonOrderStorage = nonOrderStorageApplication.findNonOrderStorageById(id);
return forward("nonOrderStorageDetail", nonOrderStorage);
}
/**
* 根据id删除
* @return
*/
public String deleteNonOrderStorageById() {
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
nonOrderStorageApplication.deleteNonOrderStorageById(ids);
return success();
}
}
package com.huigou.topsun.sap.nonOrderStorage.domain;
import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import java.math.BigDecimal;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/13:55
* @Description: 无订单库存入库流程
*/
@Data
@Entity
@Table(name = "sap_non_order_storage")
public class NonOrderStorage extends FlowBillAbstractEntity {
/**
* 品名
*/
@Column(name = "product_code")
private String productCode;
@Column(name = "product_name")
private String productName;
/**
* 数量
*/
@Column(name = "number")
private BigDecimal number;
/**
* 单位
*/
@Column(name = "unit")
private String unit;
/**
* 单位
*/
@Column(name = "unit_name")
private String unitName;
/**
* 是否收费
*/
@Column(name = "is_charge")
private String isCharge;
/**
* 事由
*/
@Column(name = "reason")
private String reason;
/**
* 工厂
*/
@Column(name = "werks")
private String werks;
/**
* 工厂名称
*/
@Column(name = "werks_name")
private String werksName;
/**
* 库存地点
*/
@Column(name = "store")
private String store;
/**
* 库存地点名称
*/
@Column(name = "store_name")
private String storeName;
/**
* 供应商
*/
@Column(name = "supplier")
private String supplier;
/**
* 消息类型
*/
@Column(name = "type")
private String type;
/**
* 消息文本
*/
@Column(name = "message")
private String message;
@Override
protected String getCodeRuleId() {
return "nonOrderStorage";
}
}
package com.huigou.topsun.sap.nonOrderStorage.domain.query;
import com.huigou.data.domain.query.QueryAbstractRequest;
import lombok.Data;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/14:10
* @Description:
*/
@Data
public class NonOrderStorageQueryRequest extends QueryAbstractRequest {
private String billCode;
}
package com.huigou.topsun.sap.nonOrderStorage.repository;
import com.huigou.topsun.sap.nonOrderStorage.domain.NonOrderStorage;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @Auther: xin.lu
* @Date: 2024/03/20/14:08
* @Description:
*/
public interface NonOrderStorageRepository extends JpaRepository<NonOrderStorage,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="nonOrderStorageProc" name="无订单库存入库申请" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{nonOrderStorageApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{nonOrderStorageApplication}"></activiti:executionListener>
</extensionElements>
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="Apply" name="无订单库存入库申请" activiti:formKey="nonOrderStorage/showNonOrderStorageDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{nonOrderStorageApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{nonOrderStorageApplication}"></activiti:taskListener>
</extensionElements>
</userTask>
<userTask id="Approve" name="无订单库存入库审批" activiti:assignee="${assignee} " activiti:formKey="nonOrderStorage/showNonOrderStorageDetail.job">
<extensionElements>
<activiti:taskListener event="all" delegateExpression="#{nonOrderStorageApplication}"></activiti:taskListener>
<activiti:taskListener event="saveBizData" delegateExpression="#{nonOrderStorageApplication}"></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_nonOrderStorageProc">
<bpmndi:BPMNPlane bpmnElement="nonOrderStorageProc" id="BPMNPlane_nonOrderStorageProc">
<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="nonOrderStorage" label="无订单库存入库" table="sap_non_order_storage">
<sql-query>
select t.* from sap_non_order_storage t where 1=1
</sql-query>
</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