From 3c1ad6eabe86c6d267a7c55fae52dd1bb15fcb63 Mon Sep 17 00:00:00 2001 From: liuxiaoxu <1793812695@qq.com> Date: Wed, 13 Nov 2024 15:44:43 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=87=BA=E5=BA=93=E5=89=8D=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=EF=BC=9A=E6=96=B0=E5=A2=9E=E7=A1=AE=E8=AE=A4=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E6=8C=89=E9=92=AE=E5=92=8C=E5=85=B6=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=E7=9A=84=E6=96=B9=E6=B3=95=20=E6=96=B0=E5=A2=9E=20=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E7=A1=AE=E8=AE=A4=E9=AA=8C=E6=94=B6=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E3=80=82=E5=AE=9E=E7=8E=B0=E7=8E=B0=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E6=9C=89=E5=A4=9A=E4=B8=AA=E9=94=80=E5=94=AE=E5=8D=95?= =?UTF-8?q?=E5=8F=B7=E5=B0=B1=E6=98=BE=E7=A4=BA=E5=A4=9A=E4=B8=AA=EF=BC=8C?= =?UTF-8?q?=E4=B8=8B=E9=9D=A2=E7=9A=84=E7=89=A9=E6=96=99=E5=88=86=E4=B8=BA?= =?UTF-8?q?=E6=88=90=E5=93=81=E5=92=8C=E5=85=B6=E4=BB=96=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=EF=BC=8C=E6=88=90=E5=93=81=E7=9A=84=E7=89=A9=E6=96=99=E5=88=86?= =?UTF-8?q?=E5=BC=80=E5=B1=95=E7=A4=BA=EF=BC=8C=E8=AE=BE=E7=BD=AE=E6=9C=AC?= =?UTF-8?q?=E6=AC=A1=E5=87=BA=E8=B4=A7=E6=95=B0=E4=B8=BA1=EF=BC=8C?= =?UTF-8?q?=E6=AF=8F=E4=B8=AA=E8=AE=BE=E5=A4=87=E5=8F=AA=E8=83=BD=E7=AD=BE?= =?UTF-8?q?=E6=94=B6=E4=B8=80=E6=AC=A1=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=B7=B2?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E6=95=B0=E7=AD=89=E4=BA=8E=E5=B7=B2=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E6=95=B0=EF=BC=8C=E5=88=99=E6=98=BE=E7=A4=BA=E5=B7=B2?= =?UTF-8?q?=E9=AA=8C=E6=94=B6=EF=BC=8C=E4=B8=8D=E5=8F=AF=E7=BC=96=E8=BE=91?= =?UTF-8?q?=EF=BC=9B=E5=85=B6=E4=BB=96=E7=89=A9=E6=96=99=E4=B8=8D=E5=BF=85?= =?UTF-8?q?=E5=88=86=E5=BC=80=E5=B1=95=E7=A4=BA=EF=BC=8C=E4=BD=86=E6=98=AF?= =?UTF-8?q?=E4=B9=9F=E8=A6=81=E5=A6=82=E6=9E=9C=E5=B7=B2=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E6=95=B0=E7=AD=89=E4=BA=8E=E5=B7=B2=E9=AA=8C=E6=94=B6=E6=95=B0?= =?UTF-8?q?=EF=BC=8C=E5=88=99=E6=98=BE=E7=A4=BA=E5=B7=B2=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=8F=AF=E7=BC=96=E8=BE=91=EF=BC=9B=E5=A6=82?= =?UTF-8?q?=E6=9E=9C=E5=B7=B2=E6=94=B6=E8=B4=A7=E6=95=B0=E4=B8=BA0?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=8C=E6=98=BE=E7=A4=BA=E4=B8=8D?= =?UTF-8?q?=E5=8F=AF=E9=AA=8C=E6=94=B6=20=E6=96=B0=E5=A2=9E=20=E5=94=AE?= =?UTF-8?q?=E5=90=8E=E7=A1=AE=E8=AE=A4=E9=AA=8C=E6=94=B6Vo=E7=B1=BB=20?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4=E8=AE=BE=E5=A4=87=E5=87=BA?= =?UTF-8?q?=E5=BA=93Controller=EF=BC=8C=E6=96=B0=E5=A2=9E=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E9=AA=8C=E6=94=B6=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=9B=E6=96=B0=E5=A2=9E=20=E4=BF=AE=E6=94=B9=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E7=A1=AE=E8=AE=A4=E9=AA=8C=E6=94=B6=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9B=E6=96=B0=E5=A2=9E=20=E7=A1=AE?= =?UTF-8?q?=E8=AE=A4=E9=AA=8C=E6=94=B6=20=E7=89=A9=E6=96=99=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=AF=A6=E6=83=85=E5=90=8E=E7=AB=AF=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=20=E5=94=AE=E5=90=8E=E7=BB=B4=E6=8A=A4=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E5=87=BA=E5=BA=93iml=E5=B1=82=EF=BC=9A=20=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E9=AA=8C=E6=94=B6=E6=96=B9=E6=B3=95=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=EF=BC=9A=E5=85=88=E8=AE=BE=E7=BD=AE=20=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87Id=E7=9A=84?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E5=85=A8=E9=83=A8=E9=AA=8C=E6=94=B6=E4=B8=BA?= =?UTF-8?q?0=EF=BC=8C=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87Id?= =?UTF-8?q?=E7=9A=84=E6=98=AF=E5=90=A6=E5=85=A8=E9=83=A8=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E4=B8=BA0=EF=BC=9B=E5=85=88=E9=81=8D=E5=8E=86=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E4=BC=A0=E5=85=A5=E7=9A=84=E6=AF=8F=E4=B8=AA=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=B7=B2=E7=BB=8F=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E6=95=B0=E7=AD=89=E4=BA=8E=E5=B7=B2=E7=BB=8F=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E6=95=B0=E3=80=82=20=E6=A0=B9=E6=8D=AE=E5=B7=B2?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E6=95=B0=E6=9D=A5=E5=86=B3=E5=AE=9A=E5=A1=AB?= =?UTF-8?q?=E5=86=99=E6=9C=AC=E6=AC=A1=E9=AA=8C=E6=94=B6=E6=95=B0=EF=BC=9B?= =?UTF-8?q?=E5=B9=B6=E4=B8=94=E9=A6=96=E5=85=88=E8=A6=81=20=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E6=8E=89=E6=AF=8F=E4=B8=AA=E5=B7=B2=E6=94=B6=E8=B4=A7?= =?UTF-8?q?=E6=95=B0=E4=B8=BA0=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=8C?= =?UTF-8?q?=E5=9B=A0=E4=B8=BA=E5=85=B6=E4=B8=8D=E5=8F=AF=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=EF=BC=9B=E8=BF=98=E8=A6=81=E8=BF=87=E6=BB=A4=E6=8E=89=E5=B7=B2?= =?UTF-8?q?=E6=94=B6=E8=B4=A7=E6=95=B0=E7=AD=89=E4=BA=8E=E5=B7=B2=E9=AA=8C?= =?UTF-8?q?=E6=94=B6=E6=95=B0=E7=9A=84=E6=95=B0=E6=8D=AE=EF=BC=8C=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E5=85=B6=E5=B7=B2=E9=AA=8C=E6=94=B6=EF=BC=9B=E8=BF=98?= =?UTF-8?q?=E8=A6=81=E5=88=A4=E6=96=AD=E5=B7=B2=E7=BB=8F=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=AE=8C=E7=9A=84=E6=95=B0=E6=8D=AE=E6=98=AF=E5=90=A6=E5=85=A8?= =?UTF-8?q?=E9=83=A8=E5=A1=AB=E5=86=99=E6=9C=AC=E6=AC=A1=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E6=95=B0=EF=BC=9B=E7=84=B6=E5=90=8E=E5=88=86=E5=88=AB=E5=A4=84?= =?UTF-8?q?=E7=90=86=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87id?= =?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE=E5=92=8C=E6=B2=A1=E6=9C=89=E5=87=BA?= =?UTF-8?q?=E8=B4=A7=E8=AE=BE=E5=A4=87id=E7=9A=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E3=80=82=E5=88=86=E5=88=AB=E8=BF=9B=E8=A1=8C=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=9C=AC=E6=AC=A1=E5=87=BA=E8=B4=A7=E6=95=B0?= =?UTF-8?q?=E7=AD=89=E4=BA=8E=E5=B7=B2=E9=AA=8C=E6=94=B6=E6=95=B0=EF=BC=8C?= =?UTF-8?q?=E5=B0=B1=E8=AE=BE=E7=BD=AE=E5=85=A8=E9=83=A8=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E3=80=82=E5=A6=82=E6=9E=9C=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE?= =?UTF-8?q?=E5=A4=87id=E7=9A=84=E6=95=B0=E6=8D=AE=E5=92=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87id=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=83=BD=E5=85=A8=E9=83=A8=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=EF=BC=8C=E5=88=99=E8=AE=BE=E7=BD=AE=E5=87=BA=E8=B4=A7=E9=80=9A?= =?UTF-8?q?=E7=9F=A5=E5=8D=95=E5=85=A8=E9=83=A8=E9=AA=8C=E6=94=B6=EF=BC=8C?= =?UTF-8?q?=E5=90=A6=E5=88=99=E6=98=AF=E9=83=A8=E5=88=86=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=20=E5=94=AE=E5=90=8E=E7=A1=AE=E8=AE=A4=E9=AA=8C=E6=94=B6?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E6=96=B9=E6=B3=95=E5=AE=9E=E7=8E=B0=EF=BC=9A?= =?UTF-8?q?=E6=8A=8A=E5=B8=A6=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87id?= =?UTF-8?q?=E7=9A=84=E6=88=90=E5=93=81=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=8B=86=E5=88=86=E5=B1=95=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E8=AE=BE=E5=A4=87=E7=9A=84=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E5=B7=B2=E9=AA=8C=E6=94=B6=E6=95=B0=E5=92=8C?= =?UTF-8?q?=E5=B7=B2=E6=94=B6=E8=B4=A7=E6=95=B0=20=E5=87=BA=E8=B4=A7?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E5=AE=9E=E4=BD=93=E7=B1=BB=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20isConfirmCheckFlag=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=B9=B6?= =?UTF-8?q?=E4=B8=94mapper.xml=E5=B1=82=E7=9A=84=E6=89=80=E6=9C=89?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E5=8A=A0=E4=B8=8A=20isConfirmCheckFlag?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=8C=20=E5=8E=BB=E6=8E=89=E9=94=80?= =?UTF-8?q?=E5=94=AE=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5=E6=97=A7=E7=89=88?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E9=AA=8C=E6=94=B6=E6=8C=89=E9=92=AE=E5=92=8C?= =?UTF-8?q?=E6=96=B9=E6=B3=95=20=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7?= =?UTF-8?q?=E9=80=9A=E7=9F=A5iml=E5=B1=82=E6=96=B0=E5=A2=9E=20=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=87=BA=E5=BA=93=E5=8D=95=E5=8F=B7=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=94=80=E5=94=AE=E5=87=BA=E8=B4=A7=E9=80=9A=E7=9F=A5=E5=8D=95?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=9B=E4=BF=AE=E6=94=B9=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E6=94=B6=E8=B4=A7=E6=96=B9=E6=B3=95=EF=BC=9A?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=20=E8=BF=87=E6=BB=A4=E6=8E=89=E6=AF=8F?= =?UTF-8?q?=E4=B8=AA=E5=B7=B2=E6=94=B6=E8=B4=A7=E6=95=B0=E7=AD=89=E4=BA=8E?= =?UTF-8?q?=E6=9C=AC=E6=AC=A1=E5=87=BA=E8=B4=A7=E6=95=B0=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=9B=E5=AF=B9=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE?= =?UTF-8?q?=E5=A4=87id=E7=9A=84=E6=95=B0=E6=8D=AE=E5=92=8C=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E5=87=BA=E8=B4=A7=E8=AE=BE=E5=A4=87id=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=83=BD=E8=BF=9B=E8=A1=8C=E5=88=A4=E7=A9=BA?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AftersalesOutOrderController.java | 72 ++++ .../domain/AfterSalesShippingDevice.java | 12 + .../domain/vo/ConfirmCheckDetailVo.java | 19 ++ .../service/IAftersalesOutOrderService.java | 16 + .../impl/AftersalesOutOrderServiceImpl.java | 313 ++++++++++++++++++ .../ISysSalesShippingInformService.java | 4 + .../SysSalesShippingInformServiceImpl.java | 26 +- .../AfterSalesShippingDeviceMapper.xml | 16 +- .../aftersalesConfirmCheck.html | 306 +++++++++++++++++ .../aftersalesOutOrder.html | 20 +- .../salesShippingInform/confirmReceiving.html | 3 - .../salesShippingInform.html | 11 - 12 files changed, 787 insertions(+), 31 deletions(-) create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ConfirmCheckDetailVo.java create mode 100644 ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesConfirmCheck.html diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java index 41608abb..0b9553de 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/controller/AftersalesOutOrderController.java @@ -2,11 +2,20 @@ package com.ruoyi.aftersales.controller; import java.net.URLDecoder; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; +import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.service.IAftersalesOutOrderDetailService; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.SysSalesOrder; +import com.ruoyi.system.domain.SysSalesShippingInform; +import com.ruoyi.system.domain.Vo.ConfirmReceivingDetailVo; +import com.ruoyi.system.service.ISysSalesOrderService; +import com.ruoyi.system.service.ISysSalesShippingInformService; import lombok.SneakyThrows; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; @@ -40,6 +49,12 @@ public class AftersalesOutOrderController extends BaseController @Autowired private IAftersalesOutOrderDetailService aftersalesOutOrderDetailService; + @Autowired + private ISysSalesShippingInformService shippingInformService; + + @Autowired + private ISysSalesOrderService sysSalesOrderService; + @RequiresPermissions("aftersales:aftersalesOutOrder:view") @GetMapping() public String aftersalesOutOrder() @@ -397,4 +412,61 @@ public String addShippingDevicesOne(@RequestParam("outOrderDetailId") Long outOr } + + /** + * 确认验收 + */ + @GetMapping("/aftersalesConfirmCheck/{outOrderId}") + public String aftersalesConfirmCheck(@PathVariable("outOrderId") Long outOrderId, ModelMap mmap) + { + + AftersalesOutOrder aftersalesOutOrder = aftersalesOutOrderService.selectAftersalesOutOrderById(outOrderId); + String outOrderCode = aftersalesOutOrder.getOutOrderCode(); + + SysSalesShippingInform sysSalesShippingInform = shippingInformService.selectSysSalesShippingInformByCode(outOrderCode); + + List sysSalesOrders = new ArrayList<>(); + String salesOrderCode = sysSalesShippingInform.getSalesOrderCode(); + + List salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + + sysSalesOrders = sysSalesOrderService.selectSysSalesOrderListByCodeList(salesOrderCodes); + mmap.put("sysSalesOrders", sysSalesOrders); + mmap.put("sysSalesShippingInform", sysSalesShippingInform); + return prefix + "/aftersalesConfirmCheck"; + } + + /** + * 修改保存确认验收 + */ + @RequiresPermissions("aftersales:aftersalesOutOrder:aftersalesConfirmCheck") + @Log(title = "销售确认收货", businessType = BusinessType.UPDATE) + @PostMapping("/aftersalesConfirmCheck") + @ResponseBody + public AjaxResult aftersalesConfirmCheckSave(@RequestBody SysSalesShippingInform sysSalesShippingInform) + { + return toAjax(aftersalesOutOrderService.updateAftersalesConfirmCheck(sysSalesShippingInform)); + } + + + + /** + * 确认验收 物料信息详情 + */ + @PostMapping("/aftersalesConfirmCheckDetailList") + @ResponseBody + public TableDataInfo aftersalesConfirmCheckDetailList(SysSalesShippingInform sysSalesShippingInform) + { + startPage(); + List list = aftersalesOutOrderService.aftersalesConfirmCheckDetailList(sysSalesShippingInform); + return getDataTable(list); + } + + + } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/AfterSalesShippingDevice.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/AfterSalesShippingDevice.java index b05f0e78..ccd2c7fe 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/AfterSalesShippingDevice.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/AfterSalesShippingDevice.java @@ -170,6 +170,9 @@ public class AfterSalesShippingDevice extends BaseEntity private String isConfirmReceivingFlag; + /** 是否确认验收 (0代表是 1代表否) 售后确认验收时使用 */ + private String isConfirmCheckFlag; + //生产开始时间 private Date startMakeTime; @@ -544,6 +547,14 @@ public class AfterSalesShippingDevice extends BaseEntity this.isConfirmReceivingFlag = isConfirmReceivingFlag; } + public String getIsConfirmCheckFlag() { + return isConfirmCheckFlag; + } + + public void setIsConfirmCheckFlag(String isConfirmCheckFlag) { + this.isConfirmCheckFlag = isConfirmCheckFlag; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) @@ -588,6 +599,7 @@ public class AfterSalesShippingDevice extends BaseEntity .append("addShippingDeviceFlag",getAddShippingDeviceFlag()) .append("outOrderCode",getOutOrderCode()) .append("isConfirmReceivingFlag",getIsConfirmReceivingFlag()) + .append("isConfirmCheckFlag",getIsConfirmCheckFlag()) .toString(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ConfirmCheckDetailVo.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ConfirmCheckDetailVo.java new file mode 100644 index 00000000..592c81dd --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/domain/vo/ConfirmCheckDetailVo.java @@ -0,0 +1,19 @@ +package com.ruoyi.aftersales.domain.vo; + +import com.ruoyi.system.domain.SysSalesShippingInformDetail; +import lombok.Data; + +/** +* 收货确认验收Vo类 +* */ +@Data +public class ConfirmCheckDetailVo extends SysSalesShippingInformDetail { + + + /** 出货设备id */ + private String shippingDeviceId; + + /** SN号 */ + private String snCode; + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java index 7d592195..6d96f5f9 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/IAftersalesOutOrderService.java @@ -3,7 +3,9 @@ package com.ruoyi.aftersales.service; import java.util.List; import com.ruoyi.aftersales.domain.AftersalesOutOrder; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; +import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; +import com.ruoyi.system.domain.SysSalesShippingInform; /** * 售后维护设备出库Service接口 @@ -135,4 +137,18 @@ public interface IAftersalesOutOrderService * @return */ List showAddShippingDevicesTwo(AftersalesOutOrder aftersalesOutOrder); + + /** + * 售后确认验收 + * @param sysSalesShippingInform + * @return + */ + int updateAftersalesConfirmCheck(SysSalesShippingInform sysSalesShippingInform); + + /** + * 售后确认验收详情 + * @param sysSalesShippingInform + * @return + */ + List aftersalesConfirmCheckDetailList(SysSalesShippingInform sysSalesShippingInform); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java index 1efbbce8..9566b4c1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/aftersales/service/impl/AftersalesOutOrderServiceImpl.java @@ -5,6 +5,7 @@ import java.util.stream.Collectors; import com.ruoyi.aftersales.domain.AfterSalesShippingDevice; import com.ruoyi.aftersales.domain.AftersalesOutOrderDetail; +import com.ruoyi.aftersales.domain.vo.ConfirmCheckDetailVo; import com.ruoyi.aftersales.domain.vo.SelectShippingDeviceVO; import com.ruoyi.aftersales.mapper.AfterSalesShippingDeviceMapper; import com.ruoyi.aftersales.mapper.AftersalesOutOrderDetailMapper; @@ -12,10 +13,17 @@ import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.system.domain.SysSalesOrder; import com.ruoyi.system.domain.SysSalesShippingInform; +import com.ruoyi.system.domain.SysSalesShippingInformDetail; +import com.ruoyi.system.domain.Vo.ConfirmReceivingDetailVo; +import com.ruoyi.system.mapper.SysSalesOrderMapper; +import com.ruoyi.system.mapper.SysSalesShippingInformDetailMapper; import com.ruoyi.system.mapper.SysSalesShippingInformMapper; import com.ruoyi.warehouse.domain.WarehouseOutOrder; import com.ruoyi.warehouse.mapper.WarehouseOutOrderMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.aftersales.mapper.AftersalesOutOrderMapper; @@ -25,12 +33,15 @@ import com.ruoyi.common.core.text.Convert; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import static com.ruoyi.common.config.datasource.DynamicDataSourceContextHolder.log; + /** * 售后维护设备出库Service业务层处理 * * @author 刘晓旭 * @date 2024-11-06 */ +@Slf4j @Service public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService { @@ -49,6 +60,12 @@ public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService @Autowired private SysSalesShippingInformMapper shippingInformMapper; + @Autowired + private SysSalesShippingInformDetailMapper shippingInformDetailMapper; + + @Autowired + private SysSalesOrderMapper sysSalesOrderMapper; + /** * 查询售后维护设备出库 * @@ -560,4 +577,300 @@ public class AftersalesOutOrderServiceImpl implements IAftersalesOutOrderService } } + + /** + * 售后确认验收 + * @param sysSalesShippingInform + * @return + */ + @Transactional(rollbackFor = Exception.class) + @Override + public int updateAftersalesConfirmCheck(SysSalesShippingInform sysSalesShippingInform) { + + String loginName = ShiroUtils.getLoginName(); + + //从数据库中查 + SysSalesShippingInform oldsSalesShippingInform = shippingInformMapper.selectSysSalesShippingInformByCode(sysSalesShippingInform.getOutOrderCode()); + + //没有出货设备Id的是否全部验收 + Integer allWithoutCheckFlag = 0; + //有出货设备Id的是否全部验收 + Integer allWithCheckFlag = 0; + + List shippingInformDetailList = sysSalesShippingInform.getShippingInformDetailList(); + + + List tempDetails = shippingInformDetailList.stream() + .map(detail -> shippingInformDetailMapper.selectSysSalesShippingInformDetailById(detail.getShippingInformDetailId())) + .collect(Collectors.toList()); + + // 防止已经完成验收,但是从前端传不过来数据,导致状态没有更新 + for (int i = 0; i < shippingInformDetailList.size(); i++) { + SysSalesShippingInformDetail detail = shippingInformDetailList.get(i); + SysSalesShippingInformDetail tempDetail = tempDetails.get(i); + + if (StringUtils.isNotEmpty(detail.getShippingDeviceId())) { + if (Objects.equals(tempDetail.getHasCheckNum(), tempDetail.getThisShippingNum())) { + allWithCheckFlag = 1; + } + } else { + if (Objects.equals(tempDetail.getHasCheckNum(), tempDetail.getThisShippingNum())) { + allWithoutCheckFlag = 1; + } + } + } + + //过滤掉每个已收货数为0的数据,因为其不可验收 + shippingInformDetailList = shippingInformDetailList.stream() + .filter(item -> item.getHasReceivingNum() != 0) + .collect(Collectors.toList()); + + //还要过滤掉已收货数等于已验收数的数据,因为其已验收 + shippingInformDetailList = shippingInformDetailList.stream() + .filter(item -> !Objects.equals(item.getHasReceivingNum(), item.getHasCheckNum())) + .collect(Collectors.toList()); + +// // 合并过滤操作 +// shippingInformDetailList = shippingInformDetailList.stream() +// .filter(item -> item.getHasReceivingNum() != 0 && !Objects.equals(item.getHasReceivingNum(), item.getHasCheckNum())) +// .collect(Collectors.toList()); + + boolean anyNullThisCheckNum = shippingInformDetailList.stream().anyMatch(item -> item.getThisCheckNum() == null); + if (anyNullThisCheckNum){ + throw new BusinessException("请填写每个本次验收数"); + } + + // 分组:有 shippingDeviceId 和没有 shippingDeviceId + Map> groupedDetails = shippingInformDetailList.stream() + .collect(Collectors.partitioningBy(detail -> detail.getShippingDeviceId() != null)); + + List withShippingDeviceIdList = groupedDetails.getOrDefault(true, new ArrayList<>()); + List withoutShippingDeviceIdList = groupedDetails.getOrDefault(false, new ArrayList<>()); + + if (!CollectionUtils.isEmpty(withoutShippingDeviceIdList)){ + // 处理没有出货设备ID的数据 + allWithoutCheckFlag = processWithoutShippingDeviceId(withoutShippingDeviceIdList, allWithoutCheckFlag); + } + + if (!CollectionUtils.isEmpty(withShippingDeviceIdList)){ + // 处理有出货设备ID的数据 + allWithCheckFlag = processWithShippingDeviceId(withShippingDeviceIdList, allWithCheckFlag); + } + + + + + //更新收货维护设备出库单数据 + AftersalesOutOrder aftersalesOutOrder = new AftersalesOutOrder(); + aftersalesOutOrder.setOutOrderCode(sysSalesShippingInform.getOutOrderCode()); + + + String salesOrderCode = oldsSalesShippingInform.getSalesOrderCode(); + + List salesOrderCodes = new ArrayList<>(); + + if (StringUtils.isNotEmpty(salesOrderCode)){ + String[] splitSalesOrderCode = salesOrderCode.split(","); + salesOrderCodes = Arrays.asList(splitSalesOrderCode); + } + + // List sysSalesOrders = sysSalesOrderMapper.selectSysSalesOrderListByCodeList(salesOrderCodes); + + //设置为全部验收 + if (allWithoutCheckFlag == 1 && allWithCheckFlag == 1){ + aftersalesOutOrder.setWarehouseOutStatus("12"); + sysSalesShippingInform.setWarehouseOutStatus("12"); +// sysSalesOrders.forEach(item->{ +// item.setDeliveryStatus("8");//全部验收 +// }); + }else { + //设置为部分验收 + aftersalesOutOrder.setWarehouseOutStatus("11"); +// sysSalesOrders.forEach(item->{ +// item.setDeliveryStatus("7");//部分验收 +// }); + } + +// for (SysSalesOrder sysSalesOrder : sysSalesOrders) { +// sysSalesOrder.setUpdateTime(new Date()); +// sysSalesOrder.setUpdateBy(loginName); +// int updateSysSalesOrderResult = sysSalesOrderMapper.updateSysSalesOrderBySalesOrderCode(sysSalesOrder); +// if (updateSysSalesOrderResult <= 0){ +// throw new BusinessException("更新销售订单数据失败"); +// } +// } + sysSalesShippingInform.setSalesOrderCode(oldsSalesShippingInform.getSalesOrderCode()); + int updateShippingInformResult = shippingInformMapper.updateSysSalesShippingInformByOutOrderCode(sysSalesShippingInform); + if (updateShippingInformResult <= 0){ + throw new BusinessException("更新销售出库单数据失败"); + } + + + aftersalesOutOrder.setUpdateBy(loginName); + aftersalesOutOrder.setUpdateTime(new Date()); + + int updateAftersalesOutOrderResult = aftersalesOutOrderMapper.updateAftersalesOutOrderByOutOrderCode(aftersalesOutOrder); + if (updateAftersalesOutOrderResult <= 0){ + throw new BusinessException("更新售后出库单数据失败"); + } + + return updateAftersalesOutOrderResult; + } + + + private Integer processWithoutShippingDeviceId(List withoutShippingDeviceIdList,Integer allWithoutCheckFlag) { + + + + for (SysSalesShippingInformDetail sysSalesShippingInformDetail : withoutShippingDeviceIdList) { + Long shippingInformDetailId = sysSalesShippingInformDetail.getShippingInformDetailId(); + SysSalesShippingInformDetail tempShippingInformDetail = shippingInformDetailMapper.selectSysSalesShippingInformDetailById(shippingInformDetailId); + + if (tempShippingInformDetail.getHasCheckNum() == null || tempShippingInformDetail.getHasCheckNum() == 0) { + sysSalesShippingInformDetail.setHasCheckNum(sysSalesShippingInformDetail.getThisCheckNum()); + } else { + sysSalesShippingInformDetail.setHasCheckNum(tempShippingInformDetail.getHasCheckNum() + sysSalesShippingInformDetail.getThisCheckNum()); + } + + if (sysSalesShippingInformDetail.getHasCheckNum() > sysSalesShippingInformDetail.getHasReceivingNum()) { + throw new BusinessException("已验收数和本次验收数之和不能大于已收货数"); + } + sysSalesShippingInformDetail.setThisCheckNum(null); + + if (Objects.equals(tempShippingInformDetail.getThisShippingNum(), sysSalesShippingInformDetail.getHasCheckNum())){ + allWithoutCheckFlag = 1; + } + + int updateShippingInformDetailResult = shippingInformDetailMapper.updateSysSalesShippingInformDetail(sysSalesShippingInformDetail); + if (updateShippingInformDetailResult <= 0) { + throw new BusinessException("更新销售出货通知单详情数据失败"); + } + } + return allWithoutCheckFlag; + } + + private Integer processWithShippingDeviceId(List withShippingDeviceIdList,Integer allWithCheckFlag) { + String loginName = ShiroUtils.getLoginName(); + +// List filterShippingDeviceIdList = withShippingDeviceIdList.stream() +// .filter(item -> item.getHasCheckNum() != 1) +// .collect(Collectors.toList()); + + // 判断是否有收货数量大于1,因为收货数量要么为0要么为1 + boolean anyThisCheckNum = withShippingDeviceIdList.stream().anyMatch(item -> item.getThisCheckNum() > 1); + if (anyThisCheckNum){ + throw new BusinessException("本次验收数量只能为0或1"); + } + + for (SysSalesShippingInformDetail sysSalesShippingInformDetail : withShippingDeviceIdList) { + String shippingDeviceId = sysSalesShippingInformDetail.getShippingDeviceId(); + AfterSalesShippingDevice afterSalesShippingDevice = afterSalesShippingDeviceMapper.selectAfterSalesShippingDeviceByShippingDeviceId(shippingDeviceId); + if (sysSalesShippingInformDetail.getThisCheckNum() == 1){ + afterSalesShippingDevice.setIsConfirmCheckFlag("0"); //设置已经验收 + } + afterSalesShippingDevice.setUpdateBy(loginName); + afterSalesShippingDevice.setUpdateTime(new Date()); + int updateShippingDeviceResult = afterSalesShippingDeviceMapper.updateAfterSalesShippingDevice(afterSalesShippingDevice); + if (updateShippingDeviceResult <= 0){ + throw new BusinessException("更新出货设备数据失败"); + } + } + + + Integer allCheckNum = withShippingDeviceIdList.stream() + .mapToInt(SysSalesShippingInformDetail::getThisCheckNum) + .sum(); + + SysSalesShippingInformDetail sysSalesShippingInformDetail = withShippingDeviceIdList.get(0); + Long shippingInformDetailId = sysSalesShippingInformDetail.getShippingInformDetailId(); + SysSalesShippingInformDetail tempShippingInformDetail = shippingInformDetailMapper.selectSysSalesShippingInformDetailById(shippingInformDetailId); + + if (tempShippingInformDetail.getHasCheckNum() == null) { + tempShippingInformDetail.setHasCheckNum(allCheckNum); + } else { + tempShippingInformDetail.setHasCheckNum(tempShippingInformDetail.getHasCheckNum() + allCheckNum); + } + + if (Objects.equals(tempShippingInformDetail.getThisShippingNum(), tempShippingInformDetail.getHasCheckNum())){ + allWithCheckFlag = 1; + } + + int updateShippingInformDetailResult = shippingInformDetailMapper.updateSysSalesShippingInformDetail(tempShippingInformDetail); + if (updateShippingInformDetailResult <= 0) { + throw new BusinessException("更新销售出货通知单详情数据失败"); + } + return allWithCheckFlag; + } + + + + /** + * 售后确认验收详情 + * @param sysSalesShippingInform + * @return + */ + @Override + public List aftersalesConfirmCheckDetailList(SysSalesShippingInform sysSalesShippingInform) { + List confirmCheckDetailVos = new ArrayList<>(); + String outOrderCode = sysSalesShippingInform.getOutOrderCode(); + List sysSalesShippingInformDetails = shippingInformDetailMapper.selectSysSalesShippingInformDetailByCode(outOrderCode); + if (CollectionUtils.isEmpty(sysSalesShippingInformDetails)){ + log.warn("确认收货物料详情为空,出库单号为:{}",outOrderCode); + } + for (SysSalesShippingInformDetail sysSalesShippingInformDetail : sysSalesShippingInformDetails) { + ConfirmCheckDetailVo confirmCheckDetailVo = new ConfirmCheckDetailVo(); + BeanUtils.copyProperties(sysSalesShippingInformDetail,confirmCheckDetailVo); + confirmCheckDetailVos.add(confirmCheckDetailVo); + } + + + // 过滤 materialType 为 chcpsb 的设备 + List chcpsbDevices = confirmCheckDetailVos.stream() + .filter(item -> "chcpsb".equals(item.getMaterialType())) + .collect(Collectors.toList()); + + // 存储最终要保留的 chcpsb 设备 + List validChcpsbDevices = new ArrayList<>(); + + for (ConfirmCheckDetailVo chcpsbDevice : chcpsbDevices) { + String materialNo = chcpsbDevice.getMaterialNo(); + AfterSalesShippingDevice afterSalesShippingDevice = new AfterSalesShippingDevice(); + afterSalesShippingDevice.setMaterialNo(materialNo); + afterSalesShippingDevice.setOutOrderCode(outOrderCode); + + List afterSalesShippingDevices = afterSalesShippingDeviceMapper.selectHasAddShippingDevice(afterSalesShippingDevice); + + if (!CollectionUtils.isEmpty(afterSalesShippingDevices)) { + for (AfterSalesShippingDevice device : afterSalesShippingDevices) { + ConfirmCheckDetailVo detailVo = new ConfirmCheckDetailVo(); + BeanUtils.copyProperties(chcpsbDevice, detailVo); + detailVo.setShippingDeviceId(device.getShippingDeviceId()); + detailVo.setSnCode(device.getSnCode()); + detailVo.setThisShippingNum(1); + detailVo.setHasOutOrderNum(1); + if ("0".equals(device.getIsConfirmReceivingFlag())){ + detailVo.setHasReceivingNum(1); + }else { + detailVo.setHasReceivingNum(0); + } + if ("0".equals(device.getIsConfirmCheckFlag())){ + detailVo.setHasCheckNum(1); + }else { + detailVo.setHasCheckNum(0); + } + validChcpsbDevices.add(detailVo); + } + } + } + + // 从 ConfirmCheckDetailVos 中移除没有对应 AfterSalesShippingDevice 的 chcpsb 设备 + confirmCheckDetailVos = confirmCheckDetailVos.stream() + .filter(item -> !"chcpsb".equals(item.getMaterialType()) || validChcpsbDevices.contains(item)) + .collect(Collectors.toList()); + + // 添加有效的 chcpsb 设备 + confirmCheckDetailVos.addAll(validChcpsbDevices); + + return confirmCheckDetailVos; + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java index 9fa15041..0afb89dc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/ISysSalesShippingInformService.java @@ -161,4 +161,8 @@ public interface ISysSalesShippingInformService List confirmReceivingDetailList(SysSalesShippingInform sysSalesShippingInform); + /** + * 根据出库单号查询销售出货通知单 + * */ + SysSalesShippingInform selectSysSalesShippingInformByCode(String outOrderCode); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java index 7fdf3499..5e05004f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/system/service/impl/SysSalesShippingInformServiceImpl.java @@ -112,6 +112,15 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor return sysSalesShippingInformMapper.selectSysSalesShippingInformList(sysSalesShippingInform); } + + /** + * 根据出库单号查询销售出货通知单 + * */ + @Override + public SysSalesShippingInform selectSysSalesShippingInformByCode(String outOrderCode) { + return sysSalesShippingInformMapper.selectSysSalesShippingInformByCode(outOrderCode); + } + /** * 新增销售出货通知 * @@ -389,6 +398,11 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor List shippingInformDetailList = sysSalesShippingInform.getShippingInformDetailList(); + //过滤掉每个已收货数等于本次出货数的数据 + shippingInformDetailList = shippingInformDetailList.stream() + .filter(item -> !Objects.equals(item.getThisShippingNum(), item.getHasReceivingNum())) + .collect(Collectors.toList()); + boolean anyNullThisReceivingNum = shippingInformDetailList.stream().anyMatch(item -> item.getThisReceivingNum() == null); if (anyNullThisReceivingNum){ throw new BusinessException("请填写每个本次收货数"); @@ -401,11 +415,15 @@ public class SysSalesShippingInformServiceImpl implements ISysSalesShippingInfor List withShippingDeviceIdList = groupedDetails.getOrDefault(true, new ArrayList<>()); List withoutShippingDeviceIdList = groupedDetails.getOrDefault(false, new ArrayList<>()); - // 处理没有出货设备ID的数据 - processWithoutShippingDeviceId(withoutShippingDeviceIdList); + if (!CollectionUtils.isEmpty(withoutShippingDeviceIdList)){ + // 处理没有出货设备ID的数据 + processWithoutShippingDeviceId(withoutShippingDeviceIdList); + } - // 处理有出货设备ID的数据 - processWithShippingDeviceId(withShippingDeviceIdList); + if (!CollectionUtils.isEmpty(withShippingDeviceIdList)){ + // 处理有出货设备ID的数据 + processWithShippingDeviceId(withShippingDeviceIdList); + } //更新收货维护设备出库单数据 AftersalesOutOrder aftersalesOutOrder = new AftersalesOutOrder(); diff --git a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml index 7edd5296..57f3dbaf 100644 --- a/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/aftersales/AfterSalesShippingDeviceMapper.xml @@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -57,7 +58,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select shipping_device_code, shipping_device_id, make_no,sales_order_code, out_order_code, material_no, material_photoUrl, material_name, material_type, material_class, material_model_code, material_unit, material_brand, material_describe, device_model_code, device_running_number, make_photoUrl, sn_code, aftersales_photoUrl, factory_date, guarantee_period, guarantee_period_flag, lock_date, lock_date_flag, wastage_expire_date, wastage_expire_flag, component_guarantee_date, component_guarantee_flag, engineer_name, salesman_name, make_name,customer_id, customer_name, maintain_order_code, maintain_time, create_by, create_time, update_by, update_time, - add_shipping_device_flag, is_confirm_receiving_flag, start_make_time, end_make_time, add_process_issue_record_flag,quality_status from aftersales_shipping_device + add_shipping_device_flag,is_confirm_receiving_flag, is_confirm_check_flag,start_make_time, end_make_time, add_process_issue_record_flag,quality_status from aftersales_shipping_device + + +
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+ + + + +
+
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html index 4d5ad8a5..155d7706 100644 --- a/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html +++ b/ruoyi-admin/src/main/resources/templates/aftersales/aftersalesOutOrder/aftersalesOutOrder.html @@ -70,8 +70,9 @@ var maintenanceEquipmentOneFlag = [[${@permission.hasPermi('aftersales:aftersalesOutOrder:maintenanceEquipmentOne')}]]; var maintenanceEquipmentTwoFlag = [[${@permission.hasPermi('aftersales:aftersalesOutOrder:maintenanceEquipmentTwo')}]]; - var confirmReceivingGoodsFlag = [[${@permission.hasPermi('aftersales:aftersalesOutOrder:confirmReceivingGoods')}]]; - var confirmCheckGoodsFlag = [[${@permission.hasPermi('aftersales:aftersalesOutOrder:confirmCheckGoods')}]]; + + var aftersalesConfirmCheckFlag = [[${@permission.hasPermi('aftersales:aftersalesOutOrder:aftersalesConfirmCheck')}]]; + var warehouseOutStatusDatas = [[${@dict.getType('warehouse_out_status')}]]; var warehouseOrderTypeDatas = [[${@dict.getType('warehouse_order_type')}]]; @@ -196,12 +197,10 @@ if (row.warehouseOutStatus== "3"){ actions.push('维护设备2 '); } - if (row.warehouseOutStatus=="7"){ - actions.push('确认收货 '); + //待验收和部分验收都能继续验收 + if (row.warehouseOutStatus=="10" || row.warehouseOutStatus=="11"){ + actions.push('确认验收 '); } - // if (row.warehouseOutStatus=="10"){ - // actions.push('确认验收 '); - // } var actionLinks = actions.join(''); return $.table.dropdownToggle(actionLinks); @@ -227,6 +226,13 @@ } + /*售后确认验收*/ + function aftersalesConfirmCheck(outOrderId) { + var url = ctx + 'aftersales/aftersalesOutOrder/aftersalesConfirmCheck/'+outOrderId; + $.modal.open("售后确认验收",url); + } + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/confirmReceiving.html b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/confirmReceiving.html index 4f60d711..0a98efa2 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/confirmReceiving.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/confirmReceiving.html @@ -5,9 +5,6 @@ -
diff --git a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html index 63943ed4..6e6bf075 100644 --- a/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html +++ b/ruoyi-admin/src/main/resources/templates/system/salesShippingInform/salesShippingInform.html @@ -326,10 +326,6 @@ if(row.warehouseOutStatus == '9'){ actions.push('确认收货 '); } - if(row.warehouseOutStatus == '10' || row.warehouseOutStatus == '11'){ - actions.push('确认验收 '); - } - var actionLinks = actions.join(''); return $.table.dropdownToggle(actionLinks); } @@ -361,13 +357,6 @@ $.modal.open("确认收货",url); } - - //客户验收 - function customerCheckGoods(shippingInformId){ - var url = prefix +'/customerCheckGoods/' + shippingInformId; - $.modal.open("客户验收",url); - } - //详情 function customerCheckGoodsDetail(shippingInformId){ var url = prefix +'/customerCheckGoodsDetail/' + shippingInformId;