进出口单证推送数据修改

This commit is contained in:
zhaoqing
2026-06-08 16:18:09 +08:00
parent 536077ec3a
commit 289c64be2f
2 changed files with 56 additions and 57 deletions
@@ -8,6 +8,7 @@ import com.mhd.oms.domain.businessDeliveryDetailsLink.entity.BusinessDeliveryDet
import com.mhd.oms.domain.businessDeliveryDetailsLink.repository.dto.BusinessDeliveryDetailsLinkDTO;
import com.mhd.oms.domain.businessDeliveryDetailsLink.repository.mapper.BusinessDeliveryDetailsLinkMapper;
import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti;
import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper;
import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
@@ -22,7 +23,6 @@ import com.mhd.oms.domain.gwLog.entity.GwLog;
import com.mhd.oms.domain.gwLog.repository.mapper.GwLogMapper;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO;
import com.mhd.oms.interfaces.dto.businessDocumentOrder.BusinessDocumentOrderDTO;
import com.mhd.oms.interfaces.dto.originalImportExportDocument.OrderWithMaterialDTO;
import com.mhd.system.api.model.LoginUser;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.CloseableHttpResponse;
@@ -31,13 +31,11 @@ import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.ehcache.shadow.org.terracotta.context.extractor.ObjectContextExtractor;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.json.JsonObject;
import java.io.IOException;
import java.util.*;
@@ -54,7 +52,7 @@ public class BusinessDocumentOrderApplicationService {
private static final String PUSH_API_URL = "http://10.33.0.100/nagu-erp-api/transfer/pushData";
private static final String API_NAME_I = "saveBill_i";
private static final String API_NAME_E = "saveBill_e";
private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
private static final String VERIFY = "FuDjK3iuftzwf8kWJ44DDZJ9icZmL9Ee4Valv8Qz6VfsdW60fNEzNSEtrKlUr6OI";
private static final String API_NAME = "billAppModify";
@@ -73,6 +71,8 @@ public class BusinessDocumentOrderApplicationService {
@Resource
private GwLogMapper gwLogMapper;
@Resource
private BusinessDocumentCargoMultiMapper businessDocumentCargoMultiMapper;
@Autowired
private BusinessDeliveryDetailsLinkMapper businessDeliveryDetailsLinkMapper;
@Resource
@@ -171,7 +171,7 @@ public class BusinessDocumentOrderApplicationService {
public AjaxResult batchPushForOriginalImportExportDocument(List<BusinessDocumentOrderDTO> businessDocumentOrderDTOList) {
public AjaxResult batchPushForOriginalImportExportDocument(List<Long> idList) {
LoginUser loginUser = SecurityUtils.getLoginUser();
Long pushBy = loginUser != null ? loginUser.getUserid() : null;
String pushByName = loginUser != null ? loginUser.getUsername() : null;
@@ -183,40 +183,52 @@ public class BusinessDocumentOrderApplicationService {
int failCount = 0;
StringBuilder failMsg = new StringBuilder();
for (BusinessDocumentOrderDTO pushData : businessDocumentOrderDTOList) {
// 1. 构建推送数据
for (Long id : idList) {
// 1. 查询订单
BusinessDocumentOrder order = businessDocumentOrderMapper.selectById(id);
if (order == null) {
failCount++;
failMsg.append("ID:").append(id).append("订单不存在;");
continue;
}
// 2. 查询cargo明细
List<BusinessDocumentCargoMulti> cargoList = businessDocumentCargoMultiMapper.selectList(
new LambdaQueryWrapper<BusinessDocumentCargoMulti>()
.eq(BusinessDocumentCargoMulti::getOrderId, id)
);
// 3. 构建推送数据
Map<String, Object> body = new HashMap<>();
body.put("erpBillNo", String.valueOf(pushData.getId()));
body.put("billDate", pushData.getDocumentDate());
body.put("goodsType", pushData.getGoodsType());
body.put("ieFlag", pushData.getIeType() != null ? pushData.getIeType() : null);
body.put("corpCode", pushData.getAppointShipperId() != null ? pushData.getAppointShipperId().toString() : null);
body.put("erpBillNo", String.valueOf(order.getId()));
body.put("billDate", order.getDocumentDate());
body.put("goodsType", order.getGoodsType());
body.put("ieFlag", order.getIeType() != null ? order.getIeType() : null);
body.put("corpCode", order.getAppointShipperId() != null ? order.getAppointShipperId() : null);
List<Map<String, Object>> billList = new ArrayList<>();
int gNo = 1;
for(OrderWithMaterialDTO orderWithMaterialDTO : pushData.getOrderWithMaterialDTOList()){
Map<String, Object> billMap = new HashMap<>();
billMap.put("gNo", gNo++);
billMap.put("goodsCode", orderWithMaterialDTO.getMaterialCode() != null ? orderWithMaterialDTO.getMaterialCode().toString() : null);
billMap.put("netWt", orderWithMaterialDTO.getWeightLimit());
billMap.put("grossWt", orderWithMaterialDTO.getGrossWeight());
billMap.put("packNo", orderWithMaterialDTO.getCargoNum());
billMap.put("erpQty", orderWithMaterialDTO.getCargoNum());
billList.add(billMap);
if (cargoList != null && !cargoList.isEmpty()) {
int gNo = 1;
for (BusinessDocumentCargoMulti cargo : cargoList) {
Map<String, Object> billMap = new HashMap<>();
billMap.put("gNo", gNo++);
billMap.put("goodsCode", cargo.getMaterialCode() != null ? cargo.getMaterialCode() : null);
billMap.put("packNo", cargo.getCargoNum());
billMap.put("erpQty", cargo.getCargoNum());
billList.add(billMap);
}
}
body.put("billList",billList);
body.put("billList", billList);
List<Map<String, Object>> bodyList = new ArrayList<>();
bodyList.add(body);
if (pushData.getId() != null) {
updatePushStatus(pushData.getId(), 2, null, String.valueOf(pushBy), pushByName);
}
// 4. 更新推送状态为推送中
updatePushStatus(order.getId(), 2, null, String.valueOf(pushBy), pushByName);
// 2. 记录日志
// 5. 记录日志
GwLog gwLog = new GwLog();
gwLog.setType("进出口原始单证");
gwLog.setBusinessId(Long.valueOf(pushData.getId()));
gwLog.setBusinessId(order.getId());
gwLog.setRequestBody(JSONObject.toJSONString(bodyList));
gwLog.setResponseBody("");
gwLog.setStatus(1);
@@ -229,7 +241,7 @@ public class BusinessDocumentOrderApplicationService {
gwLog.setDelFlag(1);
gwLogMapper.insert(gwLog);
// 3. 调用推送接口
// 6. 调用推送接口
try {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(PUSH_API_URL);
@@ -238,13 +250,11 @@ public class BusinessDocumentOrderApplicationService {
httpPost.setHeader("Content-type", "application/json");
httpPost.setHeader("verify", VERIFY);
if(pushData.getIeType().equals("I"))
{
if ("I".equals(order.getIeType())) {
httpPost.setHeader("apiName", API_NAME_I);
}
else if (pushData.getIeType().equals("E")) {
} else if ("E".equals(order.getIeType())) {
httpPost.setHeader("apiName", API_NAME_E);
}else{
} else {
AjaxResult.error("进出口方式错误");
}
@@ -253,35 +263,26 @@ public class BusinessDocumentOrderApplicationService {
gwLog.setResponseBody(responseString);
if (response.getStatusLine().getStatusCode() == 200) {
// gwLog.setStatus(2);
// if (pushData.getId() != null) {
// updatePushStatus(pushData.getId(), 3, new Date(), String.valueOf(pushBy), pushByName);
// }
// successCount++;
JSONObject responseJson = JSONObject.parseObject(responseString);
Integer dataCode = responseJson.getInteger("code");
if (dataCode != null && dataCode == 200) {
gwLog.setStatus(2);
updatePushStatus(pushData.getId(), 3, new Date(), String.valueOf(pushBy), pushByName);
updatePushStatus(order.getId(), 3, new Date(), String.valueOf(pushBy), pushByName);
successCount++;
} else {
gwLog.setStatus(3);
gwLog.setErrorMsg(responseString);
updatePushStatus(pushData.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
updatePushStatus(order.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
failCount++;
failMsg.append("物料编码:").append(pushData.getMaterialCode()).append("失败;");
failMsg.append("订单ID:").append(order.getId()).append("失败;");
}
} else {
gwLog.setStatus(3);
gwLog.setErrorMsg(responseString);
if (pushData.getId() != null) {
updatePushStatus(pushData.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
}
updatePushStatus(order.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
failCount++;
failMsg.append("物料编码:").append(pushData.getMaterialCode()).append("失败:");
failMsg.append("订单ID:").append(order.getId()).append("失败:");
}
gwLogMapper.updateById(gwLog);
response.close();
@@ -290,12 +291,10 @@ public class BusinessDocumentOrderApplicationService {
gwLog.setErrorMsg(e.getMessage());
gwLog.setResponseBody("请求异常:" + e.getMessage());
gwLogMapper.updateById(gwLog);
if (pushData.getId() != null) {
updatePushStatus(pushData.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
}
updatePushStatus(order.getId(), 4, new Date(), String.valueOf(pushBy), pushByName);
failCount++;
failMsg.append("物料编码:").append(pushData.getMaterialCode()).append("异常:").append(e.getMessage());
log.error("GW推送异常:materialCode={} error={}", pushData.getMaterialCode(), e.getMessage());
failMsg.append("订单ID:").append(order.getId()).append("异常:").append(e.getMessage());
log.error("GW推送异常:orderId={} error={}", order.getId(), e.getMessage());
}
}
@@ -76,11 +76,11 @@ public class OriginalImportExportDocumentApi extends BaseController {
@ApiOperation("批量推送")
@PostMapping("/batchPush")
public AjaxResult batchPush(@RequestBody List<BusinessDocumentOrderDTO> businessDocumentOrderDTOList){
if(businessDocumentOrderDTOList.isEmpty() || businessDocumentOrderDTOList == null){
public AjaxResult batchPush(@RequestBody List<Long> idList){
if(idList == null || idList.isEmpty()){
return AjaxResult.error("没有数据需要推送");
}
return businessDocumentOrderApplicationService.batchPushForOriginalImportExportDocument(businessDocumentOrderDTOList);
return businessDocumentOrderApplicationService.batchPushForOriginalImportExportDocument(idList);
}