feat(wms): 添加钢卷关联订单信息查询功能
- 在WmsCoilContractRelMapper中新增selectOrdersByCoilId和selectOrdersByCoilIds方法 - 在WmsCoilContractRelMapper.xml中实现钢卷与订单关联查询的SQL映射 - 扩展WmsCoilContractRelVo类添加订单相关字段和@JsonFormat注解 - 在WmsMaterialCoilServiceImpl中注入coilContractRelMapper并实现填充订单信息逻辑 - 在WmsMaterialCoilVo中添加orderList字段存储关联订单列表 - 实现根据钢卷ID查询完整订单信息的JOIN查询功能
This commit is contained in:
@@ -2,13 +2,15 @@ package com.klp.domain.vo;
|
|||||||
|
|
||||||
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import com.alibaba.excel.annotation.ExcelProperty;
|
import com.alibaba.excel.annotation.ExcelProperty;
|
||||||
import com.klp.common.annotation.ExcelDictFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
import com.klp.common.convert.ExcelDictConvert;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 钢卷与合同关联关系视图对象 wms_coil_contract_rel
|
* 钢卷与合同(订单)关联关系视图对象 wms_coil_contract_rel + crm_order JOIN
|
||||||
*
|
*
|
||||||
* @author klp
|
* @author klp
|
||||||
* @date 2026-04-18
|
* @date 2026-04-18
|
||||||
@@ -19,29 +21,118 @@ public class WmsCoilContractRelVo {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
/**
|
// ========== 中间表自身字段 ==========
|
||||||
* 主键ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "主键ID")
|
|
||||||
private Long relId;
|
|
||||||
|
|
||||||
/**
|
/** 主键ID */
|
||||||
* 钢卷ID
|
private Long relId;
|
||||||
*/
|
/** 钢卷ID */
|
||||||
@ExcelProperty(value = "钢卷ID")
|
@ExcelProperty(value = "钢卷ID")
|
||||||
private Long coilId;
|
private Long coilId;
|
||||||
|
/** 合同/订单ID */
|
||||||
/**
|
@ExcelProperty(value = "合同/订单ID")
|
||||||
* 合同ID
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "合同ID")
|
|
||||||
private Long contractId;
|
private Long contractId;
|
||||||
|
/** 备注 */
|
||||||
/**
|
|
||||||
* 备注
|
|
||||||
*/
|
|
||||||
@ExcelProperty(value = "备注")
|
@ExcelProperty(value = "备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
// ========== 关联订单信息(JOIN crm_order)==========
|
||||||
|
|
||||||
|
/** 订单ID(主键) */
|
||||||
|
private Long orderId;
|
||||||
|
/** 订单编号 */
|
||||||
|
private String orderCode;
|
||||||
|
/** 订单类型:pre-预订单,formal-正式订单 */
|
||||||
|
private Long orderType;
|
||||||
|
/** 关联客户ID */
|
||||||
|
private String customerId;
|
||||||
|
/** 订单总金额 */
|
||||||
|
private BigDecimal orderAmount;
|
||||||
|
/** 销售员 */
|
||||||
|
private String salesman;
|
||||||
|
/** 交货日期 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date deliveryDate;
|
||||||
|
/** 预订单状态 */
|
||||||
|
private Long preOrderStatus;
|
||||||
|
/** 审核人 */
|
||||||
|
private String auditUser;
|
||||||
|
/** 审核时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date auditTime;
|
||||||
|
/** 订单状态 */
|
||||||
|
private Long orderStatus;
|
||||||
|
/** 财务状态 */
|
||||||
|
private Long financeStatus;
|
||||||
|
/** 未结款数额 */
|
||||||
|
private BigDecimal unpaidAmount;
|
||||||
|
/** 备注 */
|
||||||
|
private String orderRemark;
|
||||||
|
/** 合同号 */
|
||||||
|
private String contractCode;
|
||||||
|
/** 合同名称 */
|
||||||
|
private String contractName;
|
||||||
|
/** 供方 */
|
||||||
|
private String supplier;
|
||||||
|
/** 需方 */
|
||||||
|
private String customer;
|
||||||
|
/** 签订时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date signTime;
|
||||||
|
/** 签订地点 */
|
||||||
|
private String signLocation;
|
||||||
|
/** 产品内容 */
|
||||||
|
private String productContent;
|
||||||
|
/** 合同内容 */
|
||||||
|
private String contractContent;
|
||||||
|
/** 供方地址 */
|
||||||
|
private String supplierAddress;
|
||||||
|
/** 供方电话 */
|
||||||
|
private String supplierPhone;
|
||||||
|
/** 供方开户行 */
|
||||||
|
private String supplierBank;
|
||||||
|
/** 供方账号 */
|
||||||
|
private String supplierAccount;
|
||||||
|
/** 供方税号 */
|
||||||
|
private String supplierTaxNo;
|
||||||
|
/** 需方地址 */
|
||||||
|
private String customerAddress;
|
||||||
|
/** 需方电话 */
|
||||||
|
private String customerPhone;
|
||||||
|
/** 需方开户行 */
|
||||||
|
private String customerBank;
|
||||||
|
/** 需方账号 */
|
||||||
|
private String customerAccount;
|
||||||
|
/** 需方税号 */
|
||||||
|
private String customerTaxNo;
|
||||||
|
/** 技术附件 */
|
||||||
|
private String techAnnex;
|
||||||
|
/** 商务附件 */
|
||||||
|
private String businessAnnex;
|
||||||
|
/** 排产函 */
|
||||||
|
private String productionSchedule;
|
||||||
|
/** 算单价备注 */
|
||||||
|
private String unitPriceRemark;
|
||||||
|
/** 应付定金(万元) */
|
||||||
|
private BigDecimal depositPayable;
|
||||||
|
/** 已付定金(万元) */
|
||||||
|
private BigDecimal depositPaid;
|
||||||
|
/** 定金比例(%) */
|
||||||
|
private BigDecimal depositRatio;
|
||||||
|
/** 合同状态 0=草稿 1=生效 2=作废 3=已完成 */
|
||||||
|
private Long status;
|
||||||
|
/** 关联合同ID */
|
||||||
|
private Long orderIdInOrder; // crm_order.contract_id,与contractId可能不同
|
||||||
|
/** 附件 */
|
||||||
|
private String annexFiles;
|
||||||
|
/** 创建人 */
|
||||||
|
private String createBy;
|
||||||
|
/** 创建时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date createTime;
|
||||||
|
/** 更新人 */
|
||||||
|
private String updateBy;
|
||||||
|
/** 更新时间 */
|
||||||
|
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||||
|
private Date updateTime;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -329,5 +329,10 @@ public class WmsMaterialCoilVo extends BaseEntity {
|
|||||||
* 调拨类型
|
* 调拨类型
|
||||||
*/
|
*/
|
||||||
private String transferType;
|
private String transferType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 关联的订单列表(通过wms_coil_contract_rel中间表JOIN crm_order)
|
||||||
|
*/
|
||||||
|
private List<com.klp.domain.vo.WmsCoilContractRelVo> orderList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ package com.klp.mapper;
|
|||||||
import com.klp.domain.WmsCoilContractRel;
|
import com.klp.domain.WmsCoilContractRel;
|
||||||
import com.klp.domain.vo.WmsCoilContractRelVo;
|
import com.klp.domain.vo.WmsCoilContractRelVo;
|
||||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||||
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 钢卷与合同关联关系Mapper接口
|
* 钢卷与合同关联关系Mapper接口
|
||||||
@@ -12,4 +15,13 @@ import com.klp.common.core.mapper.BaseMapperPlus;
|
|||||||
*/
|
*/
|
||||||
public interface WmsCoilContractRelMapper extends BaseMapperPlus<WmsCoilContractRelMapper, WmsCoilContractRel, WmsCoilContractRelVo> {
|
public interface WmsCoilContractRelMapper extends BaseMapperPlus<WmsCoilContractRelMapper, WmsCoilContractRel, WmsCoilContractRelVo> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据钢卷ID查询关联的订单完整信息(JOIN crm_order表)
|
||||||
|
*/
|
||||||
|
List<WmsCoilContractRelVo> selectOrdersByCoilId(@Param("coilId") Long coilId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量根据钢卷ID列表查询关联的订单完整信息
|
||||||
|
*/
|
||||||
|
List<WmsCoilContractRelVo> selectOrdersByCoilIds(@Param("coilIds") List<Long> coilIds);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import com.klp.domain.vo.dashboard.CategoryWidthRawVo;
|
|||||||
import com.klp.domain.WmsCoilPendingAction;
|
import com.klp.domain.WmsCoilPendingAction;
|
||||||
import com.klp.domain.bo.WmsCoilPendingActionBo;
|
import com.klp.domain.bo.WmsCoilPendingActionBo;
|
||||||
import com.klp.mapper.*;
|
import com.klp.mapper.*;
|
||||||
|
import com.klp.service.*;
|
||||||
import com.klp.system.service.ISysUserService;
|
import com.klp.system.service.ISysUserService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -33,16 +34,6 @@ import org.apache.commons.collections4.CollectionUtils;
|
|||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import com.klp.service.IWmsMaterialCoilService;
|
|
||||||
import com.klp.service.IWmsStockService;
|
|
||||||
import com.klp.service.IWmsGenerateRecordService;
|
|
||||||
import com.klp.service.IWmsWarehouseService;
|
|
||||||
import com.klp.service.IWmsActualWarehouseService;
|
|
||||||
import com.klp.service.IWmsRawMaterialService;
|
|
||||||
import com.klp.service.IWmsBomItemService;
|
|
||||||
import com.klp.service.IWmsCoilPendingActionService;
|
|
||||||
import com.klp.service.IWmsProductService;
|
|
||||||
import com.klp.service.IWmsCoilAbnormalService;
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -80,6 +71,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
private final WmsDeliveryWaybillDetailMapper deliveryWaybillDetailMapper;
|
private final WmsDeliveryWaybillDetailMapper deliveryWaybillDetailMapper;
|
||||||
private final WmsCoilWarehouseOperationLogMapper wmsCoilWarehouseOperationLogMapper;
|
private final WmsCoilWarehouseOperationLogMapper wmsCoilWarehouseOperationLogMapper;
|
||||||
private final IWmsCoilAbnormalService coilAbnormalService;
|
private final IWmsCoilAbnormalService coilAbnormalService;
|
||||||
|
private final WmsCoilContractRelMapper coilContractRelMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询钢卷物料表
|
* 查询钢卷物料表
|
||||||
@@ -94,6 +86,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
// 查询关联对象
|
// 查询关联对象
|
||||||
fillRelatedObjects(vo);
|
fillRelatedObjects(vo);
|
||||||
|
|
||||||
|
// 查询钢卷关联的订单信息
|
||||||
|
fillOrderListForSingle(coilId, vo);
|
||||||
|
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -304,6 +299,21 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// 查询合同信息通过中间表拿到合同id然后查询出合同信息
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 填充单个钢卷的关联订单列表(完整WmsCoilContractRelVo,含JOIN订单信息)
|
||||||
|
*/
|
||||||
|
private void fillOrderListForSingle(Long coilId, WmsMaterialCoilVo vo) {
|
||||||
|
try {
|
||||||
|
List<com.klp.domain.vo.WmsCoilContractRelVo> orders = coilContractRelMapper.selectOrdersByCoilId(coilId);
|
||||||
|
if (orders != null && !orders.isEmpty()) {
|
||||||
|
vo.setOrderList(orders);
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.warn("查询钢卷关联订单信息失败, coilId: {}", coilId, e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,5 +16,125 @@
|
|||||||
<result property="delFlag" column="del_flag"/>
|
<result property="delFlag" column="del_flag"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
|
<!-- 根据钢卷ID查询关联的订单完整信息(JOIN crm_order,返回WmsCoilContractRelVo全量字段) -->
|
||||||
|
<select id="selectOrdersByCoilId" resultType="com.klp.domain.vo.WmsCoilContractRelVo">
|
||||||
|
SELECT
|
||||||
|
rel.rel_id AS relId,
|
||||||
|
rel.coil_id AS coilId,
|
||||||
|
rel.contract_id AS contractId,
|
||||||
|
rel.remark,
|
||||||
|
-- 订单信息
|
||||||
|
co.order_id AS orderId,
|
||||||
|
co.order_code AS orderCode,
|
||||||
|
co.order_type AS orderType,
|
||||||
|
co.customer_id AS customerId,
|
||||||
|
co.order_amount AS orderAmount,
|
||||||
|
co.salesman AS salesman,
|
||||||
|
co.delivery_date AS deliveryDate,
|
||||||
|
co.pre_order_status AS preOrderStatus,
|
||||||
|
co.audit_user AS auditUser,
|
||||||
|
co.audit_time AS auditTime,
|
||||||
|
co.order_status AS orderStatus,
|
||||||
|
co.finance_status AS financeStatus,
|
||||||
|
co.unpaid_amount AS unpaidAmount,
|
||||||
|
co.remark AS orderRemark,
|
||||||
|
co.contract_code AS contractCode,
|
||||||
|
co.contract_name AS contractName,
|
||||||
|
co.supplier AS supplier,
|
||||||
|
co.customer AS customer,
|
||||||
|
co.sign_time AS signTime,
|
||||||
|
co.sign_location AS signLocation,
|
||||||
|
co.product_content AS productContent,
|
||||||
|
co.contract_content AS contractContent,
|
||||||
|
co.supplier_address AS supplierAddress,
|
||||||
|
co.supplier_phone AS supplierPhone,
|
||||||
|
co.supplier_bank AS supplierBank,
|
||||||
|
co.supplier_account AS supplierAccount,
|
||||||
|
co.supplier_tax_no AS supplierTaxNo,
|
||||||
|
co.customer_address AS customerAddress,
|
||||||
|
co.customer_phone AS customerPhone,
|
||||||
|
co.customer_bank AS customerBank,
|
||||||
|
co.customer_account AS customerAccount,
|
||||||
|
co.customer_tax_no AS customerTaxNo,
|
||||||
|
co.tech_annex AS techAnnex,
|
||||||
|
co.business_annex AS businessAnnex,
|
||||||
|
co.production_schedule AS productionSchedule,
|
||||||
|
co.unit_price_remark AS unitPriceRemark,
|
||||||
|
co.deposit_payable AS depositPayable,
|
||||||
|
co.deposit_paid AS depositPaid,
|
||||||
|
co.deposit_ratio AS depositRatio,
|
||||||
|
co.status,
|
||||||
|
co.contract_id AS orderIdInOrder,
|
||||||
|
co.annex_files AS annexFiles,
|
||||||
|
co.create_by AS createBy,
|
||||||
|
co.create_time AS createTime,
|
||||||
|
co.update_by AS updateBy,
|
||||||
|
co.update_time AS updateTime
|
||||||
|
FROM wms_coil_contract_rel rel
|
||||||
|
INNER JOIN crm_order co ON rel.contract_id = co.order_id AND co.del_flag = 0
|
||||||
|
WHERE rel.coil_id = #{coilId} AND rel.del_flag = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
</mapper>
|
<!-- 批量根据钢卷ID列表查询关联的订单完整信息 -->
|
||||||
|
<select id="selectOrdersByCoilIds" resultType="com.klp.domain.vo.WmsCoilContractRelVo">
|
||||||
|
SELECT
|
||||||
|
rel.rel_id AS relId,
|
||||||
|
rel.coil_id AS coilId,
|
||||||
|
rel.contract_id AS contractId,
|
||||||
|
rel.remark,
|
||||||
|
co.order_id AS orderId,
|
||||||
|
co.order_code AS orderCode,
|
||||||
|
co.order_type AS orderType,
|
||||||
|
co.customer_id AS customerId,
|
||||||
|
co.order_amount AS orderAmount,
|
||||||
|
co.salesman AS salesman,
|
||||||
|
co.delivery_date AS deliveryDate,
|
||||||
|
co.pre_order_status AS preOrderStatus,
|
||||||
|
co.audit_user AS auditUser,
|
||||||
|
co.audit_time AS auditTime,
|
||||||
|
co.order_status AS orderStatus,
|
||||||
|
co.finance_status AS financeStatus,
|
||||||
|
co.unpaid_amount AS unpaidAmount,
|
||||||
|
co.remark AS orderRemark,
|
||||||
|
co.contract_code AS contractCode,
|
||||||
|
co.contract_name AS contractName,
|
||||||
|
co.supplier AS supplier,
|
||||||
|
co.customer AS customer,
|
||||||
|
co.sign_time AS signTime,
|
||||||
|
co.sign_location AS signLocation,
|
||||||
|
co.product_content AS productContent,
|
||||||
|
co.contract_content AS contractContent,
|
||||||
|
co.supplier_address AS supplierAddress,
|
||||||
|
co.supplier_phone AS supplierPhone,
|
||||||
|
co.supplier_bank AS supplierBank,
|
||||||
|
co.supplier_account AS supplierAccount,
|
||||||
|
co.supplier_tax_no AS supplierTaxNo,
|
||||||
|
co.customer_address AS customerAddress,
|
||||||
|
co.customer_phone AS customerPhone,
|
||||||
|
co.customer_bank AS customerBank,
|
||||||
|
co.customer_account AS customerAccount,
|
||||||
|
co.customer_tax_no AS customerTaxNo,
|
||||||
|
co.tech_annex AS techAnnex,
|
||||||
|
co.business_annex AS businessAnnex,
|
||||||
|
co.production_schedule AS productionSchedule,
|
||||||
|
co.unit_price_remark AS unitPriceRemark,
|
||||||
|
co.deposit_payable AS depositPayable,
|
||||||
|
co.deposit_paid AS depositPaid,
|
||||||
|
co.deposit_ratio AS depositRatio,
|
||||||
|
co.status,
|
||||||
|
co.contract_id AS orderIdInOrder,
|
||||||
|
co.annex_files AS annexFiles,
|
||||||
|
co.create_by AS createBy,
|
||||||
|
co.create_time AS createTime,
|
||||||
|
co.update_by AS updateBy,
|
||||||
|
co.update_time AS updateTime
|
||||||
|
FROM wms_coil_contract_rel rel
|
||||||
|
INNER JOIN crm_order co ON rel.contract_id = co.order_id AND co.del_flag = 0
|
||||||
|
WHERE rel.coil_id IN
|
||||||
|
<foreach collection="coilIds" item="id" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
AND rel.del_flag = 0
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Reference in New Issue
Block a user