Commit cab5b685 authored by wanghang's avatar wanghang

费用报销

parent d3efd311
...@@ -40,7 +40,7 @@ var tableArray = [ ...@@ -40,7 +40,7 @@ var tableArray = [
} }
}, },
{ {
display: "BP", name: "partner", width: 120, minwidth: 120, type: "string", align: "left", display: "BP(合作伙伴)", name: "partner", width: 120, minwidth: 120, type: "string", align: "left",
editor: { editor: {
type: 'text' type: 'text'
...@@ -111,7 +111,7 @@ var tableArray = [ ...@@ -111,7 +111,7 @@ var tableArray = [
display: "计划付款日期", name: "zepFpldate", width: 120, minwidth: 120, type: "string", align: "left", display: "计划付款日期", name: "zepFpldate", width: 120, minwidth: 120, type: "string", align: "left",
editor: { editor: {
type: 'text' type: 'date'
} }
}, },
{ {
...@@ -309,8 +309,7 @@ var tableArray = [ ...@@ -309,8 +309,7 @@ var tableArray = [
} }
}, },
] ]
} }, {
, {
parms: {}, parms: {},
node: "capitalPostGrid", node: "capitalPostGrid",
gridManager: null, gridManager: null,
...@@ -345,25 +344,51 @@ var tableArray = [ ...@@ -345,25 +344,51 @@ var tableArray = [
}, },
] ]
} }
, {
parms: {},
node: "financialAudit_sapReturnGrid",
gridManager: null,
data: null,
columns: [
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{display: "记账凭证编号", name: "belnr", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账凭证财年", name: "gjahr", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账过账日期", name: "budat", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账凭证日期", name: "bldat", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "返回状态", name: "msgty", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "返回消息", name: "msgtx", width: 120, minwidth: 120, type: "string", align: "left"},
]
}
, {
parms: {},
node: "paymentAccomplish_sapReturnGrid",
gridManager: null,
data: null,
columns: [
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{display: "付款凭证编号", name: "belnr1", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "付款状态", name: "zpayStaus", width: 120, minwidth: 120, type: "string", align: "left"}
]
}
] ]
//创建表格(参数、列、插入的节点、数据源) //创建表格(参数、列、插入的节点、数据源)
function loadGrid(obj) { function loadGrid(obj) {
var toolbarOptions =null; var toolbarOptions = null;
// if(obj.node=="reimbursementApplierGrid") {//只有第一个表格含工具栏 // if(obj.node=="reimbursementApplierGrid") {//只有第一个表格含工具栏
toolbarOptions= UICtrl.getDefaultToolbarOptions({ toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () { addHandler: function () {
tableArray.forEach((item) => { tableArray.forEach((item) => {
UICtrl.addGridRow(item.gridManager, {zepItemno: getZepItemNo()}); UICtrl.addGridRow(item.gridManager, {zepItemno: getZepItemNo()});
}); });
}, },
deleteHandler: function () { deleteHandler: function () {
tableArray.forEach((item) => { tableArray.forEach((item) => {
item.gridManager.deleteSelectedRow(); item.gridManager.deleteSelectedRow();
}); });
} }
}); });
// } // }
obj.gridManager = UICtrl.grid("#" + obj.node, { obj.gridManager = UICtrl.grid("#" + obj.node, {
columns: obj.columns, columns: obj.columns,
...@@ -391,11 +416,11 @@ function loadGrid(obj) { ...@@ -391,11 +416,11 @@ function loadGrid(obj) {
row = temp; row = temp;
} }
}) })
checked?item.gridManager.select(row):item.gridManager.unselect(row); checked ? item.gridManager.select(row) : item.gridManager.unselect(row);
}) })
return false;//阻止默认事件、防止某个表格的对应行被多次选中 return false;//阻止默认事件、防止某个表格的对应行被多次选中
}, },
onBeforeCheckAllRow: function (a,b){ onBeforeCheckAllRow: function (a, b) {
// console.log(b) // console.log(b)
// $(b).addClass("l-checked") // $(b).addClass("l-checked")
...@@ -508,6 +533,7 @@ function getTableDataAll(obj) { ...@@ -508,6 +533,7 @@ function getTableDataAll(obj) {
//调用数组 //调用数组
function useArrayTable(func, ...data) { function useArrayTable(func, ...data) {
debugger
const results = tableArray.map((item) => { const results = tableArray.map((item) => {
return func(item, ...data); return func(item, ...data);
}); });
...@@ -515,13 +541,13 @@ function useArrayTable(func, ...data) { ...@@ -515,13 +541,13 @@ function useArrayTable(func, ...data) {
} }
//获取最新子序号(维护实体的标识) //获取最新子序号(维护实体的标识)
function getZepItemNo(){ function getZepItemNo() {
let result =getTableDataAll(tableArray[tableArray.length-1]); let result = getTableDataAll(tableArray[tableArray.length - 1]);
let zepItemNo="001"; let zepItemNo = "001";
if(result.length>0){ if (result.length > 0) {
//获取上一个节点的子序值 //获取上一个节点的子序值
let wornNo= parseInt(result[result.length-1]["zepItemno"], 10); let wornNo = parseInt(result[result.length - 1]["zepItemno"], 10);
zepItemNo=("00" + (wornNo + 1)).slice(-3); zepItemNo = ("00" + (wornNo + 1)).slice(-3);
} }
return zepItemNo; return zepItemNo;
} }
\ No newline at end of file
...@@ -26,10 +26,11 @@ ...@@ -26,10 +26,11 @@
<div class="hg-form-cols"> <div class="hg-form-cols">
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC name="zepNo" required="false" label="EP流程单号" labelCol="2" maxLength="64" fieldCol="2"/> <x:inputC name="zepNo" required="false" label="EP流程单号" labelCol="2" maxLength="64" fieldCol="2"/>
<x:inputC name="zepFcrdate" required="false" wrapper="date" label="付款申请创建日期" labelCol="2" fieldCol="2"/> <x:inputC name="zepFcrdate" required="false" wrapper="date" label="付款申请创建日期" labelCol="2"
fieldCol="2"/>
<x:inputC name="zepFtype" required="false" label="EP付款申请类别" labelCol="2" maxLength="64" <x:inputC name="zepFtype" required="false" label="EP付款申请类别" labelCol="2" maxLength="64"
fieldCol="2" fieldCol="2"
/> />
<x:inputC name="zepFtypename" required="false" label="EP付款申请类别名称" labelCol="2" maxLength="64" <x:inputC name="zepFtypename" required="false" label="EP付款申请类别名称" labelCol="2" maxLength="64"
fieldCol="2"/> fieldCol="2"/>
<x:inputC name="bukrs" required="false" label="公司代码" labelCol="2" fieldCol="2"/> <x:inputC name="bukrs" required="false" label="公司代码" labelCol="2" fieldCol="2"/>
...@@ -38,8 +39,8 @@ ...@@ -38,8 +39,8 @@
<x:inputC name="zepDepartname" required="false" label="EP部门名称" labelCol="2" fieldCol="2"/> <x:inputC name="zepDepartname" required="false" label="EP部门名称" labelCol="2" fieldCol="2"/>
<x:inputC name="zepAppli" required="false" label="EP流程申请人代码" labelCol="2" fieldCol="2"/> <x:inputC name="zepAppli" required="false" label="EP流程申请人代码" labelCol="2" fieldCol="2"/>
<x:inputC name="zepAppliname" required="false" label="EP流程申请人" labelCol="2" fieldCol="2"/> <x:inputC name="zepAppliname" required="false" label="EP流程申请人" labelCol="2" fieldCol="2"/>
<x:inputC name="zepFcrdate" wrapper="date" required="false" label="付款申请创建日期" labelCol="2" fieldCol="2"/> <x:inputC name="zepFcrdate" wrapper="date" required="false" label="付款申请创建日期" labelCol="2"
<x:inputC name="zepNo" required="false" label="EP流程单号" labelCol="2" fieldCol="2"/> fieldCol="2"/>
<x:inputC name="zepTxt" required="false" label="付款申请内容" labelCol="2" fieldCol="2"/> <x:inputC name="zepTxt" required="false" label="付款申请内容" labelCol="2" fieldCol="2"/>
<x:inputC name="zepFtamount" required="false" label="申请总金额(本位币)" labelCol="2" fieldCol="2"/> <x:inputC name="zepFtamount" required="false" label="申请总金额(本位币)" labelCol="2" fieldCol="2"/>
<x:inputC name="zepFttax" required="false" label="申请总税额(本位币)" labelCol="2" fieldCol="2"/> <x:inputC name="zepFttax" required="false" label="申请总税额(本位币)" labelCol="2" fieldCol="2"/>
...@@ -53,19 +54,30 @@ ...@@ -53,19 +54,30 @@
</div> </div>
<div class="blank_div clearfix"></div> <div class="blank_div clearfix"></div>
<x:title title="报销人填写" name="group"/> <x:title title="报销人填写" name="group"/>
<div id="reimbursementApplierGrid" style="margin: 2px;"> <div id="reimbursementApplierGrid" style="margin: 2px;">
</div> </div>
<div class="blank_div clearfix"></div> <div class="blank_div clearfix"></div>
<x:title title="财务审核填写" name="group"/> <x:title title="财务审核填写" name="group"/>
<div id="financialAuditGrid" style="margin: 2px;"> <div id="financialAuditGrid" style="margin: 2px;">
</div> </div>
<div class="blank_div clearfix"></div> <div class="blank_div clearfix"></div>
<x:title title="资金岗填写" name="group"/> <x:title title="财务已审核、sap回执" name="group"/>
<div id="financialAudit_sapReturnGrid" style="margin: 2px;">
</div>
<div class="blank_div clearfix"></div>
<x:title title="资金岗填写" name="group"/>
<div id="capitalPostGrid" style="margin: 2px;"> <div id="capitalPostGrid" style="margin: 2px;">
</div> </div>
<div class="blank_div clearfix"></div>
<x:title title="付款完成、sap回执" name="group"/>
<div id="paymentAccomplish_sapReturnGrid" style="margin: 2px;">
</div>
</div> </div>
</form> </form>
......
...@@ -15,16 +15,13 @@ function initItemGrid() { ...@@ -15,16 +15,13 @@ function initItemGrid() {
dataAction: 'server', dataAction: 'server',
url: web_app.name + '/sapPurchaseOrder/querySapPurchaseOrderItems.ajax', url: web_app.name + '/sapPurchaseOrder/querySapPurchaseOrderItems.ajax',
parms: {sapPurchaseOrderId: getId()}, parms: {sapPurchaseOrderId: getId()},
height: '99.6%', height: '400px',
heightDiff: -4, heightDiff: -4,
sortName: 'id', // sortName: 'id',
sortOrder: 'asc', // sortOrder: 'asc',
checkbox: true,
usePager: true, usePager: true,
rownumbers: true, rownumbers: true,
enabledEdit: true, // fixedCellHeight: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
} }
); );
UICtrl.setSearchAreaToggle(itemGridManager); UICtrl.setSearchAreaToggle(itemGridManager);
......
...@@ -27,14 +27,36 @@ ...@@ -27,14 +27,36 @@
<x:hidden name="statusId"/> <x:hidden name="statusId"/>
<div class="hg-form-cols"> <div class="hg-form-cols">
<div class="hg-form-row"> <div class="hg-form-row">
<x:inputC name="ebeln" label="采购订单号码" readonly="false" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="ebeln" label="采购订单号码" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="bsart" label="采购订单类型" readonly="false" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="bsart" label="采购订单类型" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="batxt" label="采购订单类型描述" readonly="false" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="batxt" label="采购订单类型描述" readonly="true" labelCol="1" fieldCol="2"
<x:inputC name="ekgrp" label="采购组" readonly="false" labelCol="1" fieldCol="2" required="false"/> required="false"/>
<x:inputC name="eknam" label="采购组描述" readonly="false" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="ekgrp" label="采购组" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="waers" label="币种" readonly="false" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="eknam" label="采购组描述" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="fillinDate" label="创建日期" readonly="true" wrapper="date" labelCol="1" fieldCol="2" required="false"/> <x:inputC name="waers" label="币种" readonly="true" labelCol="1" fieldCol="2" required="false"/>
</div> <x:inputC name="fillinDate" label="创建日期" readonly="true" wrapper="date" labelCol="1" fieldCol="2"
required="false"/>
</div>
</div>
<x:title title="sap回执" name="group"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="msgType" label="消息类型" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="msgId" label="消息id" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="number" label="消息编号" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="message" label="消息内容" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="logNo" label="日志编号" readonly="true" labelCol="1" fieldCol="2" required="false"/>
<x:inputC name="logMsgNo" label="日志消息编号" readonly="true" labelCol="1" fieldCol="2"
required="false"/>
<x:inputC name="messageV1" label="消息参数 1" readonly="true" wrapper="date" labelCol="1" fieldCol="2"
required="false"/>
<x:inputC name="messageV2" label="消息参数 2" readonly="true" wrapper="date" labelCol="1" fieldCol="2"
required="false"/>
<x:inputC name="messageV3" label="消息参数 3" readonly="true" wrapper="date" labelCol="1" fieldCol="2"
required="false"/>
<x:inputC name="messageV4" label="消息参数 4" readonly="true" wrapper="date" labelCol="1" fieldCol="2"
required="false"/>
</div>
</div> </div>
<div id="maingrid"></div> <div id="maingrid"></div>
</form> </form>
......
...@@ -22,6 +22,8 @@ function loadGrid() { ...@@ -22,6 +22,8 @@ function loadGrid() {
, {display: "采购订单号码", name: "ebeln", 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: "bsart", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "采购订单类型描述", name: "batxt", width: 150, minWidth: 60, type: "string", align: "center"} , {display: "采购订单类型描述", name: "batxt", width: 150, minWidth: 60, type: "string", align: "center"}
, {display: "sap回执", name: "message", width: 200, minWidth: 60, type: "string", align: "center"}
], ],
dataAction: 'server', dataAction: 'server',
url: web_app.name + '/sapPurchaseOrder/slicedSapPurchaseOrderList.ajax?', url: web_app.name + '/sapPurchaseOrder/slicedSapPurchaseOrderList.ajax?',
...@@ -31,13 +33,9 @@ function loadGrid() { ...@@ -31,13 +33,9 @@ function loadGrid() {
height: '100%', height: '100%',
pageSize: 100, pageSize: 100,
heightDiff: -4, heightDiff: -4,
checkbox: true,
usePager: true, usePager: true,
rownumbers: true, rownumbers: true,
enabledEdit: false,
fixedCellHeight: true, fixedCellHeight: true,
selectRowButtonOnly: true,
enableObjectBag: true,
onSuccess: function (data) { onSuccess: function (data) {
if (data.error) { if (data.error) {
Public.tip(data.error); Public.tip(data.error);
......
...@@ -23,5 +23,5 @@ public interface SapCostReimbursementApplication { ...@@ -23,5 +23,5 @@ public interface SapCostReimbursementApplication {
void deleteSapCostReimbursementById(String id); void deleteSapCostReimbursementById(String id);
void deleteSapCostReimbursementByIds(List<String> ids); void deleteSapCostReimbursementByIds(List<String> ids);
void sendSapDate(String bizId); void sendSapDate( SapCostReimbursement sapCostReimbursement);
} }
\ No newline at end of file
package com.huigou.topsun.sap.costReimbursement.application.impl; package com.huigou.topsun.sap.costReimbursement.application.impl;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.huigou.data.query.model.QueryDescriptor; import com.huigou.data.query.model.QueryDescriptor;
...@@ -24,28 +25,29 @@ import com.huigou.util.SDO; ...@@ -24,28 +25,29 @@ import com.huigou.util.SDO;
import lombok.SneakyThrows; import lombok.SneakyThrows;
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.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.io.IOException;
import java.util.Base64; import java.util.*;
import java.util.List;
import java.util.Map;
@Service("sapCostReimbursementApplication") @Service("sapCostReimbursementApplication")
public class SapCostReimbursementApplicationImpl extends FlowBroker implements SapCostReimbursementApplication { public class SapCostReimbursementApplicationImpl extends FlowBroker implements SapCostReimbursementApplication {
private final static Logger LOG = LoggerFactory.getLogger(SapCostReimbursementApplicationImpl.class);
@Autowired @Autowired
private SapCostReimbursementDetailRepository costReimbursementDetailRepository; private SapCostReimbursementDetailRepository costReimbursementDetailRepository;
@Autowired @Autowired
private SapCostReimbursementRepository costReimbursementRepository; private SapCostReimbursementRepository costReimbursementRepository;
// @Autowired @Autowired
// DefaultHttpClient defaultHttpClient; DefaultHttpClient defaultHttpClient;
// @Autowired // @Autowired
// MessageCodec messageCodec; // MessageCodec messageCodec;
...@@ -67,11 +69,12 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -67,11 +69,12 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
String CRDetailJSON = sdo.getString("CRDetail"); String CRDetailJSON = sdo.getString("CRDetail");
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
List<SapCostReimbursementDetail> CRDetailAll = costReimbursementDetailRepository.findAllByReimbursementBaseInfoId(sapCostReimbursement.getId()); List<SapCostReimbursementDetail> CRDetailAll = costReimbursementDetailRepository.findAllByReimbursementBaseInfoId(sapCostReimbursement.getId());
if (!CRDetailAll.isEmpty()) { if (!CRDetailAll.isEmpty()) {
costReimbursementDetailRepository.delete(CRDetailAll); costReimbursementDetailRepository.delete(CRDetailAll);
} }
List<SapCostReimbursementDetail> CRDetailList = objectMapper.readValue(CRDetailJSON, new TypeReference<List<SapCostReimbursementDetail>>() {}); List<SapCostReimbursementDetail> CRDetailList = objectMapper.readValue(CRDetailJSON, new TypeReference<List<SapCostReimbursementDetail>>() {
});
for (SapCostReimbursementDetail item : CRDetailList) { for (SapCostReimbursementDetail item : CRDetailList) {
item.setReimbursementBaseInfoId(sapCostReimbursement.getId()); item.setReimbursementBaseInfoId(sapCostReimbursement.getId());
} }
...@@ -101,7 +104,7 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -101,7 +104,7 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
sapCostReimbursement.setStatusId(status.getId()); sapCostReimbursement.setStatusId(status.getId());
costReimbursementRepository.save(sapCostReimbursement); costReimbursementRepository.save(sapCostReimbursement);
//审核完成、远程调用sap接口 //审核完成、远程调用sap接口
sendSapDate(bizId); sendSapDate(sapCostReimbursement);
} }
@Override @Override
...@@ -155,65 +158,77 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S ...@@ -155,65 +158,77 @@ public class SapCostReimbursementApplicationImpl extends FlowBroker implements S
ids.forEach(this::deleteSapCostReimbursementById); ids.forEach(this::deleteSapCostReimbursementById);
} }
/** /**
* 远程调用sap接口,传递数据 * 远程调用sap接口,传递数据
*
* @param bizId
*/ */
public void sendSapDate(String bizId) { public void sendSapDate(SapCostReimbursement sapCostReimbursement) {
SapCostReimbursement sapCostReimbursement = costReimbursementRepository.findOne(bizId);
if (sapCostReimbursement.getStatusId() == BizBillStatus.APPLYING.getId()) { if (sapCostReimbursement.getStatusId() == BizBillStatus.APPLYING.getId()) {
throw new RuntimeException("本数据未经审批完成!"); throw new RuntimeException("本数据未经审批完成!");
} }
List<SapCostReimbursementDetail> all = costReimbursementDetailRepository.findAllByReimbursementBaseInfoId(bizId);
List<Map<String, Object>> list = new ArrayList<>();
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
Map<String, Object> map = MyBaseUtil.convertToMap(sapCostReimbursement,true);
List<SapCostReimbursementDetail> all = costReimbursementDetailRepository.findAllByReimbursementBaseInfoId(sapCostReimbursement.getId());
List<Object> paramList = new ArrayList<>();
List<Map<String, Object>> itemList = new ArrayList<>();
// 封装参数 Map<String, Object> paramMap = new HashMap<>();
// for (SapStatsIndicatorsDetail sapStatsIndicatorsDetail : all) { new ArrayList<>();
// Map<String, Object> detailMap = objectMapper.convertValue(sapStatsIndicatorsDetail, Map.class);
// map.put("ITEM", detailMap); Map<String, Object> map = MyBaseUtil.convertToMap(sapCostReimbursement, true);
// list.add(map); map.remove("ZEP_FTYPE");
// } map.remove("ZEP_NO");
// // 封装参数
// String url = "cud_kb31n/kb31n"; for (SapCostReimbursementDetail costReimbursementDetail : all) {
// SapStatsIndicatorsResult sapStatsIndicatorsResult = null; Map<String, Object> detailMap = MyBaseUtil.convertToMap(costReimbursementDetail, true);
// try { detailMap.putAll(map);
// String result = defaultHttpClient.execute(list, url); itemList.add(detailMap);
// List<SapStatsIndicatorsResult> resultList = objectMapper.readValue(result, new TypeReference<List<SapStatsIndicatorsResult>>() { }
// }); paramMap.put("ITEM", itemList);
// paramMap.put("MANDT", "300");
// sapStatsIndicatorsResult = resultList.get(0); paramMap.put("ZEP_FTYPE", sapCostReimbursement.getZepFtype());
// paramMap.put("ZEP_NO", sapCostReimbursement.getZepNo());
// if (!"s".equals(sapStatsIndicatorsResult.getType())) { paramList.add(paramMap);
// throw new RuntimeException("数据传输失败,请稍后手动重试!");
// } String url = "cud_fi012/cud_fi012";
// } catch (IOException e) { try {
// if (sapStatsIndicatorsResult == null) { String result = defaultHttpClient.execute(paramList, url);
// sapStatsIndicatorsResult = new SapStatsIndicatorsResult(); List<Map<String, Object>> resultList = objectMapper.readValue(result, new TypeReference<List<Map<String, Object>>>() {
// } });
// sapStatsIndicatorsResult.setType("A");
// throw new RuntimeException("sap服务器无响应请稍后手动重试!"); StringBuffer errorMsg = new StringBuffer();
// } finally { for (Map<String, Object> resultMap : resultList) {
// SapStatsIndicatorsResult statsIndicatorsId = sapStatsIndicatorsResultRepository.findByStatsIndicatorsId(bizId); if (!"S".equals(resultMap.get("TYPE"))) {
// if(statsIndicatorsId!=null)sapStatsIndicatorsResultRepository.delete(statsIndicatorsId); errorMsg.append(resultMap.get("MESSAGE"));
// sapStatsIndicatorsResult.setStatsIndicatorsId(bizId); }
// sapStatsIndicatorsResultRepository.save(sapStatsIndicatorsResult); }
// } if (errorMsg.length()==0) {
Map<String, Object> resultMap = resultList.get(0);
sapCostReimbursement.setMsgId((String) resultMap.get("ID"));
sapCostReimbursement.setNumber((String) resultMap.get("NUMBER"));
sapCostReimbursement.setMsgType((String) resultMap.get("TYPE"));
sapCostReimbursement.setLogNo((String) resultMap.get("LOG_NO"));
sapCostReimbursement.setLogMsgNo((String) resultMap.get("LOG_MSG_NO"));
sapCostReimbursement.setMessage((String) resultMap.get("MESSAGE"));
sapCostReimbursement.setMessageV1((String) resultMap.get("MESSAGE_V1"));
sapCostReimbursement.setMessageV2((String) resultMap.get("MESSAGE_V1"));
sapCostReimbursement.setMessageV3((String) resultMap.get("MESSAGE_V1"));
sapCostReimbursement.setMessageV4((String) resultMap.get("MESSAGE_V1"));
this.costReimbursementRepository.save(sapCostReimbursement);
} else {
LOG.error("数据传输失败!error: {}", errorMsg);
throw new RuntimeException("数据传输失败,请检查后重试!error:" + errorMsg);
}
} catch (IOException e) {
LOG.error("sap服务器无响应请稍后手动重试!error: {}", e.getMessage());
throw new RuntimeException("sap服务器无响应请稍后手动重试!error:" + e.getMessage());
}
} }
public static void main(String[] args) { public static void main(String[] args) throws JsonProcessingException {
// post.setHeader("Content-type", "application/json;charset=utf-8"); // post.setHeader("Content-type", "application/json;charset=utf-8");
String usernameAndPassword ="rest_user:Bsn123456";
String usernameAndPassword = "rest_user:Bsn123456";
System.out.println("Authorization"); System.out.println("Authorization");
System.out.println( "Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes())); System.out.println("Basic " + Base64.getEncoder().encodeToString(usernameAndPassword.getBytes()));
} }
} }
\ No newline at end of file
...@@ -4,6 +4,7 @@ import java.math.BigDecimal; ...@@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.huigou.data.domain.model.FlowBillAbstractEntity; import com.huigou.data.domain.model.FlowBillAbstractEntity;
import lombok.Data; import lombok.Data;
...@@ -132,6 +133,69 @@ public class SapCostReimbursement extends FlowBillAbstractEntity { ...@@ -132,6 +133,69 @@ public class SapCostReimbursement extends FlowBillAbstractEntity {
private BigDecimal zepPttax1; private BigDecimal zepPttax1;
/**
* 消息类型
*/
@JsonIgnore
@Column(name = "MSG_TYPE")
private String msgType;
/**
* 消息id
*/
@JsonIgnore
@Column(name = "MSG_ID")
private String msgId;
/**
* 消息编号
*/
@JsonIgnore
@Column(name = "NUMBER")
private String number;
/**
* 消息内容
*/
@JsonIgnore
@Column(name = "MESSAGE")
private String message;
/**
* 日志编号
*/
@JsonIgnore
@Column(name = "LOG_NO")
private String logNo;
/**
* 日志消息编号
*/
@JsonIgnore
@Column(name = "LOG_MSG_NO")
private String logMsgNo;
/**
* 消息参数 1
*/
@JsonIgnore
@Column(name = "MESSAGE_V1")
private String messageV1;
/**
* 消息参数 2
*/
@JsonIgnore
@Column(name = "MESSAGE_V2")
private String messageV2;
/**
* 消息参数 3
*/
@JsonIgnore
@Column(name = "MESSAGE_V3")
private String messageV3;
/**
* 消息参数 4
*/
@JsonIgnore
@Column(name = "MESSAGE_V4")
private String messageV4;
@Override @Override
protected String getCodeRuleId() { protected String getCodeRuleId() {
return "sapCostReimbursement"; return "sapCostReimbursement";
......
...@@ -5,6 +5,8 @@ import java.math.BigDecimal; ...@@ -5,6 +5,8 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import javax.persistence.*; import javax.persistence.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data; import lombok.Data;
import org.hibernate.annotations.GenericGenerator; import org.hibernate.annotations.GenericGenerator;
...@@ -30,11 +32,13 @@ public class SapCostReimbursementDetail implements Serializable { ...@@ -30,11 +32,13 @@ public class SapCostReimbursementDetail implements Serializable {
strategy = "guid" strategy = "guid"
) )
@Column(name = "reimbursement_detail_id") @Column(name = "reimbursement_detail_id")
@JsonIgnore
private String reimbursementDetailId; private String reimbursementDetailId;
/** /**
* *
*/ */
@JsonIgnore
@Column(name = "reimbursement_base_info_id") @Column(name = "reimbursement_base_info_id")
private String reimbursementBaseInfoId; private String reimbursementBaseInfoId;
...@@ -131,6 +135,7 @@ public class SapCostReimbursementDetail implements Serializable { ...@@ -131,6 +135,7 @@ public class SapCostReimbursementDetail implements Serializable {
/** /**
* 计划付款日期 * 计划付款日期
*/ */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Column(name = "ZEP_FPLDATE") @Column(name = "ZEP_FPLDATE")
private Date zepFpldate; private Date zepFpldate;
...@@ -362,6 +367,4 @@ public class SapCostReimbursementDetail implements Serializable { ...@@ -362,6 +367,4 @@ public class SapCostReimbursementDetail implements Serializable {
@Column(name = "MSGTX") @Column(name = "MSGTX")
private String msgtx; private String msgtx;
private static final long serialVersionUID = 1L;
} }
\ No newline at end of file
...@@ -70,7 +70,6 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu ...@@ -70,7 +70,6 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
} }
@Override @Override
protected Map<String, Object> getProcessBizParams(String bizId) { protected Map<String, Object> getProcessBizParams(String bizId) {
// 返回业务数据给流程实例 // 返回业务数据给流程实例
...@@ -85,7 +84,7 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu ...@@ -85,7 +84,7 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId); SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId);
sapPurchaseOrder.setStatusId(status.getId()); sapPurchaseOrder.setStatusId(status.getId());
SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder); SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder);
this.sendSapDate(save,"Y"); this.sendSapDate(save, "Y");
} }
...@@ -110,7 +109,7 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu ...@@ -110,7 +109,7 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId); SapPurchaseOrder sapPurchaseOrder = sapPurchaseOrderRepository.findOne(bizId);
sapPurchaseOrder.setStatusId(BizBillStatus.APPLYING.getId()); sapPurchaseOrder.setStatusId(BizBillStatus.APPLYING.getId());
SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder); SapPurchaseOrder save = sapPurchaseOrderRepository.save(sapPurchaseOrder);
this.sendSapDate(save,"N"); this.sendSapDate(save, "N");
// 调用 onEnd 方法 // 调用 onEnd 方法
// DelegateExecution execution = delegateTask.getExecution(); // DelegateExecution execution = delegateTask.getExecution();
// onEnd(execution); // onEnd(execution);
...@@ -132,12 +131,12 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu ...@@ -132,12 +131,12 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
@Override @Override
@Transactional @Transactional
public void saveSapPurchaseOrderDto(SapPurchaseOrderDto sapPurchaseOrderDto){ public void saveSapPurchaseOrderDto(SapPurchaseOrderDto sapPurchaseOrderDto) {
SapPurchaseOrderVo sapPurchaseOrderVo = sapPurchaseOrderDto.getLsHeader(); SapPurchaseOrderVo sapPurchaseOrderVo = sapPurchaseOrderDto.getLsHeader();
SapPurchaseOrder purchaseOrder = sapPurchaseOrderRepository.findAllByEbeln(sapPurchaseOrderVo.getEbeln()); SapPurchaseOrder purchaseOrder = sapPurchaseOrderRepository.findAllByEbeln(sapPurchaseOrderVo.getEbeln());
String purchaseOrderId=""; String purchaseOrderId = "";
//数据第一次接收,创建流程任务 //数据第一次接收,创建流程任务
if(purchaseOrder==null) { if (purchaseOrder == null) {
SapPurchaseOrder sapPurchaseOrder = new SapPurchaseOrder(); SapPurchaseOrder sapPurchaseOrder = new SapPurchaseOrder();
BeanUtil.copyProperties(sapPurchaseOrderVo, sapPurchaseOrder); BeanUtil.copyProperties(sapPurchaseOrderVo, sapPurchaseOrder);
//初始化用户信息 //初始化用户信息
...@@ -152,54 +151,67 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu ...@@ -152,54 +151,67 @@ public class SapPurchaseOrderApplicationImpl extends FlowBroker implements SapPu
sapPurchaseOrder.setFillinDate(sapPurchaseOrderVo.getAedat()); sapPurchaseOrder.setFillinDate(sapPurchaseOrderVo.getAedat());
sapPurchaseOrder = this.sapPurchaseOrderRepository.save(sapPurchaseOrder); sapPurchaseOrder = this.sapPurchaseOrderRepository.save(sapPurchaseOrder);
purchaseOrderId=sapPurchaseOrder.getId(); purchaseOrderId = sapPurchaseOrder.getId();
}else { } else {
//数据第n次接收覆盖上一次数据 //数据第n次接收覆盖上一次数据
BeanUtil.copyProperties(sapPurchaseOrderVo, purchaseOrder); BeanUtil.copyProperties(sapPurchaseOrderVo, purchaseOrder);
this.sapPurchaseOrderRepository.save(purchaseOrder); this.sapPurchaseOrderRepository.save(purchaseOrder);
List<SapPurchaseOrderItem> purchaseOrderItems = sapPurchaseOrderItemApplication.getPurchaseOrderItems(purchaseOrder.getId()); List<SapPurchaseOrderItem> purchaseOrderItems = sapPurchaseOrderItemApplication.getPurchaseOrderItems(purchaseOrder.getId());
sapPurchaseOrderItemApplication.deletePurchaseOrderItems(purchaseOrderItems); sapPurchaseOrderItemApplication.deletePurchaseOrderItems(purchaseOrderItems);
purchaseOrderId=purchaseOrder.getId(); purchaseOrderId = purchaseOrder.getId();
} }
List<SapPurchaseOrderItemVo> ltItems = sapPurchaseOrderDto.getLtItems(); List<SapPurchaseOrderItemVo> ltItems = sapPurchaseOrderDto.getLtItems();
List<SapPurchaseOrderItem> purchaseOrderItems = new ArrayList<>(); List<SapPurchaseOrderItem> purchaseOrderItems = new ArrayList<>();
ltItems.forEach(approvalItemVo->{ ltItems.forEach(approvalItemVo -> {
SapPurchaseOrderItem sapPurchaseApprovalItem = new SapPurchaseOrderItem(); SapPurchaseOrderItem sapPurchaseApprovalItem = new SapPurchaseOrderItem();
BeanUtil.copyProperties(approvalItemVo,sapPurchaseApprovalItem); BeanUtil.copyProperties(approvalItemVo, sapPurchaseApprovalItem);
purchaseOrderItems.add(sapPurchaseApprovalItem); purchaseOrderItems.add(sapPurchaseApprovalItem);
}); });
sapPurchaseOrderItemApplication.saveSapPurchaseOrderItems(purchaseOrderId,purchaseOrderItems); sapPurchaseOrderItemApplication.saveSapPurchaseOrderItems(purchaseOrderId, purchaseOrderItems);
} }
/** /**
* 远程调用sap接口,传递数据 * 远程调用sap接口,传递数据
*/ */
public void sendSapDate(SapPurchaseOrder sapPurchaseOrder,String flag) { public void sendSapDate(SapPurchaseOrder sapPurchaseOrder, String flag) {
Map<String,Object> paramItem = new HashMap<>(); Map<String, Object> paramItem = new HashMap<>();
paramItem.put("ebeln",sapPurchaseOrder.getEbeln()); paramItem.put("ebeln", sapPurchaseOrder.getEbeln());
paramItem.put("BEDNR",sapPurchaseOrder.getBillCode()); paramItem.put("BEDNR", sapPurchaseOrder.getBillCode());
paramItem.put("frgkz","10"); paramItem.put("frgkz", "10");
paramItem.put("flag",flag); paramItem.put("flag", flag);
List<Map<String,Object>> paramList= new ArrayList<>(); List<Map<String, Object>> paramList = new ArrayList<>();
paramList.add(paramItem); paramList.add(paramItem);
Map<String,Object> param = new HashMap<>(); Map<String, Object> param = new HashMap<>();
param.put("MODE","PO"); param.put("MODE", "PO");
param.put("DATA",paramList); param.put("DATA", paramList);
ObjectMapper objectMapper = new ObjectMapper(); ObjectMapper objectMapper = new ObjectMapper();
String url = "pass_approval/approval"; String url = "pass_approval/approval";
try { try {
String result = defaultHttpClient.execute(param, url); String result = defaultHttpClient.execute(param, url);
List<Map<String, Object>> resultList = objectMapper.readValue(result, new TypeReference<List<Map<String, Object>>>() {}); List<Map<String, Object>> resultList = objectMapper.readValue(result, new TypeReference<List<Map<String, Object>>>() {
});
Map<String, Object> resultMap = resultList.get(0); Map<String, Object> resultMap = resultList.get(0);
if (!"S".equals(resultMap.get("TYPE"))) { if ("S".equals(resultMap.get("TYPE"))) {
throw new RuntimeException("数据传输失败,请稍后手动重试!"+resultMap.get("MESSAGE")); sapPurchaseOrder.setMsgId((String) resultMap.get("ID"));
sapPurchaseOrder.setNumber((String) resultMap.get("NUMBER"));
sapPurchaseOrder.setMsgType((String) resultMap.get("TYPE"));
sapPurchaseOrder.setLogNo((String) resultMap.get("LOG_NO"));
sapPurchaseOrder.setLogMsgNo((String) resultMap.get("LOG_MSG_NO"));
sapPurchaseOrder.setMessage((String) resultMap.get("MESSAGE"));
sapPurchaseOrder.setMessageV1((String) resultMap.get("MESSAGE_V1"));
sapPurchaseOrder.setMessageV2((String) resultMap.get("MESSAGE_V1"));
sapPurchaseOrder.setMessageV3((String) resultMap.get("MESSAGE_V1"));
sapPurchaseOrder.setMessageV4((String) resultMap.get("MESSAGE_V1"));
this.sapPurchaseOrderRepository.save(sapPurchaseOrder);
} else {
throw new RuntimeException("数据传输失败,请稍后手动重试!" + resultMap.get("MESSAGE"));
} }
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException("数据传输失败请检查数据后重试!"+e.getMessage()); throw new RuntimeException("数据传输失败请检查数据后重试!" + e.getMessage());
} }
} }
} }
...@@ -12,10 +12,9 @@ import java.io.Serializable; ...@@ -12,10 +12,9 @@ import java.io.Serializable;
import java.util.Date; import java.util.Date;
/** /**
*
* @TableName sap_purchase_order * @TableName sap_purchase_order
*/ */
@Table(name="sap_purchase_order") @Table(name = "sap_purchase_order")
@Entity @Entity
@Data @Data
public class SapPurchaseOrder extends FlowBillAbstractEntity { public class SapPurchaseOrder extends FlowBillAbstractEntity {
...@@ -76,7 +75,78 @@ public class SapPurchaseOrder extends FlowBillAbstractEntity { ...@@ -76,7 +75,78 @@ public class SapPurchaseOrder extends FlowBillAbstractEntity {
// @Column(name = "NAME_TEXT") // @Column(name = "NAME_TEXT")
// private String nameText; // private String nameText;
/**
* 消息类型
*/
@Column(name = "MSG_TYPE")
private String msgType;
/**
* 消息id
*/
@Column(name = "MSG_ID")
private String msgId;
/**
* 消息编号
*/
@Column(name = "NUMBER")
private String number;
/**
* 消息内容
*/
@Column(name = "MESSAGE")
private String message;
/**
* 日志编号
*/
@Column(name = "LOG_NO")
private String logNo;
/**
* 日志消息编号
*/
@Column(name = "LOG_MSG_NO")
private String logMsgNo;
/**
* 消息参数 1
*/
@Column(name = "MESSAGE_V1")
private String messageV1;
/**
* 消息参数 2
*/
@Column(name = "MESSAGE_V2")
private String messageV2;
/**
* 消息参数 3
*/
@Column(name = "MESSAGE_V3")
private String messageV3;
/**
* 消息参数 4
*/
@Column(name = "MESSAGE_V4")
private String messageV4;
// /**
// * 参数
// */
// @Column(name = "PARAMETER")
// private String parameter;
// /**
// * 行数
// */
// @Column(name = "ROW")
// private String row;
// /**
// * 字段
// */
// @Column(name = "FIELD")
// private String field;
// /**
// * 系统
// */
// @Column(name = "SYSTEM")
// private String system;
@Override @Override
protected String getCodeRuleId() { protected String getCodeRuleId() {
......
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