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.ExcelProperty;
|
||||
import com.klp.common.annotation.ExcelDictFormat;
|
||||
import com.klp.common.convert.ExcelDictConvert;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
|
||||
|
||||
/**
|
||||
* 钢卷与合同关联关系视图对象 wms_coil_contract_rel
|
||||
* 钢卷与合同(订单)关联关系视图对象 wms_coil_contract_rel + crm_order JOIN
|
||||
*
|
||||
* @author klp
|
||||
* @date 2026-04-18
|
||||
@@ -19,29 +21,118 @@ public class WmsCoilContractRelVo {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键ID
|
||||
*/
|
||||
@ExcelProperty(value = "主键ID")
|
||||
private Long relId;
|
||||
// ========== 中间表自身字段 ==========
|
||||
|
||||
/**
|
||||
* 钢卷ID
|
||||
*/
|
||||
/** 主键ID */
|
||||
private Long relId;
|
||||
/** 钢卷ID */
|
||||
@ExcelProperty(value = "钢卷ID")
|
||||
private Long coilId;
|
||||
|
||||
/**
|
||||
* 合同ID
|
||||
*/
|
||||
@ExcelProperty(value = "合同ID")
|
||||
/** 合同/订单ID */
|
||||
@ExcelProperty(value = "合同/订单ID")
|
||||
private Long contractId;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
/** 备注 */
|
||||
@ExcelProperty(value = "备注")
|
||||
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;
|
||||
|
||||
/**
|
||||
* 关联的订单列表(通过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.vo.WmsCoilContractRelVo;
|
||||
import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 钢卷与合同关联关系Mapper接口
|
||||
@@ -12,4 +15,13 @@ import com.klp.common.core.mapper.BaseMapperPlus;
|
||||
*/
|
||||
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.bo.WmsCoilPendingActionBo;
|
||||
import com.klp.mapper.*;
|
||||
import com.klp.service.*;
|
||||
import com.klp.system.service.ISysUserService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -33,16 +34,6 @@ import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
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 java.util.*;
|
||||
@@ -80,6 +71,7 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
private final WmsDeliveryWaybillDetailMapper deliveryWaybillDetailMapper;
|
||||
private final WmsCoilWarehouseOperationLogMapper wmsCoilWarehouseOperationLogMapper;
|
||||
private final IWmsCoilAbnormalService coilAbnormalService;
|
||||
private final WmsCoilContractRelMapper coilContractRelMapper;
|
||||
|
||||
/**
|
||||
* 查询钢卷物料表
|
||||
@@ -94,6 +86,9 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService {
|
||||
// 查询关联对象
|
||||
fillRelatedObjects(vo);
|
||||
|
||||
// 查询钢卷关联的订单信息
|
||||
fillOrderListForSingle(coilId, 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"/>
|
||||
</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