From 16d9b601da0617d87bf0755134b005278f87332f Mon Sep 17 00:00:00 2001 From: zhaoqing <1670883518@qq.com> Date: Wed, 13 May 2026 19:46:29 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9B=E5=87=BA=E5=8F=A3=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E5=8D=95=E8=AF=81=20=E6=9F=A5=E8=AF=A2/=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=8E=A8=E9=80=81=20=20=20=E5=88=A0=E6=94=B9=E5=8D=95=E7=94=B3?= =?UTF-8?q?=E8=AF=B7=EF=BC=88=E9=83=A8=E5=88=86=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...sinessDocumentOrderApplicationService.java | 179 +++++++++++++++++- .../entity/BusinessDocumentOrder.java | 13 ++ .../po/BusinessDocumentOrderPO.java | 14 ++ .../todo/BusinessDocumentOrderDO.java | 14 ++ .../BusinessDocumentOrderDTO.java | 41 ++++ .../OrderWithMaterialDTO.java | 23 +++ .../OriginalImportExportDocumentApi.java | 35 +++- .../BusinessDocumentOrderMapper.xml | 4 + 8 files changed, 317 insertions(+), 6 deletions(-) diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderApplicationService.java index 0430cdacc..cce878d46 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/businessDocumentOrder/BusinessDocumentOrderApplicationService.java @@ -1,21 +1,39 @@ package com.mhd.oms.application.service.businessDocumentOrder; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti; +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; import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocumentOrderDO; import com.mhd.oms.domain.businessDocumentOrder.service.BusinessDocumentOrderDomainService; import com.mhd.common.security.utils.SecurityUtils; import com.mhd.oms.domain.businessOrderAccount.BusinessOrderAccount; import com.mhd.oms.domain.businessOrderAccount.repository.mapper.BusinessOrderAccountMapper; +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; +import org.apache.http.client.methods.HttpPost; +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 java.util.List; +import java.io.IOException; +import java.util.*; + /** * 【请填写功能名称】ApplicationService * @@ -25,6 +43,11 @@ import java.util.List; @Service @Slf4j public class BusinessDocumentOrderApplicationService { + + private static final String PUSH_API_URL = "http://10.33.0.100/ktms-erp-api/transfer/pushData"; + private static final String API_NAME_I = "saveBill_i"; + private static final String API_NAME_E = "saveBill_e"; + @Autowired private BusinessDocumentOrderDomainService businessDocumentOrderDomainService; @@ -32,6 +55,12 @@ public class BusinessDocumentOrderApplicationService { private BusinessOrderAccountMapper businessOrderAccountMapper; + @Resource + private BusinessDocumentOrderMapper businessDocumentOrderMapper; + + @Resource + private GwLogMapper gwLogMapper; + /** * 分页查询【请填写功能名称】列表 */ @@ -113,4 +142,152 @@ public class BusinessDocumentOrderApplicationService { } return businessDocumentOrderDomainService.queryListAndMaterial(businessDocumentOrderDO); } + + public void reviseApply(BusinessDocumentOrderDTO businessDocumentOrderDTO) { + BusinessDocumentOrder businessDocumentOrder = new BusinessDocumentOrder(); + BeanUtils.copyProperties(businessDocumentOrder,businessDocumentOrderDTO); + businessDocumentOrderMapper.updateById(businessDocumentOrder); + + } + + + + public AjaxResult batchPushForOriginalImportExportDocument(List businessDocumentOrderDTOList) { + LoginUser loginUser = SecurityUtils.getLoginUser(); + Long pushBy = loginUser != null ? loginUser.getUserid() : null; + String pushByName = loginUser != null ? loginUser.getUsername() : null; + Long organizationId = loginUser != null ? loginUser.getUserPo().getOrganizationId() : null; + Long topOrganizationId = loginUser != null ? loginUser.getUserPo().getTopOrganizationId() : null; + String organizationName = loginUser != null ? loginUser.getUserPo().getOrganizationName() : null; + + int successCount = 0; + int failCount = 0; + StringBuilder failMsg = new StringBuilder(); + + for (BusinessDocumentOrderDTO pushData : businessDocumentOrderDTOList) { + // 1. 构建推送数据 + Map 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 ? String.valueOf(pushData.getIeType()) : null); + body.put("corpCode", pushData.getAppointShipperId() != null ? pushData.getAppointShipperId().toString() : null); + + List> billList = new ArrayList<>(); + int gNo = 1; + for(OrderWithMaterialDTO orderWithMaterialDTO : pushData.getOrderWithMaterialDTOList()){ + Map 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); + } + body.put("billList",billList); + + if (pushData.getId() != null) { + updatePushStatus(pushData.getId(), 2, null, String.valueOf(pushBy), pushByName); + } + + + // 2. 记录日志 + GwLog gwLog = new GwLog(); + gwLog.setType("进出口原始单证-物料推送"); + gwLog.setBusinessId(pushData.getMaterialCode()); + gwLog.setRequestBody(JSONObject.toJSONString(body)); + gwLog.setResponseBody(""); + gwLog.setStatus(1); + gwLog.setSendTime(new Date()); + gwLog.setOrganizationId(organizationId); + gwLog.setTopOrganizationId(topOrganizationId); + gwLog.setOrganizationName(organizationName); + gwLog.setCreateBy(pushBy); + gwLog.setCreateTime(new Date()); + gwLog.setDelFlag(1); + gwLogMapper.insert(gwLog); + + // 3. 调用推送接口 + try { + CloseableHttpClient httpClient = HttpClients.createDefault(); + HttpPost httpPost = new HttpPost(PUSH_API_URL); + StringEntity postingString = new StringEntity(JSONObject.toJSONString(body), "UTF-8"); + httpPost.setEntity(postingString); + + httpPost.setHeader("Content-type", "application/json"); + if(pushData.getIeType().equals("I")) + { + httpPost.setHeader("apiName", API_NAME_I); + } + else if (pushData.getIeType().equals("E")) { + httpPost.setHeader("apiName", API_NAME_E); + }else{ + AjaxResult.error("进出口方式错误"); + } + + CloseableHttpResponse response = httpClient.execute(httpPost); + String responseString = EntityUtils.toString(response.getEntity()); + 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++; + } else { + gwLog.setStatus(3); + gwLog.setErrorMsg(responseString); + if (pushData.getId() != null) { + updatePushStatus(pushData.getId(), 4, new Date(), String.valueOf(pushBy), pushByName); + } + failCount++; + failMsg.append("物料编码:").append(pushData.getMaterialCode()).append("失败:"); + } + gwLogMapper.updateById(gwLog); + response.close(); + } catch (IOException e) { + gwLog.setStatus(3); + gwLog.setErrorMsg(e.getMessage()); + gwLogMapper.updateById(gwLog); + if (pushData.getId() != null) { + updatePushStatus(pushData.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()); + } + } + + String resultMsg = "推送完成:成功" + successCount + "条,失败" + failCount + "条"; + if (failCount > 0) { + resultMsg += "[" + failMsg.toString() + "]"; + } + return AjaxResult.success(resultMsg); + + } + + + private void updatePushStatus(Long id, Integer pushStatus, Date pushTime, String pushBy, String pushByName) { + try { + BusinessDocumentOrder update = new BusinessDocumentOrder(); + update.setId(id); + update.setPushStatus(pushStatus); + if (pushTime != null) { + update.setPushTime(pushTime); + } + if (pushBy != null) { + update.setPushBy(pushBy); + } + if (pushByName != null) { + update.setPushByName(pushByName); + } + businessDocumentOrderMapper.updateById(update); + } catch (Exception e) { + log.error("更新推送状态失败: id={}, error={}", id, e.getMessage()); + } + } + + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java index 69d8e48ce..434ec0e1e 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/entity/BusinessDocumentOrder.java @@ -760,4 +760,17 @@ public class BusinessDocumentOrder extends BaseVOEntity{ @ApiModelProperty("进出口方式:I-进口,E-出口") private String ieType; + @ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private String pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java index cbb645983..0996772dc 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/po/BusinessDocumentOrderPO.java @@ -774,6 +774,20 @@ public class BusinessDocumentOrderPO extends BaseVOEntity{ @ApiModelProperty("进出口方式:I-进口,E-出口") private String ieType; + @ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private String pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; + @ApiModelProperty("执行单") private List executeOrderList; diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java index baf558719..b557ed1a1 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/todo/BusinessDocumentOrderDO.java @@ -793,6 +793,20 @@ public class BusinessDocumentOrderDO extends BaseVOEntity{ @ApiModelProperty("进出口方式:I-进口,E-出口") private String ieType; + @ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private String pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; + @ApiModelProperty("费用科目明细") private List businessOrderAccountList; diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/businessDocumentOrder/BusinessDocumentOrderDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/businessDocumentOrder/BusinessDocumentOrderDTO.java index bb159aa82..be013f715 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/businessDocumentOrder/BusinessDocumentOrderDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/businessDocumentOrder/BusinessDocumentOrderDTO.java @@ -7,6 +7,7 @@ import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCarg import com.mhd.oms.domain.businessOrderAccount.BusinessOrderAccount; import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO; import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO; +import com.mhd.oms.interfaces.dto.originalImportExportDocument.OrderWithMaterialDTO; import lombok.Data; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -671,6 +672,8 @@ public class BusinessDocumentOrderDTO extends BaseVOEntity{ @ApiModelProperty("$column.columnComment") @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date documentDate; @@ -780,6 +783,20 @@ public class BusinessDocumentOrderDTO extends BaseVOEntity{ @ApiModelProperty("进出口方式:I-进口,E-出口") private String ieType; + @ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private String pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; + @ApiModelProperty("业务单地址集合") private List businessDocumentAddressMultiDTOList; @@ -799,4 +816,28 @@ public class BusinessDocumentOrderDTO extends BaseVOEntity{ @ApiModelProperty("费用科目明细") private List businessOrderAccountList; + + @ApiModelProperty(value = "物料编码") + private String materialCode; + + @ApiModelProperty(value = "物料名称") + private String materialName; + + @ApiModelProperty(value = "净重") + private BigDecimal weightLimit; + + @ApiModelProperty(value = "毛重") + private BigDecimal grossWeight; + + @ApiModelProperty(value = "单价") + private BigDecimal unitPrice; + + @ApiModelProperty(value = "申报单位") + private String declarationUnit; + + @ApiModelProperty(value = "原产国") + private String originCountry; + + @ApiModelProperty(value = "物料明细列表") + private List orderWithMaterialDTOList; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/originalImportExportDocument/OrderWithMaterialDTO.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/originalImportExportDocument/OrderWithMaterialDTO.java index 99f2cc514..bb4801f09 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/originalImportExportDocument/OrderWithMaterialDTO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/dto/originalImportExportDocument/OrderWithMaterialDTO.java @@ -781,4 +781,27 @@ public class OrderWithMaterialDTO { @ApiModelProperty("仓库负责人电话") private String directorPhone; + @ApiModelProperty("仓库负责人电话") + private BigDecimal CargoNum; + + @ApiModelProperty("币制") + private BigDecimal currency; + + @ApiModelProperty("包装规格") + private BigDecimal packName; + + @ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败") + private Integer pushStatus; + + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("推送时间") + private Date pushTime; + + @ApiModelProperty("推送人") + private String pushBy; + + @ApiModelProperty("推送人姓名") + private String pushByName; + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/originalImportExportDocument/OriginalImportExportDocumentApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/originalImportExportDocument/OriginalImportExportDocumentApi.java index ccc5d78f7..ca277e987 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/originalImportExportDocument/OriginalImportExportDocumentApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/originalImportExportDocument/OriginalImportExportDocumentApi.java @@ -17,11 +17,8 @@ import com.mhd.system.api.domain.MaterialInfoDTO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + import javax.annotation.Resource; import java.math.BigDecimal; @@ -63,6 +60,34 @@ public class OriginalImportExportDocumentApi extends BaseController { return tableDataInfo; } + @ApiOperation("删改单申请") + @PostMapping("/reviseApply") + public AjaxResult reviseApply(@RequestParam BusinessDocumentOrderDTO businessDocumentOrderDTO){ + + businessDocumentOrderApplicationService.reviseApply(businessDocumentOrderDTO); + + return null; + } + + @ApiOperation("批量推送") + @PostMapping("/batchPush") + public AjaxResult batchPush(@RequestBody List businessDocumentOrderDTOList){ + if(businessDocumentOrderDTOList.isEmpty() || businessDocumentOrderDTOList == null){ + return AjaxResult.error("没有数据需要推送"); + } + return businessDocumentOrderApplicationService.batchPushForOriginalImportExportDocument(businessDocumentOrderDTOList); + + + } + + + + + + + + + private List convertToOrderWithMaterialList(List orderList){ List resultList = new ArrayList<>(); for(BusinessDocumentOrderPO order:orderList){ diff --git a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml index 30bb8a320..4018b88dc 100644 --- a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml @@ -170,6 +170,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + +