Commit d9ac5f17 authored by wanghang's avatar wanghang

订单采购

parent 9b922301
......@@ -68,9 +68,9 @@ function getExtendedData(processAction) {
$('#submitForm').attr('check', false);
}
if($("#proofingApplySampleCnName").prop("readonly")){
let technologyResult =getTableDateAll(technologyObj)[0];
let processResult = getTableDateAll(processObj);
let processMaterialResult = getTableDateAll(processBomObj);
let technologyResult =getTableDataAll(technologyObj)[0];
let processResult = getTableDataAll(processObj);
let processMaterialResult = getTableDataAll(processBomObj);
let extendedData = {};
extendedData.technology = Public.encodeJSONURI(technologyResult);
extendedData.process = Public.encodeJSONURI(processResult);
......
......@@ -384,7 +384,7 @@ function getTableResult() {
return extendedData;
}
function getTableDateAll(obj) {
function getTableDataAll(obj) {
let result = DataUtil.getGridData({
gridManager: obj.gridManager,
isAllData: true
......
......@@ -477,7 +477,7 @@ function getExtendedData(processAction) {
//不验证
$('#submitForm').attr('check', false);
}
let resultArray = useArrayTable(getTableDateAll);
let resultArray = useArrayTable(getTableDataAll);
//根据zepItemno将各列表属性合并为一个完整实体
const result = resultArray[0].map((obj1) => {
......@@ -498,7 +498,7 @@ function getExtendedData(processAction) {
}
function getTableDateAll(obj) {
function getTableDataAll(obj) {
let result = DataUtil.getGridData({
gridManager: obj.gridManager,
isAllData: true
......@@ -516,7 +516,7 @@ function useArrayTable(func, ...data) {
//获取最新子序号(维护实体的标识)
function getZepItemNo(){
let result =getTableDateAll(tableArray[tableArray.length-1]);
let result =getTableDataAll(tableArray[tableArray.length-1]);
let zepItemNo="001";
if(result.length>0){
//获取上一个节点的子序值
......
......@@ -3,7 +3,6 @@ $(function () {
});
function getId() {
return $('#id').val();
}
......
......@@ -9,7 +9,7 @@
</head>
<body>
<div class="container-fluid">
<x:billTitle title="采购申请" needStatus="true" needPerson="true"/>
<x:billTitle title="采购订单" needStatus="true" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<x:hidden name="version"/>
......@@ -31,8 +31,6 @@
<x:inputC name="ebeln" label="采购订单号码" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="bsart" label="采购订单类型" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="batxt" label="采购订单类型描述" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="purchaseOrderId" label="id" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="ebelp" label="项目编号" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="pstyp" label="项目类别" readonly="false" labelCol="1" fieldCol="2" required="true"/>
......@@ -45,7 +43,7 @@
<x:inputC name="menge" label="采购订单数量" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="meins" label="采购订单计量单位" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="msehl" label="单位描述" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="eindt" label="要求交货日期" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="eindt" label="要求交货日期" readonly="false" wrapper="date" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="werks" label="工厂" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="name1" label="名称" readonly="false" labelCol="1" fieldCol="2" required="true"/>
<x:inputC name="lgort" label="库存地点" readonly="false" labelCol="1" fieldCol="2" required="true"/>
......
var purchaseOrderGridManager = null;
$(document).ready(function () {
initUI();
initPurchaseListGrid();
loadGrid();
}
);
......@@ -9,28 +9,28 @@ function initUI() {
UICtrl.initDefaultLayout();
}
function initPurchaseListGrid() {
function loadGrid() {
// var toolbarOptions = UICtrl.getDefaultToolbarOptions({
// addHandler: addHandler,
// });
debugger
purchaseOrderGridManager = UICtrl.grid('#purchaseOrderGrid', {
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"}
, {display: "采购订单号码", name: "ebeln", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "采购订单类型", name: "bsart", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "采购订单类型描述", name: "batxt", width: 150, minWidth: 60, type: "string", align: "center"}
],
dataAction: 'server',
url: web_app.name + '/sapPurchaseOrder/slicedSapPurchaseOrderList.ajax?',
//parms: {requireItemId: $("#prepareItemId").val()},
toolbar: toolbarOptions,
// toolbar: toolbarOptions,
width: '99.8%',
height: '100%',
pageSize: 100,
heightDiff: -4,
//sortName: 'lastModifiedDate',
//sortOrder: 'desc',
checkbox: true,
usePager: true,
rownumbers: true,
......@@ -46,9 +46,6 @@ function initPurchaseListGrid() {
,
onDblClickRow: function (data, rowindex, rowobj) {
viewHandler(data.id);
},
onAfterShowData: function (currentData) {
}
}
);
......@@ -75,14 +72,6 @@ function viewHandler(id) {
});
}
//
// function addHandler() {
// UICtrl.addTabItem({
// tabid: 'addPurchase',
// text: '新增采购审批',
// url: web_app.name + '/sapPurchaseOrder/forwardSapPurchaseOrderDetail.job'
// });
// }
function reloadPurchaseGrid() {
......
......@@ -14,11 +14,10 @@ function initialize(){
function loadStatsIndicatorsDetailListGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () {
UICtrl.addGridRow(gridManager,{ zlenr: gridManager.getData().length + 1 });
UICtrl.addGridRow(gridManager,{ zlenr: getZlenr() });
},
deleteHandler: function () {
var _grid = UICtrl.getGridManager('#statsIndicatorsDetailGrid');
_grid.deleteSelectedRow();//删除fieldCol="2"节点
gridManager.deleteSelectedRow();
}
});
gridManager = UICtrl.grid("#statsIndicatorsDetailGrid", {
......@@ -145,4 +144,16 @@ function getExtendedData(processAction) {
extendedData.statsIndicatorsDetail = Public.encodeJSONURI(datas);
}
return extendedData;
}
//获取最新子序号(维护实体的标识)
function getZlenr(){
let result =gridManager.getData();
let zlenr="001";
if(result.length>0){
//获取上一个节点的子序值
let wornNo= parseInt(result[result.length-1]["zlenr"], 10);
zlenr=("00" + (wornNo + 1)).slice(-3);
}
return zlenr;
}
\ No newline at end of file
......@@ -30,26 +30,15 @@ public class DefinitionHomepageTaskData extends BaseApplication {
public Map<String, Object> replaceQueryTrackingTasks(){
// 当前登录用户是否以任务发起人的身份发起过任务
List<BsnMessageSponsor> messageSponsors = bsnMessageApplication.queryFinishBsnMessageSponsor();
if (messageSponsors!=null&&!messageSponsors.isEmpty()) {
// 若有发起过任务且所有的执行人执行完毕,则由系统创建一份审批任务给当前用户
for (BsnMessageSponsor sponsor : messageSponsors) {
List<BsnMessageExecute> executes = new ArrayList<>();
//验证状态防止多次创建任务
if (sponsor.getStatus() == 0) {
// 封装审批任务
BsnMessageExecute execute = new BsnMessageExecute();
execute.setUpdateDate(new Date());
execute.setTaskExecute(this.getOperator().getUserId());
execute.setTaskDescribe("各单位已完成[发起人审核]");
execute.setBusinessCode("system");
execute.setActive(ActiveStatus.UNFINISHED.getValue());
executes.add(execute);
sponsor.setStatus(1);// 发起人审核
sponsor.setExecutes(executes);
// 在同一个任务流程下创建一份发起人自己的审批任务
bsnMessageApplication.saveBsnMessageSponsor(sponsor);
//该流程下是否所有单位已就绪
BsnMessageExecute systemExecute = bsnMessageApplication.isExecutesReady(sponsor.getId());
//更新其中审批任务的状态
if(systemExecute!=null){
systemExecute.setActive(ActiveStatus.UNFINISHED.getValue());
bsnMessageApplication.saveBsnMessageExecute(systemExecute);
}
}
}
//获取任务执行人为当前用户的任务
return this.bsnMessageApplication.queryExecuteBsnMessage();
......
......@@ -3,6 +3,7 @@ package com.huigou.topsun.base.bsnMessage.appliction;
import com.huigou.topsun.base.bsnMessage.domain.BsnMessageExecute;
import com.huigou.topsun.base.bsnMessage.domain.BsnMessageReject;
import com.huigou.topsun.base.bsnMessage.domain.BsnMessageSponsor;
import com.huigou.uasp.bmp.bizconfig.model.ObjectKindEnum;
import java.util.List;
import java.util.Map;
......@@ -11,11 +12,47 @@ public interface BsnMessageApplication {
String QUERY_XML_FILE_PATH = "config/topsun/base/bsnMessage.xml";
/**
* 保存任务
* @param bsnMessageSponsor
*/
String keepTasks(BsnMessageSponsor bsnMessageSponsor);
/**
* 发布任务
* @param bId 表单单号
*/
void publishTasks(String bId);
/**
* 保存任务并发布
*/
void keepAndPublishTasks(BsnMessageSponsor bsnMessageSponsor);
// /**
// * 驳回任务
// */
// void rejectTasks();
/**
* 批准
*/
// void authorizeTasks();
/**
* 任务流转
*/
Map<String, Object> circulate(String meId);
/**
* 获取当前登录用户未完成或被驳回的任务
* @return 任务执行的详细信息集合
*/
Map<String,Object> queryExecuteBsnMessage();
Map<String,Object> queryExecuteBsnMessage();
/**
* 当前登录用户是否以任务发起人的身份发起过任务如果有
......@@ -24,6 +61,13 @@ public interface BsnMessageApplication {
*/
List<BsnMessageSponsor> queryFinishBsnMessageSponsor();
/**
* 根据任务发布Id,获取该流程下是否所有执行单位已就绪
* @param msId
* @return
*/
BsnMessageExecute isExecutesReady(String msId);
public void saveBsnMessageSponsor(List<BsnMessageSponsor> all);
public String saveBsnMessageSponsor(BsnMessageSponsor entity);
......
......@@ -7,14 +7,18 @@ import com.huigou.topsun.base.bsnMessage.domain.*;
import com.huigou.topsun.base.bsnMessage.repository.BsnMessageExecuteRepository;
import com.huigou.topsun.base.bsnMessage.repository.BsnMessageRejectRepository;
import com.huigou.topsun.base.bsnMessage.repository.BsnMessageSponsorRepository;
import com.huigou.topsun.sap.nonProdApply.domain.SapNonProdApplyDept;
import com.huigou.uasp.bmp.bizconfig.model.ObjectKindEnum;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.data.domain.Sort;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 专项任务整合及输出
......@@ -30,6 +34,80 @@ public class BsnMessageApplicationImpl extends BaseApplication implements BsnMes
BsnMessageSponsorRepository messageSponsorRepository;
@Override
public String keepTasks(BsnMessageSponsor bsnMessageSponsor) {
//删除对应表单已有的任务
BsnMessageSponsor sponsor = this.getSponsorByBId(bsnMessageSponsor.getBusinessId());
if(sponsor!=null){
this.deleteBsnMessageSponsor(sponsor);
}
//封装任务发布人自己的审批任务
BsnMessageExecute execute = new BsnMessageExecute();
execute.setUpdateDate(new Date());
execute.setTaskExecute(this.getOperator().getUserId());
execute.setTaskDescribe("各单位已完成[发起人审核]");
execute.setBusinessCode("system");
execute.setActive(ActiveStatus.SAVED.getValue());
bsnMessageSponsor.addExecute(execute);
return this.saveBsnMessageSponsor(bsnMessageSponsor);
}
@Override
public void publishTasks(String bId) {
BsnMessageSponsor sponsor = messageSponsorRepository.findByBusinessId(bId);
if(sponsor==null){
throw new RuntimeException("不存在该业务");
}
List<BsnMessageExecute> executes = this.getExecuteByMsId(sponsor.getId());
this.updateActiveStatus(executes);
this.saveBsnMessageExecute(executes);
}
@Override
public void keepAndPublishTasks(BsnMessageSponsor bsnMessageSponsor) {
this.updateActiveStatus(bsnMessageSponsor.getExecutes());
this.keepTasks(bsnMessageSponsor);
}
// @Override
// public void authorizeTasks(String bId) {
// BsnMessageSponsor sponsor = messageSponsorRepository.findByBusinessId(bId);
// }
// @Override
// public void rejectTasks(BsnMessageExecute execute) {
// //更改驳回状态
// execute.setActive(ActiveStatus.REJECTED.getValue());
// //更新时间
// execute.setUpdateDate(new Date());
// //封装驳回详细
// BsnMessageReject reject = new BsnMessageReject();
// reject.setRejectMsg(sdo.getString(key));
// reject.setRejectDate(new Date());
// reject.setBsnExecuteId(execute.getId());
// execute.addReject(reject);
// this.saveBsnMessageExecute(execute);
// }
@Override
public Map<String, Object> circulate(String meId) {
BsnMessageExecute execute = this.getExecuteByMeId(meId);
Map<String,Object> paramMap = new HashMap<>();
paramMap.put("deptCode", execute.getBusinessCode());
paramMap.put("active",execute.getActive());
paramMap.put("meId",execute.getId());
paramMap.put("isReadOnly","false");
//获取该业务流程下其他执行部门
List<BsnMessageExecute> executeAll = this.getBrotherExecuteByMeId(meId);
Map<String, String> map = executeAll.stream()
.collect(Collectors.toMap(BsnMessageExecute::getTaskExecute, BsnMessageExecute::getBusinessCode));
paramMap.put("auditDeptMap", map);
return paramMap;
}
@Override
public Map<String, Object> queryExecuteBsnMessage() {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "queryExecuteBsnMessage");
......@@ -51,6 +129,11 @@ public class BsnMessageApplicationImpl extends BaseApplication implements BsnMes
}
@Override
public BsnMessageExecute isExecutesReady(String msId) {
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "queryIsExecutesReady");
return this.sqlExecutorDao.queryToObject(queryDescriptor.getSql(),BsnMessageExecute.class,msId,msId);
}
public void saveBsnMessageSponsor(List<BsnMessageSponsor> all){
messageSponsorRepository.save(all);
......@@ -129,4 +212,14 @@ public class BsnMessageApplicationImpl extends BaseApplication implements BsnMes
public boolean isNotEmpty(List<?> list) {
return list != null && !list.isEmpty();
}
public void updateActiveStatus( List<BsnMessageExecute> executes) {
//将除审批任务外状态为保存未分发的全部修改为分发未完成
for (BsnMessageExecute execute : executes) {
if(!"system".equals(execute.getBusinessCode())){
execute.setActive(ActiveStatus.UNFINISHED.getValue());
}
}
}
}
......@@ -46,13 +46,6 @@ public class NonProdApplyDeptApplicationImpl extends BaseApplication implements
throw new RuntimeException("JSON转换失败:"+e);
}
/**
* 删除表单对应已存在任务
*/
BsnMessageSponsor sponsor = bsnMessageApplication.getSponsorByBId(nonProdApplyDept.getApplyDeptId());
if(sponsor!=null){
bsnMessageApplication.deleteBsnMessageSponsor(sponsor);
}
//封装分发数据
BsnMessageSponsor bsnMessageSponsor = new BsnMessageSponsor();
......@@ -76,20 +69,21 @@ public class NonProdApplyDeptApplicationImpl extends BaseApplication implements
messageExecute.setTaskDescribe(deptName+"部门数据维护");
bsnMessageSponsor.addExecute(messageExecute);
}
String keyId = bsnMessageApplication.saveBsnMessageSponsor(bsnMessageSponsor);
//保存任务
bsnMessageApplication.keepTasks(bsnMessageSponsor);
map.put("applyDeptId",nonProdApplyDept.getApplyDeptId());
map.put("keyId",keyId);
return map;
}
/**
* 发布任务
* @param sdo
*/
@Override
public void distributeSapNonProdApplyDept(SDO sdo) {
//将状态为保存分发的全部修改为分发未完成
//将状态为保存分发的全部修改为分发未完成
Map<String, Object> map = this.saveSapNonProdApplyDept(sdo);
List<BsnMessageExecute> executes = bsnMessageApplication.getExecuteByMsId((String) map.get("keyId"));
executes.forEach(item->item.setActive(ActiveStatus.UNFINISHED.getValue()));
bsnMessageApplication.saveBsnMessageExecute(executes);
bsnMessageApplication.publishTasks((String) map.get("applyDeptId"));
}
@Override
......
......@@ -93,20 +93,9 @@ public class NonProdApplyNextController extends CommonController {
SDO sdo = this.getSDO();
String bizId = sdo.getBizId();
String meId = sdo.getString("taskId");
BsnMessageExecute execute = bsnMessageApplication.getExecuteByMeId(meId);
this.putAttribute("deptCode", execute.getBusinessCode());
this.putAttribute("active", execute.getActive());
this.putAttribute("meId", execute.getId());
this.putAttribute("isReadOnly", "false");
Map<String, Object> circulate = bsnMessageApplication.circulate(meId);
this.putAttribute(circulate);
SapNonProdApplyDept nonProdApplyDept = nonProdApplyDeptApplication.getNonProdApplyDeptById(bizId);
//测试数据
// Map<String, String> map = new HashMap<>();
//获取该业务流程下其他执行部门
List<BsnMessageExecute> executeAll = bsnMessageApplication.getBrotherExecuteByMeId(meId);
Map<String, String> map = executeAll.stream()
.collect(Collectors.toMap(BsnMessageExecute::getTaskExecute, BsnMessageExecute::getBusinessCode));
this.putAttribute("auditDeptMap", map);
return forward("nonProdApplyNext", nonProdApplyDept);
}
......
......@@ -21,4 +21,6 @@ public interface SapPurchaseOrderApplication {
SapPurchaseOrder loadSapPurchaseOrder(String id);
void saveSapPurchaseOrderVo(SapPurchaseOrderVo sapPurchaseOrderVo);
void sendSapDate(SapPurchaseOrder sapPurchaseOrder,String flag);
}
......@@ -13,9 +13,10 @@ import java.util.Map;
*/
public interface SapPurchaseOrderItemApplication {
public static final String QUERY_XML_FILE_PATH = "config/topsun/sap/sapPurchaseOrder/sapPurchaseOrderItem.xml";
void saveSapPurchaseOrderItems(String sapPurchaseOrderId, List<SapPurchaseOrderItem> sapPurchaseOrderItems);
void saveSapPurchaseOrderItem(SapPurchaseOrderItem sapPurchaseOrderItem);
void deleteByIds(List<String> ids);
Map<String, Object> querySapPurchaseOrderItems(SapPurchaseOrderItemQueryRequest queryRequest);
SapPurchaseOrderItem getPurchaseOrderItem(String purchaseOrderId);
}
package com.huigou.topsun.sap.purchaseOrder.application.impl;
import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
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.common.DefaultHttpClient;
import com.huigou.topsun.sap.purchaseApproval.application.SapPurchaseApprovalApplication;
import com.huigou.topsun.sap.purchaseApproval.application.impl.SapPurchaseApprovalApplicationImpl;
import com.huigou.topsun.sap.purchaseApproval.domain.SapPurchaseApproval;
import com.huigou.topsun.sap.purchaseOrder.application.SapPurchaseOrderApplication;
import com.huigou.topsun.sap.purchaseOrder.application.SapPurchaseOrderItemApplication;
import com.huigou.topsun.sap.purchaseOrder.domain.SapPurchaseOrder;
......@@ -14,6 +20,10 @@ import com.huigou.topsun.sap.purchaseOrder.domain.query.SapPurchaseOrderQueryReq
import com.huigou.topsun.sap.purchaseOrder.domain.vo.SapPurchaseOrderItemVo;
import com.huigou.topsun.sap.purchaseOrder.domain.vo.SapPurchaseOrderVo;
import com.huigou.topsun.sap.purchaseOrder.repository.SapPurchaseOrderRepository;
import com.huigou.topsun.sap.statsIndicators.domain.SapStatsIndicators;
import com.huigou.topsun.sap.statsIndicators.domain.SapStatsIndicatorsDetail;
import com.huigou.topsun.sap.statsIndicators.domain.SapStatsIndicatorsResult;
import com.huigou.topsun.util.MyBaseUtil;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.operator.OperatorApplication;
import com.huigou.uasp.bpm.FlowBroker;
......@@ -26,10 +36,12 @@ 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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -47,13 +59,16 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
@Resource
private SapPurchaseOrderItemApplication sapPurchaseOrderItemApplication;
@Resource
private WorkflowApplication workflowApplication;
@Resource
private OperatorApplication operatorApplication;
@Autowired
DefaultHttpClient defaultHttpClient;
@Autowired
SapPurchaseApprovalApplicationImpl sapPurchaseApprovalApplication;
// @Override
protected String saveBizAndOrderData() {
// super.saveBizAndOrderData();
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
SDO sdo = this.getBizAndApprovalData();
SapPurchaseOrder sapPurchaseOrder = getBizEntity(SapPurchaseOrder.class);
if (sapPurchaseOrder.isNew()) {
sapPurchaseOrder.setStatusId(BizBillStatus.APPLYING.getId());
......@@ -61,10 +76,11 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
sapPurchaseOrder = (SapPurchaseOrder) commonDomainService.loadAndFillinProperties(sapPurchaseOrder);
}
sapPurchaseOrder = sapPurchaseOrderRepository.save(sapPurchaseOrder);
List<SapPurchaseOrderItem> sapPurchaseOrderItems = getBizEntities(SapPurchaseOrderItem.class, "sapPurchaseItems");
sapPurchaseOrderItemApplication.saveSapPurchaseOrderItems(sapPurchaseOrder.getId(),sapPurchaseOrderItems);
//String sapPurchaseVoJson = this.getSapPurchaseVoJson(sapPurchaseOrder);
// SapPurchaseOrderItem sapPurchaseOrderItem = getBizEntity(SapPurchaseOrderItem.class);
// if(sapPurchaseOrderItem!=null){
// sapPurchaseOrderItem.setPurchaseOrderId(sapPurchaseOrder.getId());
// sapPurchaseOrderItemApplication.saveSapPurchaseOrderItem(sapPurchaseOrderItem);
// }
return sapPurchaseOrder.getId();
}
......@@ -83,7 +99,8 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
BizBillStatus status = approvePassed() ? BizBillStatus.COMPLETED : BizBillStatus.ABORTED;
SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId);
sapPurchaseOrder.setStatusId(status.getId());
sapPurchaseOrderRepository.save(sapPurchaseOrder);
SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder);
this.sendSapDate(save,"");
}
......@@ -107,7 +124,8 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
String bizId = delegateTask.getExecution().getProcessBusinessKey();
SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId);
sapPurchaseOrder.setStatusId(BizBillStatus.APPLYING.getId());
sapPurchaseOrderRepository.save(sapPurchaseOrder);
SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder);
this.sendSapDate(save,"X");
}
}
......@@ -135,47 +153,43 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
sapPurchaseOrder.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
Map<String, Object> formData = BeanUtil.beanToMap(sapPurchaseOrder);
String bizId = this.startProcessInstance(SapPurchaseOrderApplication.PROCESS_DEFINITION_KEY, formData);
String bizId = sapPurchaseApprovalApplication.startProcessInstance(SapPurchaseOrderApplication.PROCESS_DEFINITION_KEY, formData);
sapPurchaseOrder.setId(bizId);
sapPurchaseOrder = this.sapPurchaseOrderRepository.save(sapPurchaseOrder);
List<SapPurchaseOrderItemVo> OrderItemVoList = sapPurchaseOrderVo.getItemVos();
List<SapPurchaseOrderItem> sapPurchaseOrderItems = new ArrayList<>();
OrderItemVoList.forEach(OrderItemVo->{
SapPurchaseOrderItem sapPurchaseOrderItem = new SapPurchaseOrderItem();
BeanUtil.copyProperties(OrderItemVo,sapPurchaseOrderItem);
sapPurchaseOrderItems.add(sapPurchaseOrderItem);
});
sapPurchaseOrderItemApplication.saveSapPurchaseOrderItems(sapPurchaseOrder.getId(),sapPurchaseOrderItems);
}
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;
SapPurchaseOrderItemVo OrderItemVo = sapPurchaseOrderVo.getItemVo();
SapPurchaseOrderItem sapPurchaseOrderItem = new SapPurchaseOrderItem();
BeanUtil.copyProperties(OrderItemVo,sapPurchaseOrderItem);
sapPurchaseOrderItem.setPurchaseOrderId(sapPurchaseOrder.getId());
sapPurchaseOrderItemApplication.saveSapPurchaseOrderItem(sapPurchaseOrderItem);
}
/**
* 远程调用sap接口,传递数据
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;
*/
public void sendSapDate(SapPurchaseOrder sapPurchaseOrder,String flag) {
Map<String,Object> paramItem = new HashMap<>();
paramItem.put("ebeln",sapPurchaseOrder.getEbeln());
paramItem.put("BEDNR",sapPurchaseOrder.getBillCode());
paramItem.put("frgkz","10");
paramItem.put("flag",flag);
List<Map<String,Object>> paramList= new ArrayList<>();
paramList.add(paramItem);
Map<String,Object> param = new HashMap<>();
param.put("MODE","PO");
param.put("DATA",paramList);
ObjectMapper objectMapper = new ObjectMapper();
String url = "pass_approval/approval";
try {
String result = defaultHttpClient.execute(param, url);
List<Map<String, Object>> resultList = objectMapper.readValue(result, new TypeReference<List<Map<String, Object>>>() {});
Map<String, Object> resultMap = resultList.get(0);
if (!"S".equals(resultMap.get("TYPE"))) {
throw new RuntimeException("数据传输失败,请稍后手动重试!"+resultMap.get("MESSAGE"));
}
} catch (Exception e) {
throw new RuntimeException("数据传输失败请检查数据后重试!"+e.getMessage());
}
}
}
......@@ -25,11 +25,8 @@ public class SapPurchaseOrderItemApplicationImpl extends BaseApplication impleme
@Resource
private SapPurchaseOrderItemRepository sapPurchaseOrderItemRepository;
@Override
public void saveSapPurchaseOrderItems(String sapPurchaseOrderId, List<SapPurchaseOrderItem> sapPurchaseOrderItems) {
sapPurchaseOrderItems.forEach(sapPurchaseOrderItem -> {
sapPurchaseOrderItem.setPurchaseOrderId(sapPurchaseOrderId);
public void saveSapPurchaseOrderItem(SapPurchaseOrderItem sapPurchaseOrderItem) {
sapPurchaseOrderItemRepository.save(sapPurchaseOrderItem);
});
}
@Override
......@@ -40,13 +37,17 @@ public class SapPurchaseOrderItemApplicationImpl extends BaseApplication impleme
}
@Override
public Map<String, Object> querySapPurchaseOrderItems(SapPurchaseOrderItemQueryRequest queryRequest) {
Map<String, Object> map = new HashMap<>();
if (StringUtil.isNotBlank(queryRequest.getSapPurchaseOrderId())){
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPurchaseOrderItems");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
return map;
public SapPurchaseOrderItem getPurchaseOrderItem(String purchaseOrderId) {
return sapPurchaseOrderItemRepository.findSapPurchaseOrderItemByPurchaseOrderId(purchaseOrderId);
}
// @Override
// public Map<String, Object> querySapPurchaseOrderItems(SapPurchaseOrderItemQueryRequest queryRequest) {
// Map<String, Object> map = new HashMap<>();
// if (StringUtil.isNotBlank(queryRequest.getSapPurchaseOrderId())){
// QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPurchaseOrderItems");
// QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
// map = this.sqlExecutorDao.executeSlicedQuery(queryModel);
// }
// return map;
// }
}
package com.huigou.topsun.sap.purchaseOrder.controller;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.huigou.context.Operator;
import com.huigou.context.OrgUnit;
import com.huigou.topsun.sap.purchaseOrder.application.SapPurchaseOrderApplication;
import com.huigou.topsun.sap.purchaseOrder.application.SapPurchaseOrderItemApplication;
import com.huigou.topsun.sap.purchaseOrder.domain.SapPurchaseOrder;
import com.huigou.topsun.sap.purchaseOrder.domain.SapPurchaseOrderItem;
import com.huigou.topsun.sap.purchaseOrder.domain.query.SapPurchaseOrderQueryRequest;
import com.huigou.topsun.sap.purchaseOrder.domain.vo.SapPurchaseOrderVo;
import com.huigou.topsun.util.MyBaseUtil;
import com.huigou.uasp.annotation.ControllerMapping;
import com.huigou.uasp.annotation.SkipAuth;
import com.huigou.uasp.bmp.common.BizBillStatus;
......@@ -17,6 +22,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.HashMap;
import java.util.Map;
......@@ -28,6 +34,8 @@ import java.util.Map;
@Controller
@ControllerMapping("/sapPurchaseOrder")
public class SapPurchaseOrderController extends CommonController {
@Resource
private SapPurchaseOrderItemApplication sapPurchaseOrderItemApplication;
@Resource
private SapPurchaseOrderApplication sapPurchaseOrderApplication;
@Override
......@@ -39,7 +47,6 @@ public class SapPurchaseOrderController extends CommonController {
@RequestMapping( value = "/getSapPurchaseOrder")
@ResponseBody
public HashMap<String, Object> getSapPurchaseOrder(@RequestBody SapPurchaseOrderVo sapPurchaseOrderVo){
//SDO sdo = this.getSDO();
this.sapPurchaseOrderApplication.saveSapPurchaseOrderVo(sapPurchaseOrderVo);
HashMap<String, Object> messageMap = new HashMap<>();
messageMap.put("Message_Status","S");
......@@ -58,24 +65,30 @@ public class SapPurchaseOrderController extends CommonController {
return toResult(map);
}
public String forwardSapPurchaseOrderDetail(){
this.putAttribute("processDefinitionKey", SapPurchaseOrderApplication.PROCESS_DEFINITION_KEY);
// 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
this.putAttribute("procUnitId", "Apply");
SapPurchaseOrder sapPurchase = new SapPurchaseOrder();
sapPurchase.setStatusId(BizBillStatus.APPLYING.getId());
/**
* 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
*/
Operator operator = getOperator();
sapPurchase.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
return forward("sapPurchaseOrderDetail",sapPurchase);
}
// public String forwardSapPurchaseOrderDetail(){
// this.putAttribute("processDefinitionKey", SapPurchaseOrderApplication.PROCESS_DEFINITION_KEY);
// // 新增的时候procUnitId一定要设置成Apply,不然jsp页面的所有表单元素是readonly状态
// this.putAttribute("procUnitId", "Apply");
// SapPurchaseOrder sapPurchase = new SapPurchaseOrder();
// sapPurchase.setStatusId(BizBillStatus.APPLYING.getId());
// /**
// * 设置jsp页面初始化填充数据,如果不设置, 那么在jsp页面上填写完表单之后立即提交申请TaskDescription获取不到时间和相关人员信息
// */
// Operator operator = getOperator();
// sapPurchase.setDefaultValues(new OrgUnit(operator.getFullId(), operator.getFullName()));
// return forward("sapPurchaseOrderDetail",sapPurchase);
// }
public String showSapPurchaseOrderDetail(){
SDO sdo = this.getSDO();
String id = sdo.getBizId();
SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderApplication.loadSapPurchaseOrder(id);
return forward("sapPurchaseOrderDetail",sapPurchaseOrder);
SapPurchaseOrderItem purchaseOrderItem = sapPurchaseOrderItemApplication.getPurchaseOrderItem(sapPurchaseOrder.getId());
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"));
Map<String, Object> map = objectMapper.convertValue(sapPurchaseOrder, Map.class);
map.putAll(MyBaseUtil.convertToMap(purchaseOrderItem,false));
return forward("sapPurchaseOrderDetail",map);
}
}
package com.huigou.topsun.sap.purchaseOrder.controller;
import com.huigou.topsun.sap.purchaseOrder.application.SapPurchaseOrderItemApplication;
import com.huigou.topsun.sap.purchaseOrder.domain.query.SapPurchaseOrderItemQueryRequest;
import com.huigou.topsun.sap.purchaseOrder.repository.SapPurchaseOrderItemRepository;
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("/sapPurchaseOrderItem")
public class SapPurchaseOrderItemController extends CommonController {
@Resource
private SapPurchaseOrderItemApplication sapPurchaseOrderItemApplication;
@Resource
private SapPurchaseOrderItemRepository sapPurchaseOrderItemRepository;
public String querySapPurchaseOrderItems(){
SDO sdo = this.getSDO();
SapPurchaseOrderItemQueryRequest queryRequest = sdo.toQueryRequest(SapPurchaseOrderItemQueryRequest.class);
Map<String, Object> map = sapPurchaseOrderItemApplication.querySapPurchaseOrderItems(queryRequest);
return toResult(map);
}
public String deleteSapPurchaseOrderItem(){
SDO sdo = this.getSDO();
List<String> ids = sdo.getIds();
sapPurchaseOrderItemApplication.deleteByIds(ids);
return success();
}
}
package com.huigou.topsun.sap.purchaseOrder.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreType;
import com.huigou.data.domain.model.AbstractEntity;
import lombok.Data;
......@@ -18,6 +20,7 @@ import java.util.Date;
@Table(name="sap_purchase_order_item")
@Entity
@Data
@JsonIgnoreType
public class SapPurchaseOrderItem extends AbstractEntity {
......
......@@ -29,5 +29,5 @@ public class SapPurchaseOrderVo implements Serializable {
*/
private String batxt;
private List<SapPurchaseOrderItemVo> itemVos;
private SapPurchaseOrderItemVo itemVo;
}
......@@ -9,4 +9,6 @@ import org.springframework.data.jpa.repository.JpaRepository;
* @Description:
*/
public interface SapPurchaseOrderItemRepository extends JpaRepository<SapPurchaseOrderItem,String> {
SapPurchaseOrderItem findSapPurchaseOrderItemByPurchaseOrderId(String POId);
}
<?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="sapPurchaseOrderProc" name="采购审批" isExecutable="true">
<process id="sapPurchaseOrderProc" name="采购订单审批" isExecutable="true">
<extensionElements>
<activiti:executionListener event="start" delegateExpression="#{sapPurchaseOrderApplication}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="#{sapPurchaseOrderApplication}"></activiti:executionListener>
......
<?xml version="1.0" encoding="UTF-8"?>
<query-mappings>
<query name="queryExecuteBsnMessage" label="bsn业务人员表" table="bsn_message_execute">
<query name="queryExecuteBsnMessage" label="未完成任务" table="bsn_message_execute">
<sql-query>
SELECT t.id,t.message_sponsor_id,t.task_execute,t.business_code,t.update_date,t.finished_date,t.active,
CASE WHEN t.active = 3 THEN CONCAT(t.task_describe, :addText) ELSE t.task_describe END AS task_describe,
......@@ -14,17 +14,11 @@
</sql-query>
</query>
<query name="queryFinishBsnMessageSponsor" label="bsn业务人员表" table="bsn_message_sponsor">
<query name="queryFinishBsnMessageSponsor" label="获取流程中的任务发布信息" table="bsn_message_sponsor">
<sql-query>
SELECT t.*
FROM bsn_message_sponsor t
WHERE t.task_sponsor = ?
AND NOT EXISTS (
SELECT 1
FROM bsn_message_execute t2
WHERE t2.message_sponsor_id = t.id
AND t2.active != 1
)
WHERE t.status=0 and t.task_sponsor = ?
</sql-query>
</query>
......@@ -39,4 +33,21 @@
) AND id != :meId
</sql-query>
</query>
<query name="queryIsExecutesReady" label="bsn业务人员表" table="bsn_message">
<sql-query>
SELECT *
FROM `bsn_message_execute`
WHERE message_sponsor_id = ?
AND business_code = 'system'
AND NOT EXISTS (
SELECT 1
FROM `bsn_message_execute`
WHERE message_sponsor_id = ?
AND business_code != 'system'
AND active != 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