From bc7b9d245477cfeb727a0f3624fbfbab4ed388eb Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Mon, 29 Jun 2026 17:08:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(crm):=20=E8=AE=A2=E5=8D=95=E9=A1=B9?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=99=A8=E6=B7=BB=E5=8A=A0=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=96=B0=E5=A2=9E=E9=94=80=E5=94=AE?= =?UTF-8?q?=E5=91=98=E5=92=8C=E5=90=88=E5=90=8C=E6=9F=A5=E8=AF=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将getCoilsByOrderId方法改为分页查询,返回TableDataInfo格式 - 新增getCoilsBySalesman接口,支持按销售员查询生产成果钢卷列表 - 新增getCoilsByContractIdPaginated接口,支持按合同ID分页查询生产成果 - 更新前端API调用适配分页参数传递 - 修改listOrderPackaging接口支持分页查询 - 更新相关Vue组件适配新的分页数据结构返回格式 --- .../controller/CrmOrderItemController.java | 24 +++++- .../klp/crm/service/ICrmOrderItemService.java | 14 +++- .../service/impl/CrmOrderItemServiceImpl.java | 81 ++++++++++++++++++- klp-ui/src/api/crm/order.js | 5 +- klp-ui/src/api/wms/deliveryWaybillDetail.js | 8 +- .../views/crm/components/OrderObjection.vue | 4 +- klp-ui/src/views/crm/contract/index.vue | 4 +- klp-ui/src/views/crm/objection/index.vue | 4 +- klp-ui/src/views/crm/order/index.vue | 4 +- klp-ui/src/views/crm/saleman/index.vue | 4 +- .../WmsDeliveryWaybillDetailController.java | 11 +-- 11 files changed, 131 insertions(+), 32 deletions(-) diff --git a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java index 69e43426c..026147661 100644 --- a/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java +++ b/klp-crm/src/main/java/com/klp/crm/controller/CrmOrderItemController.java @@ -105,11 +105,12 @@ public class CrmOrderItemController extends BaseController { @PathVariable Long contractId) { return R.ok(iCrmOrderItemService.queryFinanceAndObjectionByContractId(contractId)); } - // 根据订单id查询发货单据中的配卷。 + // 根据订单id查询发货单据中的配卷(分页)。 @GetMapping("/coils/order/{orderId}") - public R> getCoilsByOrderId(@NotNull(message = "订单ID不能为空") - @PathVariable Long orderId) { - return R.ok(iCrmOrderItemService.queryCoilsByOrderId(orderId)); + public TableDataInfo getCoilsByOrderId(@NotNull(message = "订单ID不能为空") + @PathVariable Long orderId, + PageQuery pageQuery) { + return iCrmOrderItemService.queryCoilsByOrderId(orderId, pageQuery); } // 根据合同id查询发货单据中的配卷。 @@ -132,4 +133,19 @@ public class CrmOrderItemController extends BaseController { @PathVariable String customerId) { return R.ok(iCrmOrderItemService.queryCoilsByCustomerId(customerId)); } + + // 根据销售员查询生产成果(钢卷列表),分页 + @GetMapping("/coils/bySalesman") + public TableDataInfo getCoilsBySalesman(@RequestParam String salesman, + PageQuery pageQuery) { + return iCrmOrderItemService.queryCoilsBySalesman(salesman, pageQuery); + } + + // 根据合同ID查询生产成果(钢卷列表),分页 + @GetMapping("/coils/byContract/{contractId}") + public TableDataInfo getCoilsByContractIdPaginated(@NotNull(message = "合同ID不能为空") + @PathVariable Long contractId, + PageQuery pageQuery) { + return iCrmOrderItemService.queryCoilsByContractIdPaginated(contractId, pageQuery); + } } diff --git a/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java b/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java index ae9a299c7..544d0283a 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java +++ b/klp-crm/src/main/java/com/klp/crm/service/ICrmOrderItemService.java @@ -57,9 +57,9 @@ public interface ICrmOrderItemService { CrmContractOrderFinanceVo queryFinanceAndObjectionByContractId(Long contractId); /** - * 根据订单ID查询发货单配卷 + * 根据订单ID查询发货单配卷(分页) */ - List queryCoilsByOrderId(Long orderId); + TableDataInfo queryCoilsByOrderId(Long orderId, PageQuery pageQuery); /** * 根据合同ID查询发货单配卷 @@ -75,4 +75,14 @@ public interface ICrmOrderItemService { * 根据客户ID查询发货单配卷 */ List queryCoilsByCustomerId(String customerId); + + /** + * 根据销售员查询生产成果(钢卷列表)分页 + */ + TableDataInfo queryCoilsBySalesman(String salesman, PageQuery pageQuery); + + /** + * 根据合同ID查询生产成果(钢卷列表)分页 + */ + TableDataInfo queryCoilsByContractIdPaginated(Long contractId, PageQuery pageQuery); } diff --git a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java index 7d7510549..6f1e473e3 100644 --- a/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java +++ b/klp-crm/src/main/java/com/klp/crm/service/impl/CrmOrderItemServiceImpl.java @@ -35,6 +35,8 @@ import com.klp.crm.service.ICrmOrderItemService; import com.klp.mapper.WmsReceivableMapper; import com.klp.mapper.WmsDeliveryWaybillMapper; import com.klp.mapper.WmsDeliveryWaybillDetailMapper; +import com.klp.mapper.WmsCoilContractRelMapper; +import com.klp.domain.WmsCoilContractRel; import com.klp.service.IWmsMaterialCoilService; import java.util.*; @@ -57,6 +59,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { private final WmsReceivableMapper wmsReceivableMapper; private final WmsDeliveryWaybillMapper wmsDeliveryWaybillMapper; private final WmsDeliveryWaybillDetailMapper wmsDeliveryWaybillDetailMapper; + private final WmsCoilContractRelMapper coilContractRelMapper; private final IWmsMaterialCoilService iWmsMaterialCoilService; /** @@ -288,13 +291,13 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { } @Override - public List queryCoilsByOrderId(Long orderId) { + public TableDataInfo queryCoilsByOrderId(Long orderId, PageQuery pageQuery) { LambdaQueryWrapper waybillWrapper = new LambdaQueryWrapper<>(); waybillWrapper.eq(WmsDeliveryWaybill::getOrderId, orderId); List waybills = wmsDeliveryWaybillMapper.selectList(waybillWrapper); if (waybills == null || waybills.isEmpty()) { - return Collections.emptyList(); + return new TableDataInfo<>(); } List waybillIds = waybills.stream() @@ -306,7 +309,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { List details = wmsDeliveryWaybillDetailMapper.selectList(detailWrapper); if (details == null || details.isEmpty()) { - return Collections.emptyList(); + return new TableDataInfo<>(); } String coilIds = details.stream() @@ -316,7 +319,7 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); coilBo.setCoilIds(coilIds); - return iWmsMaterialCoilService.queryList(coilBo); + return iWmsMaterialCoilService.queryPageList(coilBo, pageQuery); } @Override @@ -440,4 +443,74 @@ public class CrmOrderItemServiceImpl implements ICrmOrderItemService { coilBo.setCoilIds(coilIds); return iWmsMaterialCoilService.queryList(coilBo); } + + @Override + public TableDataInfo queryCoilsBySalesman(String salesman, PageQuery pageQuery) { + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(); + orderWrapper.eq(CrmOrder::getSalesman, salesman); + orderWrapper.eq(CrmOrder::getDelFlag, 0); + List orders = crmOrderMapper.selectList(orderWrapper); + + if (orders == null || orders.isEmpty()) { + return new TableDataInfo<>(); + } + + List orderIds = orders.stream() + .map(CrmOrder::getOrderId) + .collect(Collectors.toList()); + + LambdaQueryWrapper relWrapper = new LambdaQueryWrapper<>(); + relWrapper.in(WmsCoilContractRel::getContractId, orderIds); + relWrapper.eq(WmsCoilContractRel::getDelFlag, 0); + List rels = coilContractRelMapper.selectList(relWrapper); + + if (rels == null || rels.isEmpty()) { + return new TableDataInfo<>(); + } + + String coilIds = rels.stream() + .map(WmsCoilContractRel::getCoilId) + .distinct() + .map(String::valueOf) + .collect(Collectors.joining(",")); + + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(coilIds); + return iWmsMaterialCoilService.queryPageList(coilBo, pageQuery); + } + + @Override + public TableDataInfo queryCoilsByContractIdPaginated(Long contractId, PageQuery pageQuery) { + LambdaQueryWrapper orderWrapper = new LambdaQueryWrapper<>(); + orderWrapper.eq(CrmOrder::getContractId, contractId); + orderWrapper.eq(CrmOrder::getDelFlag, 0); + List orders = crmOrderMapper.selectList(orderWrapper); + + if (orders == null || orders.isEmpty()) { + return new TableDataInfo<>(); + } + + List orderIds = orders.stream() + .map(CrmOrder::getOrderId) + .collect(Collectors.toList()); + + LambdaQueryWrapper relWrapper = new LambdaQueryWrapper<>(); + relWrapper.in(WmsCoilContractRel::getContractId, orderIds); + relWrapper.eq(WmsCoilContractRel::getDelFlag, 0); + List rels = coilContractRelMapper.selectList(relWrapper); + + if (rels == null || rels.isEmpty()) { + return new TableDataInfo<>(); + } + + String coilIds = rels.stream() + .map(WmsCoilContractRel::getCoilId) + .distinct() + .map(String::valueOf) + .collect(Collectors.joining(",")); + + WmsMaterialCoilBo coilBo = new WmsMaterialCoilBo(); + coilBo.setCoilIds(coilIds); + return iWmsMaterialCoilService.queryPageList(coilBo, pageQuery); + } } diff --git a/klp-ui/src/api/crm/order.js b/klp-ui/src/api/crm/order.js index 5e80b519a..6f151bae5 100644 --- a/klp-ui/src/api/crm/order.js +++ b/klp-ui/src/api/crm/order.js @@ -44,12 +44,13 @@ export function delOrder(orderId) { } /** - * 查询该订单下的所有配卷 + * 查询该订单下的配卷(分页) */ -export function listOrderPackaging(orderId) { +export function listOrderPackaging(orderId, query) { return request({ url: `/crm/orderItem/coils/order/${orderId}`, method: 'get', + params: query }) } diff --git a/klp-ui/src/api/wms/deliveryWaybillDetail.js b/klp-ui/src/api/wms/deliveryWaybillDetail.js index a951d8695..f90b521b0 100644 --- a/klp-ui/src/api/wms/deliveryWaybillDetail.js +++ b/klp-ui/src/api/wms/deliveryWaybillDetail.js @@ -69,13 +69,11 @@ export function getBoundCoilStatisticsList(query) { }) } -// 按销售员查询订单明细的卷 -export function listDeliveryWaybillDetailBySaleman(principal) { +// 按销售员查询订单明细的卷(分页) +export function listDeliveryWaybillDetailBySaleman(query) { return request({ url: '/wms/deliveryWaybillDetail/coilListByPrincipal', method: 'get', - params: { - principal: principal - } + params: query }) } \ No newline at end of file diff --git a/klp-ui/src/views/crm/components/OrderObjection.vue b/klp-ui/src/views/crm/components/OrderObjection.vue index 869153a81..fd02ad0bf 100644 --- a/klp-ui/src/views/crm/components/OrderObjection.vue +++ b/klp-ui/src/views/crm/components/OrderObjection.vue @@ -371,8 +371,8 @@ export default { // 获取订单已发货的钢卷 getShippedCoils() { if (this.orderId) { - listOrderPackaging(this.orderId).then(response => { - this.shippedCoils = response.data || []; + listOrderPackaging(this.orderId, { pageNum: 1, pageSize: 10000 }).then(response => { + this.shippedCoils = response.rows || []; }).catch(() => { this.shippedCoils = []; }); diff --git a/klp-ui/src/views/crm/contract/index.vue b/klp-ui/src/views/crm/contract/index.vue index cab3c1a2d..82ee8078b 100644 --- a/klp-ui/src/views/crm/contract/index.vue +++ b/klp-ui/src/views/crm/contract/index.vue @@ -504,8 +504,8 @@ export default { }, /** 查询合同配卷列表 */ getCoilList() { - listOrderPackaging(this.form.orderId).then(response => { - this.coilList = response.data || []; + listOrderPackaging(this.form.orderId, { pageNum: 1, pageSize: 10000 }).then(response => { + this.coilList = response.rows || []; }) }, /** 刷新生产成果列表(批量转单后调用) */ diff --git a/klp-ui/src/views/crm/objection/index.vue b/klp-ui/src/views/crm/objection/index.vue index 0cb0f4fe1..961acfdfa 100644 --- a/klp-ui/src/views/crm/objection/index.vue +++ b/klp-ui/src/views/crm/objection/index.vue @@ -469,8 +469,8 @@ export default { // 获取订单已发货的钢卷 getShippedCoils() { if (this.form.orderId) { - listOrderPackaging(this.form.orderId).then(response => { - this.shippedCoils = response.data || []; + listOrderPackaging(this.form.orderId, { pageNum: 1, pageSize: 10000 }).then(response => { + this.shippedCoils = response.rows || []; }).catch(() => { this.shippedCoils = []; }); diff --git a/klp-ui/src/views/crm/order/index.vue b/klp-ui/src/views/crm/order/index.vue index 2506c99cb..44aae12d1 100644 --- a/klp-ui/src/views/crm/order/index.vue +++ b/klp-ui/src/views/crm/order/index.vue @@ -259,8 +259,8 @@ export default { }, /** 查询发货配卷列表 */ getCoilList() { - listOrderPackaging(this.currentOrder.orderId).then(response => { - this.coilList = response.data || []; + listOrderPackaging(this.currentOrder.orderId, { pageNum: 1, pageSize: 10000 }).then(response => { + this.coilList = response.rows || []; }); }, /** 合同号改变事件 */ diff --git a/klp-ui/src/views/crm/saleman/index.vue b/klp-ui/src/views/crm/saleman/index.vue index a2ea8cca5..25ee729bb 100644 --- a/klp-ui/src/views/crm/saleman/index.vue +++ b/klp-ui/src/views/crm/saleman/index.vue @@ -310,8 +310,8 @@ export default { }); } case 'planDelivery': - return listDeliveryWaybillDetailBySaleman(dictValue).then(response => { - this.deliveryList = response; + return listDeliveryWaybillDetailBySaleman({ principal: dictValue, pageNum: 1, pageSize: 10000 }).then(response => { + this.deliveryList = response.rows || []; this.loadedTabs.planDelivery = true; this.rightLoading = false; }).catch(() => { diff --git a/klp-wms/src/main/java/com/klp/controller/WmsDeliveryWaybillDetailController.java b/klp-wms/src/main/java/com/klp/controller/WmsDeliveryWaybillDetailController.java index c8dbb96da..510c2d1bc 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsDeliveryWaybillDetailController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsDeliveryWaybillDetailController.java @@ -188,18 +188,19 @@ public class WmsDeliveryWaybillDetailController extends BaseController { /** - * 根据负责人(principal)查询已发货绑定的钢卷列表 + * 根据负责人(principal)查询已发货绑定的钢卷列表(分页) */ @GetMapping("/coilListByPrincipal") - public List coilListByPrincipal( - @RequestParam(required = false) String principal) { + public TableDataInfo coilListByPrincipal( + @RequestParam(required = false) String principal, + PageQuery pageQuery) { List boundCoilIds = iWmsDeliveryWaybillDetailService.getBoundCoilIdsByPrincipal(principal); if (boundCoilIds == null || boundCoilIds.isEmpty()) { - return Collections.emptyList(); + return new TableDataInfo<>(); } WmsMaterialCoilBo wmsMaterialCoilBo = new WmsMaterialCoilBo(); wmsMaterialCoilBo.setCoilIds(boundCoilIds.stream().map(String::valueOf).collect(Collectors.joining(","))); - return iWmsMaterialCoilService.queryList(wmsMaterialCoilBo); + return iWmsMaterialCoilService.queryPageList(wmsMaterialCoilBo, pageQuery); } }