Commit d157f67e authored by 鲁鑫's avatar 鲁鑫

采购审批接收数据,并发起流程

parent bbd37d2f
......@@ -13,6 +13,7 @@
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:property-placeholder location="classpath:application.properties" />
<aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<mvc:annotation-driven />
<!--
<context:annotation-config />
-->
......@@ -62,4 +63,12 @@
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" >
<property name="messageConverters">
<list>
<!-- json转换器 -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
</list>
</property>
</bean>
</beans>
\ No newline at end of file
......@@ -31,7 +31,7 @@ function initItemGrid() {
columns: getGridColumns(),
dataAction: 'server',
url: web_app.name + '/sapPurchaseApprovalItem/querySapPurchaseApprovalItems.ajax',
parms:{sapPurchaseId:getId()},
parms:{sapPurchaseApprovalId:getId()},
height: '99.6%',
heightDiff: -4,
sortName: 'id',
......
......@@ -28,8 +28,8 @@
<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"/>
<x:inputC name="banfn" label="采购申请号" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="batxt" label="采购申请类型描述" readonly="false" labelCol="1" fieldCol="2" required="true"/>
</div>
</div>
<div id="maingrid"></div>
......
......@@ -72,7 +72,7 @@ function viewHandler(id) {
UICtrl.addTabItem({
tabid: 'viewPurchase' + id,
text: '查看采购申请',
url: web_app.name + '/sapPurchaseApproval/loadPurchaseApprovalDetail.do?isReadOnly=true&id=' + id
url: web_app.name + '/sapPurchaseApproval/showSapPurchaseApprovalDetail.job?bizId=' + id
});
}
......
......@@ -2,6 +2,7 @@ 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 com.huigou.topsun.sap.purchaseApproval.domain.vo.SapPurchaseApprovalVo;
import java.util.Map;
......@@ -18,4 +19,6 @@ public interface SapPurchaseApprovalApplication {
Map<String,Object> slicedSapPurchaseApprovalList(SapPurchaseApprovalQueryRequest queryRequest);
SapPurchaseApproval loadSapPurchaseApproval(String id);
void saveSapPurchaseApprovalVo(SapPurchaseApprovalVo sapPurchaseApprovalVo);
}
package com.huigou.topsun.sap.purchaseApproval.application.impl;
import cn.hutool.core.bean.BeanUtil;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.sap.dictionary.A;
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.domain.vo.SapPurchaseApprovalItemVo;
import com.huigou.topsun.sap.purchaseApproval.domain.vo.SapPurchaseApprovalVo;
import com.huigou.topsun.sap.purchaseApproval.repository.SapPurchaseApprovalRepository;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.operator.OperatorApplication;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.uasp.bpm.ProcessAction;
import com.huigou.uasp.bpm.ProcessStartModel;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.util.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.SDO;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -24,12 +41,16 @@ import java.util.Map;
* @Date: 2024/01/09/18:59
* @Description:
*/
@Service
@Service("sapPurchaseApprovalApplication")
public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements SapPurchaseApprovalApplication {
@Resource
private SapPurchaseApprovalRepository sapPurchaseApprovalRepository;
@Resource
private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication;
@Resource
private WorkflowApplication workflowApplication;
@Resource
private OperatorApplication operatorApplication;
@Override
protected String saveBizAndApprovalData() {
......@@ -127,4 +148,59 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
public SapPurchaseApproval loadSapPurchaseApproval(String id) {
return sapPurchaseApprovalRepository.findOne(id);
}
@Override
@Transactional
public void saveSapPurchaseApprovalVo(SapPurchaseApprovalVo sapPurchaseApprovalVo) {
SapPurchaseApproval sapPurchaseApproval = new SapPurchaseApproval();
BeanUtil.copyProperties(sapPurchaseApprovalVo,sapPurchaseApproval);
//初始化用户信息
String createdById = "5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0";
Operator operator = operatorApplication.createOperatorByPersonMemberId(createdById);
sapPurchaseApproval.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
Map<String, Object> formData = BeanUtil.beanToMap(sapPurchaseApproval);
String bizId = this.startProcessInstance(SapPurchaseApprovalApplication.PROCESS_DEFINITION_KEY, formData);
sapPurchaseApproval.setId(bizId);
sapPurchaseApproval = this.sapPurchaseApprovalRepository.save(sapPurchaseApproval);
List<SapPurchaseApprovalItemVo> approvalItemVoList = sapPurchaseApprovalVo.getItemVos();
List<SapPurchaseApprovalItem> sapPurchaseApprovalItems = new ArrayList<>();
approvalItemVoList.forEach(approvalItemVo->{
SapPurchaseApprovalItem sapPurchaseApprovalItem = new SapPurchaseApprovalItem();
BeanUtil.copyProperties(approvalItemVo,sapPurchaseApprovalItem);
sapPurchaseApprovalItems.add(sapPurchaseApprovalItem);
});
sapPurchaseApprovalItemApplication.saveSapPurchaseApprovalItems(sapPurchaseApproval.getId(),sapPurchaseApprovalItems);
}
public String startProcessInstance(String processDefinitionKey,Map<String, Object> formData){
Map<String, Object> variables = new HashMap();
SDO localSdo = this.buildSDO(formData);
ThreadLocalUtil.putVariable(Constants.SDO, localSdo);
variables.put("startModel", ProcessStartModel.MANUAL.getId());
Operator operator = localSdo.getOperator();
variables.put("executorFullId", operator.getFullId());
variables.put("executorFullName", operator.getFullName());
ThreadLocalUtil.putOperator(operator);
ThreadLocalUtil.putVariable("client.ip", "127.0.0.1");
ProcessInstance processInstance = this.workflowApplication.startProcessInstanceByKey(processDefinitionKey, variables);
String businessKey = processInstance.getBusinessKey();
return businessKey;
}
private SDO buildSDO(Map<String, Object> formData) {
//String createdById = (String) formData.get("createdById");
//暂定管理员id
String createdById = "5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0";
Operator operator = operatorApplication.createOperatorByPersonMemberId(createdById);
SDO localSdo = new SDO();
// 将业务数据传递给工作流
formData.forEach(localSdo::putProperty);
// 将业务流程信息传递给工作流
localSdo.putProperty("processAction", ProcessAction.SAVE);
localSdo.putProperty("procUnitId", "Apply");
localSdo.setOperator(operator);
return localSdo;
}
}
......@@ -5,12 +5,16 @@ 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.topsun.sap.purchaseApproval.domain.vo.SapPurchaseApprovalVo;
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.JSONUtil;
import com.huigou.util.SDO;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap;
......@@ -32,12 +36,15 @@ public class SapPurchaseApprovalController extends CommonController {
}
@SkipAuth
public String getSapPurchaseApprovalApproval(){
SDO sdo = this.getSDO();
@RequestMapping( value = "/getSapPurchaseApproval")
@ResponseBody
public HashMap<String, Object> getSapPurchaseApproval(@RequestBody SapPurchaseApprovalVo sapPurchaseApprovalVo){
//SDO sdo = this.getSDO();
this.sapPurchaseApprovalApplication.saveSapPurchaseApprovalVo(sapPurchaseApprovalVo);
HashMap<String, Object> messageMap = new HashMap<>();
messageMap.put("Message_Status","S");
messageMap.put("Message_Text","成功");
return toResult(messageMap);
return messageMap;
}
public String forwardSapPurchaseApprovalList(){
......
......@@ -36,6 +36,6 @@ public class SapPurchaseApproval extends FlowBillAbstractEntity {
@Override
protected String getCodeRuleId() {
return "purchaseApproval";
return "sapPurchaseApproval";
}
}
\ No newline at end of file
......@@ -10,4 +10,18 @@ import lombok.Data;
*/
@Data
public class SapPurchaseApprovalQueryRequest extends QueryAbstractRequest {
/**
* 采购申请号
*/
private String banfn;
/**
* 采购申请类型(只传输四种:NB、ZNB1、ZNB2和ZSTR)
*/
private String bsart;
/**
* 采购申请类型描述
*/
private String batxt;
}
package com.huigou.topsun.sap.purchaseApproval.domain.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
*
* @TableName sap_purchase_approval_item
*/
@Data
public class SapPurchaseApprovalItemVo {
/**
* 项目编号(已删除(EBAN-LOEKZ=X)者不传EP;已结清(EBAN-EBAKZ=X)者也不传(结清指已全部转为采购订单))
*/
private String bnfpo;
/**
* 项目类别
*/
private String pstyp;
/**
* 项目类别描述
*/
private String ptext;
/**
* 科目分配类别
*/
private String knttp;
/**
* 科目分配类别描述
*/
private String knttx;
/**
* 物料号
*/
private String matnr;
/**
* 物料描述
*/
private String txz01;
/**
* 物料组
*/
private String matkl;
/**
* 物料组描述
*/
private String wgbez;
/**
* 采购申请数量
*/
private BigDecimal menge;
/**
* 采购申请计量单位
*/
private String meins;
/**
* 单位描述
*/
private String msehl;
/**
* 要求交货日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date lfdat;
/**
* 工厂
*/
private String werks;
/**
* 名称
*/
private String name1;
/**
* 库存地点
*/
private String lgort;
/**
* 库存地点的描述
*/
private String lgobe;
/**
* 采购组
*/
private String ekgrp;
/**
* 采购组描述
*/
private String eknam;
/**
* 评估价格
*/
private BigDecimal preis;
/**
* 价格单位
*/
private String peinh;
/**
* 币种
*/
private String waers;
/**
* 评估金额
*/
private BigDecimal rlwrt;
}
\ No newline at end of file
package com.huigou.topsun.sap.purchaseApproval.domain.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* @Auther: xin.lu
* @Date: 2024/01/10/9:22
* @Description:
*/
@Data
public class SapPurchaseApprovalVo implements Serializable {
private String banfn;
/**
* 采购申请类型(只传输四种:NB、ZNB1、ZNB2和ZSTR)
*/
private String bsart;
/**
* 采购申请类型描述
*/
private String batxt;
private List<SapPurchaseApprovalItemVo> itemVos;
}
<?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">
<process id="sapPurchaseApprovalProc" name="采购审批" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
......@@ -40,8 +40,8 @@
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approvePassed}]]></conditionExpression>
</sequenceFlow>
</process>
<bpmndi:BPMNDiagram id="BPMNDiagram_sapPurchaseProcProc">
<bpmndi:BPMNPlane bpmnElement="sapPurchaseProcProc" id="BPMNPlane_sapPurchaseProcProc">
<bpmndi:BPMNDiagram id="BPMNDiagram_sapPurchaseApprovalProc">
<bpmndi:BPMNPlane bpmnElement="sapPurchaseApprovalProc" id="BPMNPlane_sapPurchaseApprovalProc">
<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>
......
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