diff --git a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java index 66437b9c0..a21c83b10 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java +++ b/mhd_wms/src/main/java/com/mhd/wms/application/service/stockShelfOrder/StockShelfOrderApplicationService.java @@ -9,6 +9,7 @@ import com.mhd.common.core.domain.po.UserPo; import com.mhd.common.core.exception.ServiceException; import com.mhd.common.core.utils.IgnoreNullUtil; import com.mhd.common.core.utils.StringUtils; +import java.text.SimpleDateFormat; import com.mhd.common.core.utils.bean.BeanUtils; import com.mhd.common.core.utils.uuid.IdGenerator; import com.mhd.common.core.web.domain.AjaxResult; @@ -53,6 +54,8 @@ import com.mhd.wms.domain.stockShelfOrder.repository.mapper.StockShelfOrderMappe import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO; import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO; import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService; +import com.mhd.wms.domain.customsDeclarationDetail.repository.facade.ICustomsDeclarationDetailService; +import com.mhd.wms.domain.customsDeclarationDetail.repository.todo.CustomsDeclarationDetailDO; import com.mhd.wms.util.ReceiptBatchDetailFilter; import lombok.extern.slf4j.Slf4j; import org.apache.http.client.methods.CloseableHttpResponse; @@ -97,6 +100,8 @@ public class StockShelfOrderApplicationService { @Autowired private OmsServiceFeign omsServiceFeign; @Autowired + private ICustomsDeclarationDetailService customsDeclarationDetailService; + @Autowired private IdGenerator idGenerator; @Autowired private MaterialBaseInfoMapper materialBaseInfoMapper; @@ -2675,6 +2680,61 @@ public class StockShelfOrderApplicationService { } } + // ========== 调用报关回写接口获取核注清单号和行号 ========== + String bondInvtNo = ""; + Integer invtRow = null; + try { + Map customsParam = new HashMap<>(); + customsParam.put("beginDate", "2020-01-01"); + customsParam.put("endDate", new SimpleDateFormat("yyyy-MM-dd").format(new Date())); + customsParam.put("erpBillNo", stockShelfOrder.getShelfOrderNumber()); + customsParam.put("pageIndex", 1); + customsParam.put("pageSize", 100); + + List> customsBodyList = new ArrayList<>(); + customsBodyList.add(customsParam); + + CloseableHttpClient customsHttpClient = HttpClients.createDefault(); + HttpPost customsHttpPost = new HttpPost(PUSH_API_URL); + StringEntity customsPostingString = new StringEntity(com.alibaba.fastjson.JSONObject.toJSONString(customsBodyList), "UTF-8"); + customsHttpPost.setEntity(customsPostingString); + customsHttpPost.setHeader("Content-type", "application/json"); + customsHttpPost.setHeader("apiName", "sendDec"); + customsHttpPost.setHeader("verify", VERIFY); + + CloseableHttpResponse customsResponse = customsHttpClient.execute(customsHttpPost); + String customsResponseString = EntityUtils.toString(customsResponse.getEntity()); + + if (customsResponse.getStatusLine().getStatusCode() == 200) { + com.alibaba.fastjson.JSONObject customsJson = com.alibaba.fastjson.JSONObject.parseObject(customsResponseString); + com.alibaba.fastjson.JSONArray customsData = customsJson.getJSONArray("data"); + if (customsData != null && customsData.size() > 0) { + com.alibaba.fastjson.JSONObject customsItem = customsData.getJSONObject(0); + bondInvtNo = customsItem.getString("entry_id"); + Object erpGNoObj = customsItem.get("erp_g_no"); + if (erpGNoObj != null) { + invtRow = (erpGNoObj instanceof Number) ? ((Number) erpGNoObj).intValue() : Integer.parseInt(erpGNoObj.toString()); + } + } + } + customsResponse.close(); + customsHttpClient.close(); + } catch (Exception e) { + log.error("调用报关回写接口失败: shelfOrderNumber={}", stockShelfOrder.getShelfOrderNumber(), e); + } + + // ========== 写入报关明细表 ========== + if (StringUtils.isNotBlank(bondInvtNo)) { + CustomsDeclarationDetailDO detailDO = new CustomsDeclarationDetailDO(); + detailDO.setDocumentNumber(stockShelfOrder.getShelfOrderNumber()); + detailDO.setBondInvtNo(bondInvtNo); + detailDO.setInvtRow(invtRow); + detailDO.setOrganizationId(stockShelfOrder.getOrganizationId()); + detailDO.setOrganizationName(stockShelfOrder.getOrganizationName()); + detailDO.setTopOrganizationId(stockShelfOrder.getTopOrganizationId()); + customsDeclarationDetailService.insert(detailDO); + } + String etpsPreentNo = stockShelfOrder.getInOrderNumber(); Date inputTime = new Date(); @@ -2682,6 +2742,8 @@ public class StockShelfOrderApplicationService { item.put("etpsPreentNo", stockShelfOrder.getInOrderNumber()); item.put("inputTime", new Date());//或者是前段传时间 或者是加时间字段然后查询拿到这里 item.put("mtpckEndprdTypecd", mtpckEndprdTypecd); + item.put("bondInvtNo", bondInvtNo); + item.put("invtRow", invtRow); List> bodyList = new ArrayList<>(); bodyList.add(item); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/entity/CustomsDeclarationDetail.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/entity/CustomsDeclarationDetail.java new file mode 100644 index 000000000..88eb27579 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/entity/CustomsDeclarationDetail.java @@ -0,0 +1,63 @@ +package com.mhd.wms.domain.customsDeclarationDetail.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 报关明细对象 customs_declaration_detail + * + * @author gen + * @date 2024-06-04 + */ + +@Data +public class CustomsDeclarationDetail extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + @TableId(type = IdType.AUTO) + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("单据编号") + @Excel(name = "单据编号") + private String documentNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("进口核注清单号") + @Excel(name = "进口核注清单号") + private String bondInvtNo; + + @ApiModelProperty("行号") + @Excel(name = "行号") + private Integer invtRow; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/facade/ICustomsDeclarationDetailService.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/facade/ICustomsDeclarationDetailService.java new file mode 100644 index 000000000..3a27aeaed --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/facade/ICustomsDeclarationDetailService.java @@ -0,0 +1,43 @@ +package com.mhd.wms.domain.customsDeclarationDetail.repository.facade; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.mhd.wms.domain.customsDeclarationDetail.entity.CustomsDeclarationDetail; +import com.mhd.wms.domain.customsDeclarationDetail.repository.po.CustomsDeclarationDetailPO; +import com.mhd.wms.domain.customsDeclarationDetail.repository.todo.CustomsDeclarationDetailDO; + +import java.util.List; + +/** + * 报关明细Service接口 + * + * @author gen + * @date 2024-06-04 + */ +public interface ICustomsDeclarationDetailService extends IService +{ + /** + * 分页查询报关明细列表 + */ + public List queryList(CustomsDeclarationDetailDO customsDeclarationDetailDO); + + /** + * 新增报关明细 + */ + public Boolean insert(CustomsDeclarationDetailDO customsDeclarationDetailDO); + + /** + * 修改报关明细 + */ + public Boolean update(CustomsDeclarationDetailDO customsDeclarationDetailDO); + + /** + * 批量删除报关明细 + */ + public Boolean delete(Long[] ids); + + + /** + * 查询报关明细 + */ + public CustomsDeclarationDetailPO getInfo(Long id); +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/mapper/CustomsDeclarationDetailMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/mapper/CustomsDeclarationDetailMapper.java new file mode 100644 index 000000000..5a85db498 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/mapper/CustomsDeclarationDetailMapper.java @@ -0,0 +1,23 @@ +package com.mhd.wms.domain.customsDeclarationDetail.repository.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.mhd.wms.domain.customsDeclarationDetail.entity.CustomsDeclarationDetail; +import com.mhd.wms.domain.customsDeclarationDetail.repository.po.CustomsDeclarationDetailPO; +import com.mhd.wms.domain.customsDeclarationDetail.repository.todo.CustomsDeclarationDetailDO; + +import java.util.List; + +/** + * 报关明细Mapper接口 + * + * @author gen + * @date 2024-06-04 + */ +public interface CustomsDeclarationDetailMapper extends BaseMapper +{ + /** + * 查询报关明细列表 + */ + public List queryList(CustomsDeclarationDetailDO customsDeclarationDetailDO); + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/persistence/CustomsDeclarationDetailImpl.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/persistence/CustomsDeclarationDetailImpl.java new file mode 100644 index 000000000..eb08af245 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/persistence/CustomsDeclarationDetailImpl.java @@ -0,0 +1,81 @@ +package com.mhd.wms.domain.customsDeclarationDetail.repository.persistence; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.mhd.wms.domain.customsDeclarationDetail.entity.CustomsDeclarationDetail; +import com.mhd.wms.domain.customsDeclarationDetail.repository.facade.ICustomsDeclarationDetailService; +import com.mhd.wms.domain.customsDeclarationDetail.repository.mapper.CustomsDeclarationDetailMapper; +import com.mhd.wms.domain.customsDeclarationDetail.repository.po.CustomsDeclarationDetailPO; +import com.mhd.wms.domain.customsDeclarationDetail.repository.todo.CustomsDeclarationDetailDO; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 报关明细Service业务层处理 + * + * @author gen + * @date 2024-06-04 + */ +@Service +public class CustomsDeclarationDetailImpl extends ServiceImpl implements ICustomsDeclarationDetailService { + @Autowired + private CustomsDeclarationDetailMapper customsDeclarationDetailMapper; + + /** + * 查询报关明细列表 + */ + @Override + public List queryList(CustomsDeclarationDetailDO customsDeclarationDetailDO) + { + return customsDeclarationDetailMapper.queryList(customsDeclarationDetailDO); + } + + /** + * 新增报关明细 + */ + @Override + public Boolean insert(CustomsDeclarationDetailDO customsDeclarationDetailDO) { + CustomsDeclarationDetail customsDeclarationDetail = new CustomsDeclarationDetail(); + BeanUtils.copyProperties(customsDeclarationDetailDO,customsDeclarationDetail); + return this.save(customsDeclarationDetail); + } + + /** + * 修改报关明细 + */ + @Override + public Boolean update(CustomsDeclarationDetailDO customsDeclarationDetailDO) { + CustomsDeclarationDetail customsDeclarationDetail = new CustomsDeclarationDetail(); + BeanUtils.copyProperties(customsDeclarationDetailDO,customsDeclarationDetail); + return this.updateById(customsDeclarationDetail); + } + + /** + * 批量删除报关明细 + */ + @Override + public Boolean delete(Long[] ids ) { + List list = new ArrayList<>(); + for (Long id : ids) { + CustomsDeclarationDetail customsDeclarationDetail = new CustomsDeclarationDetail(); + customsDeclarationDetail.setId(id); + customsDeclarationDetail.setDelFlag(2); + list.add(customsDeclarationDetail); + } + return this.updateBatchById(list); + } + + /** + * 获取报关明细详细信息 + */ + @Override + public CustomsDeclarationDetailPO getInfo(Long id) { + CustomsDeclarationDetail customsDeclarationDetail = this.getById(id); + CustomsDeclarationDetailPO customsDeclarationDetailPO = new CustomsDeclarationDetailPO(); + BeanUtils.copyProperties(customsDeclarationDetail,customsDeclarationDetailPO); + return customsDeclarationDetailPO; + } +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/po/CustomsDeclarationDetailPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/po/CustomsDeclarationDetailPO.java new file mode 100644 index 000000000..3a9dd17f6 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/po/CustomsDeclarationDetailPO.java @@ -0,0 +1,62 @@ +package com.mhd.wms.domain.customsDeclarationDetail.repository.po; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** + * 报关明细对象 customs_declaration_detail + * + * @author gen + * @date 2024-06-04 + */ + +@Data +@ApiModel(value = "报关明细对象", description = "报关明细响应对象") +public class CustomsDeclarationDetailPO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("单据编号") + @Excel(name = "单据编号") + private String documentNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("进口核注清单号") + @Excel(name = "进口核注清单号") + private String bondInvtNo; + + @ApiModelProperty("行号") + @Excel(name = "行号") + private Integer invtRow; + + +} diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/todo/CustomsDeclarationDetailDO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/todo/CustomsDeclarationDetailDO.java new file mode 100644 index 000000000..8c0565b42 --- /dev/null +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/customsDeclarationDetail/repository/todo/CustomsDeclarationDetailDO.java @@ -0,0 +1,66 @@ +package com.mhd.wms.domain.customsDeclarationDetail.repository.todo; + +import com.mhd.common.core.annotation.Excel; +import com.mhd.common.core.web.domain.BaseVOEntity; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + + +/** + * 报关明细对象 customs_declaration_detail + * + * @author gen + * @date 2024-06-04 + */ + +@Data +public class CustomsDeclarationDetailDO extends BaseVOEntity { + private static final long serialVersionUID = 1L; + + @ApiModelProperty("主键") + private Long id; + + @ApiModelProperty("组织表ID") + @Excel(name = "组织表ID") + private Long organizationId; + + @ApiModelProperty("组织名称") + @Excel(name = "组织名称") + private String organizationName; + + @ApiModelProperty("一级组织表ID") + @Excel(name = "一级组织表ID") + private Long topOrganizationId; + + @ApiModelProperty("单据编号") + @Excel(name = "单据编号") + private String documentNumber; + + @ApiModelProperty("物料基础信息id") + @Excel(name = "物料基础信息id") + private Long materialBaseInfoId; + + @ApiModelProperty("物料编码") + @Excel(name = "物料编码") + private String materialCode; + + @ApiModelProperty("物料名称") + @Excel(name = "物料名称") + private String materialName; + + @ApiModelProperty("进口核注清单号") + @Excel(name = "进口核注清单号") + private String bondInvtNo; + + @ApiModelProperty("行号") + @Excel(name = "行号") + private Integer invtRow; + + @ApiModelProperty(name = "组织ID集合") + private List organizationIdList; + + @ApiModelProperty(name = "单据编号集合") + private List documentNumberList; +} diff --git a/mhd_wms/src/main/resources/mapper/customsDeclarationDetail/CustomsDeclarationDetailMapper.xml b/mhd_wms/src/main/resources/mapper/customsDeclarationDetail/CustomsDeclarationDetailMapper.xml new file mode 100644 index 000000000..eab67f23e --- /dev/null +++ b/mhd_wms/src/main/resources/mapper/customsDeclarationDetail/CustomsDeclarationDetailMapper.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, organization_id, organization_name, top_organization_id, document_number, material_base_info_id, material_code, material_name, bond_invt_no, invt_row, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag from customs_declaration_detail + + + + + + and document_number = #{documentNumber} + + + and organization_id = #{organizationId} + + + and organization_name like concat('%', #{organizationName}, '%') + + + and top_organization_id = #{topOrganizationId} + + + and material_base_info_id = #{materialBaseInfoId} + + + and material_code = #{materialCode} + + + and material_name like concat('%', #{materialName}, '%') + + + and document_number in + + #{item} + + + + and del_flag = #{delFlag} + and del_flag = 1 + + + + + +