Commit d157f67e authored by 鲁鑫's avatar 鲁鑫

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

parent bbd37d2f
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
http://www.springframework.org/schema/mvc/spring-mvc.xsd"> http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:property-placeholder location="classpath:application.properties" /> <context:property-placeholder location="classpath:application.properties" />
<aop:aspectj-autoproxy></aop:aspectj-autoproxy> <aop:aspectj-autoproxy></aop:aspectj-autoproxy>
<mvc:annotation-driven />
<!-- <!--
<context:annotation-config /> <context:annotation-config />
--> -->
...@@ -62,4 +63,12 @@ ...@@ -62,4 +63,12 @@
<property name="prefix" value="/"></property> <property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property> <property name="suffix" value=".jsp"></property>
</bean> </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> </beans>
\ No newline at end of file
...@@ -31,7 +31,7 @@ function initItemGrid() { ...@@ -31,7 +31,7 @@ function initItemGrid() {
columns: getGridColumns(), columns: getGridColumns(),
dataAction: 'server', dataAction: 'server',
url: web_app.name + '/sapPurchaseApprovalItem/querySapPurchaseApprovalItems.ajax', url: web_app.name + '/sapPurchaseApprovalItem/querySapPurchaseApprovalItems.ajax',
parms:{sapPurchaseId:getId()}, parms:{sapPurchaseApprovalId:getId()},
height: '99.6%', height: '99.6%',
heightDiff: -4, heightDiff: -4,
sortName: 'id', sortName: 'id',
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
<x:hidden name="bsart"/> <x:hidden name="bsart"/>
<div class="hg-form-cols"> <div class="hg-form-cols">
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC name="banfn" 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="true" labelCol="1" fieldCol="2" required="true"/> <x:inputC name="batxt" label="采购申请类型描述" readonly="false" labelCol="1" fieldCol="2" required="true"/>
</div> </div>
</div> </div>
<div id="maingrid"></div> <div id="maingrid"></div>
......
...@@ -72,7 +72,7 @@ function viewHandler(id) { ...@@ -72,7 +72,7 @@ function viewHandler(id) {
UICtrl.addTabItem({ UICtrl.addTabItem({
tabid: 'viewPurchase' + id, tabid: 'viewPurchase' + id,
text: '查看采购申请', 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; ...@@ -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.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest; import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest;
import com.huigou.topsun.sap.purchaseApproval.domain.vo.SapPurchaseApprovalVo;
import java.util.Map; import java.util.Map;
...@@ -18,4 +19,6 @@ public interface SapPurchaseApprovalApplication { ...@@ -18,4 +19,6 @@ public interface SapPurchaseApprovalApplication {
Map<String,Object> slicedSapPurchaseApprovalList(SapPurchaseApprovalQueryRequest queryRequest); Map<String,Object> slicedSapPurchaseApprovalList(SapPurchaseApprovalQueryRequest queryRequest);
SapPurchaseApproval loadSapPurchaseApproval(String id); SapPurchaseApproval loadSapPurchaseApproval(String id);
void saveSapPurchaseApprovalVo(SapPurchaseApprovalVo sapPurchaseApprovalVo);
} }
package com.huigou.topsun.sap.purchaseApproval.application.impl; 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.QueryDescriptor;
import com.huigou.data.query.model.QueryModel; 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.SapPurchaseApprovalApplication;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalItemApplication; import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalItemApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval; import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem; import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApprovalItem;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest; 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.topsun.sap.purchaseApproval.repository.SapPurchaseApprovalRepository;
import com.huigou.uasp.bmp.common.BizBillStatus; 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.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.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.SDO;
import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask; import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.runtime.ProcessInstance;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -24,12 +41,16 @@ import java.util.Map; ...@@ -24,12 +41,16 @@ import java.util.Map;
* @Date: 2024/01/09/18:59 * @Date: 2024/01/09/18:59
* @Description: * @Description:
*/ */
@Service @Service("sapPurchaseApprovalApplication")
public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements SapPurchaseApprovalApplication { public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements SapPurchaseApprovalApplication {
@Resource @Resource
private SapPurchaseApprovalRepository sapPurchaseApprovalRepository; private SapPurchaseApprovalRepository sapPurchaseApprovalRepository;
@Resource @Resource
private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication; private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication;
@Resource
private WorkflowApplication workflowApplication;
@Resource
private OperatorApplication operatorApplication;
@Override @Override
protected String saveBizAndApprovalData() { protected String saveBizAndApprovalData() {
...@@ -127,4 +148,59 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa ...@@ -127,4 +148,59 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
public SapPurchaseApproval loadSapPurchaseApproval(String id) { public SapPurchaseApproval loadSapPurchaseApproval(String id) {
return sapPurchaseApprovalRepository.findOne(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; ...@@ -5,12 +5,16 @@ import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalApplication; import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalApplication;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval; import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseApproval.domain.query.SapPurchaseApprovalQueryRequest; 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.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth; import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.bmp.common.BizBillStatus; import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.client.CommonController; import com.huigou.uasp.client.CommonController;
import com.huigou.util.JSONUtil;
import com.huigou.util.SDO; import com.huigou.util.SDO;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.HashMap; import java.util.HashMap;
...@@ -32,12 +36,15 @@ public class SapPurchaseApprovalController extends CommonController { ...@@ -32,12 +36,15 @@ public class SapPurchaseApprovalController extends CommonController {
} }
@SkipAuth @SkipAuth
public String getSapPurchaseApprovalApproval(){ @RequestMapping( value = "/getSapPurchaseApproval")
SDO sdo = this.getSDO(); @ResponseBody
public HashMap<String, Object> getSapPurchaseApproval(@RequestBody SapPurchaseApprovalVo sapPurchaseApprovalVo){
//SDO sdo = this.getSDO();
this.sapPurchaseApprovalApplication.saveSapPurchaseApprovalVo(sapPurchaseApprovalVo);
HashMap<String, Object> messageMap = new HashMap<>(); HashMap<String, Object> messageMap = new HashMap<>();
messageMap.put("Message_Status","S"); messageMap.put("Message_Status","S");
messageMap.put("Message_Text","成功"); messageMap.put("Message_Text","成功");
return toResult(messageMap); return messageMap;
} }
public String forwardSapPurchaseApprovalList(){ public String forwardSapPurchaseApprovalList(){
......
...@@ -36,6 +36,6 @@ public class SapPurchaseApproval extends FlowBillAbstractEntity { ...@@ -36,6 +36,6 @@ public class SapPurchaseApproval extends FlowBillAbstractEntity {
@Override @Override
protected String getCodeRuleId() { protected String getCodeRuleId() {
return "purchaseApproval"; return "sapPurchaseApproval";
} }
} }
\ No newline at end of file
...@@ -10,4 +10,18 @@ import lombok.Data; ...@@ -10,4 +10,18 @@ import lombok.Data;
*/ */
@Data @Data
public class SapPurchaseApprovalQueryRequest extends QueryAbstractRequest { 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"?> <?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"> <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> <extensionElements>
<activiti:executionListener event="start" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener> <activiti:executionListener event="start" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener> <activiti:executionListener event="end" delegateExpression="#{sapPurchaseApprovalApplication}"></activiti:executionListener>
...@@ -40,8 +40,8 @@ ...@@ -40,8 +40,8 @@
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approvePassed}]]></conditionExpression> <conditionExpression xsi:type="tFormalExpression"><![CDATA[${!approvePassed}]]></conditionExpression>
</sequenceFlow> </sequenceFlow>
</process> </process>
<bpmndi:BPMNDiagram id="BPMNDiagram_sapPurchaseProcProc"> <bpmndi:BPMNDiagram id="BPMNDiagram_sapPurchaseApprovalProc">
<bpmndi:BPMNPlane bpmnElement="sapPurchaseProcProc" id="BPMNPlane_sapPurchaseProcProc"> <bpmndi:BPMNPlane bpmnElement="sapPurchaseApprovalProc" id="BPMNPlane_sapPurchaseApprovalProc">
<bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1"> <bpmndi:BPMNShape bpmnElement="startevent1" id="BPMNShape_startevent1">
<omgdc:Bounds height="35.0" width="35.0" x="355.0" y="50.0"></omgdc:Bounds> <omgdc:Bounds height="35.0" width="35.0" x="355.0" y="50.0"></omgdc:Bounds>
</bpmndi:BPMNShape> </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