推送时报关回写到报关明细表 推送时使用该数据
This commit is contained in:
+62
@@ -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<String, Object> 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<Map<String, Object>> 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<Map<String,Object>> bodyList = new ArrayList<>();
|
||||
bodyList.add(item);
|
||||
|
||||
|
||||
+63
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
+43
@@ -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<CustomsDeclarationDetail>
|
||||
{
|
||||
/**
|
||||
* 分页查询报关明细列表
|
||||
*/
|
||||
public List<CustomsDeclarationDetailPO> queryList(CustomsDeclarationDetailDO customsDeclarationDetailDO);
|
||||
|
||||
/**
|
||||
* 新增报关明细
|
||||
*/
|
||||
public Boolean insert(CustomsDeclarationDetailDO customsDeclarationDetailDO);
|
||||
|
||||
/**
|
||||
* 修改报关明细
|
||||
*/
|
||||
public Boolean update(CustomsDeclarationDetailDO customsDeclarationDetailDO);
|
||||
|
||||
/**
|
||||
* 批量删除报关明细
|
||||
*/
|
||||
public Boolean delete(Long[] ids);
|
||||
|
||||
|
||||
/**
|
||||
* 查询报关明细
|
||||
*/
|
||||
public CustomsDeclarationDetailPO getInfo(Long id);
|
||||
}
|
||||
+23
@@ -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<CustomsDeclarationDetail>
|
||||
{
|
||||
/**
|
||||
* 查询报关明细列表
|
||||
*/
|
||||
public List<CustomsDeclarationDetailPO> queryList(CustomsDeclarationDetailDO customsDeclarationDetailDO);
|
||||
|
||||
}
|
||||
+81
@@ -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<CustomsDeclarationDetailMapper, CustomsDeclarationDetail> implements ICustomsDeclarationDetailService {
|
||||
@Autowired
|
||||
private CustomsDeclarationDetailMapper customsDeclarationDetailMapper;
|
||||
|
||||
/**
|
||||
* 查询报关明细列表
|
||||
*/
|
||||
@Override
|
||||
public List<CustomsDeclarationDetailPO> 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<CustomsDeclarationDetail> 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;
|
||||
}
|
||||
}
|
||||
+62
@@ -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;
|
||||
|
||||
|
||||
}
|
||||
+66
@@ -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<Long> organizationIdList;
|
||||
|
||||
@ApiModelProperty(name = "单据编号集合")
|
||||
private List<String> documentNumberList;
|
||||
}
|
||||
+72
@@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.mhd.wms.domain.customsDeclarationDetail.repository.mapper.CustomsDeclarationDetailMapper">
|
||||
|
||||
<resultMap type="com.mhd.wms.domain.customsDeclarationDetail.repository.po.CustomsDeclarationDetailPO" id="CustomsDeclarationDetailResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="organizationId" column="organization_id" />
|
||||
<result property="organizationName" column="organization_name" />
|
||||
<result property="topOrganizationId" column="top_organization_id" />
|
||||
<result property="documentNumber" column="document_number" />
|
||||
<result property="materialBaseInfoId" column="material_base_info_id" />
|
||||
<result property="materialCode" column="material_code" />
|
||||
<result property="materialName" column="material_name" />
|
||||
<result property="bondInvtNo" column="bond_invt_no" />
|
||||
<result property="invtRow" column="invt_row" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createByName" column="create_by_name" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateByName" column="update_by_name" />
|
||||
<result property="delFlag" column="del_flag" />
|
||||
</resultMap>
|
||||
|
||||
|
||||
<sql id="selectCustomsDeclarationDetailPo">
|
||||
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
|
||||
</sql>
|
||||
|
||||
<sql id="selectCustomsDeclarationDetailPo1">
|
||||
<where>
|
||||
<if test="documentNumber != null and documentNumber != ''">
|
||||
and document_number = #{documentNumber}
|
||||
</if>
|
||||
<if test="organizationId != null ">
|
||||
and organization_id = #{organizationId}
|
||||
</if>
|
||||
<if test="organizationName != null and organizationName != ''">
|
||||
and organization_name like concat('%', #{organizationName}, '%')
|
||||
</if>
|
||||
<if test="topOrganizationId != null ">
|
||||
and top_organization_id = #{topOrganizationId}
|
||||
</if>
|
||||
<if test="materialBaseInfoId != null ">
|
||||
and material_base_info_id = #{materialBaseInfoId}
|
||||
</if>
|
||||
<if test="materialCode != null and materialCode != ''">
|
||||
and material_code = #{materialCode}
|
||||
</if>
|
||||
<if test="materialName != null and materialName != ''">
|
||||
and material_name like concat('%', #{materialName}, '%')
|
||||
</if>
|
||||
<if test="documentNumberList != null and documentNumberList.size > 0">
|
||||
and document_number in
|
||||
<foreach collection="documentNumberList" item="item" index="index" open="(" close=")" separator=",">
|
||||
#{item}
|
||||
</foreach>
|
||||
</if>
|
||||
<choose>
|
||||
<when test="delFlag != null"> and del_flag = #{delFlag} </when>
|
||||
<otherwise> and del_flag = 1 </otherwise>
|
||||
</choose>
|
||||
</where>
|
||||
</sql>
|
||||
|
||||
<select id="queryList" parameterType="com.mhd.wms.domain.customsDeclarationDetail.repository.todo.CustomsDeclarationDetailDO" resultMap="CustomsDeclarationDetailResult">
|
||||
<include refid="selectCustomsDeclarationDetailPo"/>
|
||||
<include refid="selectCustomsDeclarationDetailPo1"/>
|
||||
</select>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user