SapReceiptDataService.java
4.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package com.huaheng.pc.sap.service;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.huaheng.api.utils.SAPUtils;
import com.huaheng.framework.web.service.ConfigService;
import com.huaheng.pc.sap.domain.Piarsh;
import com.huaheng.pc.system.config.service.IConfigService;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.common.utils.DateUtils;
import com.huaheng.common.utils.StringUtils;
import com.huaheng.common.utils.http.OkHttpUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.framework.web.domain.AjaxResultSAP;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.sap.domain.SapReceiptData;
import com.huaheng.pc.sap.domain.SapReceiptDetailData;
import com.huaheng.pc.sap.mapper.SapReceiptDataMapper;
/**
* Created by Cotter on 2023/2/1.
* @author zhouhong
*/
@Service
public class SapReceiptDataService extends ServiceImpl<SapReceiptDataMapper, SapReceiptData> {
@Resource
private SapReceiptDetailDataService sapReceiptDetailDataService;
@Resource
private AddressService addressService;
@Resource
private ConfigService configService;
public Boolean checkDataExist(String containerCode, String rollNumber) {
LambdaQueryWrapper<SapReceiptData> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(SapReceiptData::getDrumId, containerCode);
queryWrapper.eq(SapReceiptData::getDatum, DateUtils.getDate());
List<SapReceiptData> list = this.list(queryWrapper);
if (list != null && list.size() > 0) {
return false;
}
return true;
}
public AjaxResult sendSapReceipts() {
LambdaQueryWrapper<SapReceiptData> queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(SapReceiptData::getStatus, 1);
queryWrapper.eq(SapReceiptData::getSendOK,1);
queryWrapper.orderByAsc(SapReceiptData::getId);
List<SapReceiptData> list = this.list(queryWrapper);
for (SapReceiptData sapReceiptData : list) {
try {
sendSapReceipt(sapReceiptData);
} catch (Exception e) {
}
}
return AjaxResult.success();
}
public void sendSapReceipt(SapReceiptData sapReceiptData) {
String uniqueId = sapReceiptData.getUniqueId();
List<SapReceiptDetailData> list = sapReceiptDetailDataService.list(new LambdaQueryWrapper<SapReceiptDetailData>()
.eq(SapReceiptDetailData::getUniqueId, uniqueId));
//2 入库指令
sapReceiptData.setMFlag("2");
//构建推送SAP入库指令信息
Piarsh piarsh = SAPUtils.createPiarshData(sapReceiptData, list);
String json = JSON.toJSONString(piarsh, SerializerFeature.SortField);
AjaxResultSAP tag = sendReceiptToSap(json);
// 回传成功修改回传状态
sapReceiptData.setLastUpdated(new Date());
if (!tag.hasErr()) {
// 1未回传 2已回传
sapReceiptData.setStatus(2);
this.updateById(sapReceiptData);
} else {
sapReceiptData.setSendNum(sapReceiptData.getSendNum() + 1);
sapReceiptData.setStatus(3);
sapReceiptData.setSapMsg(tag.getMsg());
this.updateById(sapReceiptData);
}
}
public AjaxResultSAP sendReceiptToSap(String JsonParam) {
String url = addressService.selectAddress(QuantityConstant.PLATFORM_SAP_RECEIPT, QuantityConstant.WAREHOUSECODE, null);
String authKey = configService.getKey(QuantityConstant.SAP_AUTHORIZATION);
//添加权限认证
Map<String,String> map = new HashMap<>();
map.put("Authorization",authKey);
map.put("code","SAVE");
String result = OkHttpUtils.bodypost(url, JsonParam,map);
if (StringUtils.isEmpty(result)) {
return AjaxResultSAP.error("接口地址错误或返回为空");
}
AjaxResult ajaxResult = JSON.parseObject(result, AjaxResult.class);
if(ajaxResult.hasErr()){
return AjaxResultSAP.error(ajaxResult.getMessage());
}
return AjaxResultSAP.success(ajaxResult.getData());
}
}