From 1d5f8803e6ba76928a71ea0c85ca26f7dd846b50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com> Date: Fri, 23 Aug 2024 16:20:38 +0800 Subject: [PATCH] =?UTF-8?q?[feat]=20=E5=93=81=E8=B4=A8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=20=E9=80=80=E6=8D=A2=E8=B4=A7=E5=8D=95=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=80=80=E6=8D=A2=E8=B4=A7controller?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=93=81=E8=B4=A8=E7=AE=A1=E7=90=86=E9=80=80=E6=8D=A2?= =?UTF-8?q?=E8=B4=A7=E5=8D=95service=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=BE=AA?= =?UTF-8?q?=E7=8E=AF=E5=A4=84=E7=90=86=E5=89=8D=E7=AB=AF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93=EF=BC=9B=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=94=9F=E6=88=90=E9=80=80=E6=8D=A2=E8=B4=A7?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E5=AF=B9=E8=B1=A1service=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=92=8C=E7=94=9F=E6=88=90=E9=80=80=E6=8D=A2=E8=B4=A7?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E5=8D=95=E8=AF=A6=E6=83=85=E5=AF=B9=E8=B1=A1?= =?UTF-8?q?service=E6=8E=A5=E5=8F=A3=EF=BC=9B=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E5=85=A5=E5=BA=93=E5=90=8E=E9=80=80=E8=B4=A7?= =?UTF-8?q?-=E9=80=89=E6=8B=A9=E4=BE=9B=E5=BA=94=E5=95=86service=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8C=E6=9B=B4=E6=96=B0=E4=BE=9B=E5=BA=94=E5=95=86?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=90=8C=E6=97=B6=E6=9B=B4=E6=96=B0=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=8D=95=E4=BE=9B=E5=BA=94=E5=95=86=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E4=BF=9D=E5=AD=98=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E5=89=8D=E9=80=80=E8=B4=A7-=E7=A1=AE=E8=AE=A4?= =?UTF-8?q?=E6=94=B6=E8=B4=A7service=E6=8E=A5=E5=8F=A3=EF=BC=8C=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E9=80=80=E6=8D=A2=E8=B4=A7=E8=AF=A6=E6=83=85=E6=94=B6?= =?UTF-8?q?=E8=B4=A7=E7=8A=B6=E6=80=81=E8=AE=BE=E7=BD=AE=E9=80=80=E6=8D=A2?= =?UTF-8?q?=E8=B4=A7=E5=8D=95=E6=94=B6=E8=B4=A7=E7=8A=B6=E6=80=81=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../QualityRefundsExchangesController.java | 6 +- .../QualityRefundsExchangesServiceImpl.java | 193 +++++++++++++++--- 2 files changed, 165 insertions(+), 34 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java index 770b6054..b47cccbf 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/controller/QualityRefundsExchangesController.java @@ -90,10 +90,10 @@ public class QualityRefundsExchangesController extends BaseController /** * 新增品质管理退换货单 */ - @GetMapping("/add/{refundsExchangesCode}") - public String add(@PathVariable("refundsExchangesCode") String refundsExchangesCode,ModelMap mmap) + @GetMapping("/add") + public String add(ModelMap mmap) { - mmap.put("refundsExchangesCode", refundsExchangesCode); +// mmap.put("refundsExchangesCode", refundsExchangesCode); return prefix + "/add"; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java index 7a2baa4c..ccdd9f66 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/service/impl/QualityRefundsExchangesServiceImpl.java @@ -2,15 +2,24 @@ package com.ruoyi.quality.service.impl; import java.text.DecimalFormat; import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Date; import java.util.List; +import com.ruoyi.common.core.redis.RedisCache; 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.quality.domain.QualityRefundsExchangesDetail; +import com.ruoyi.quality.domain.QualityRefundsExchangesUnqualified; import com.ruoyi.quality.mapper.QualityRefundsExchangesDetailMapper; +import com.ruoyi.quality.mapper.QualityRefundsExchangesUnqualifiedMapper; +import com.ruoyi.storehouse.domain.WarehousingInInfo; +import com.ruoyi.warehouse.domain.WarehouseStorageOrder; +import com.ruoyi.warehouse.domain.WarehouseStorageOrderDetail; +import com.ruoyi.warehouse.mapper.WarehouseStorageOrderDetailMapper; +import com.ruoyi.warehouse.mapper.WarehouseStorageOrderMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -36,6 +45,21 @@ public class QualityRefundsExchangesServiceImpl implements IQualityRefundsExchan @Autowired private QualityRefundsExchangesDetailMapper refundsExchangesDetailMapper; + @Autowired + private QualityRefundsExchangesUnqualifiedMapper unqualifiedMapper; + + @Autowired + private WarehouseStorageOrderMapper warehouseStorageOrderMapper; + + @Autowired + private WarehouseStorageOrderDetailMapper warehouseStorageOrderDetailMapper; + + @Autowired + private WarehouseStorageOrderDetailMapper storageOrderDetailMapper; + + @Autowired + private RedisCache redisCache; + /** * 查询品质管理退换货单 * @@ -70,36 +94,111 @@ public class QualityRefundsExchangesServiceImpl implements IQualityRefundsExchan public int insertQualityRefundsExchanges(QualityRefundsExchanges qualityRefundsExchanges) { - String refundsExchangesCode = qualityRefundsExchanges.getRefundsExchangesCode(); + String refundsExchangesCode = redisCache.generateBillNo("THH"); + qualityRefundsExchanges.setRefundsExchangesCode(refundsExchangesCode); - if (StringUtils.isEmpty(refundsExchangesCode)){ - log.warn("退换货单号为空:{}",refundsExchangesCode); - } String loginName = ShiroUtils.getLoginName(); + int exchangeSum = 0; List refundsExchangesDetails = qualityRefundsExchanges.getRefundsExchangesDetails(); if (StringUtils.isEmpty(refundsExchangesDetails)){ - log.warn("物料数据为空:{}",qualityRefundsExchanges.getRefundsExchangesDetails()); + log.warn("物料数据为空:{}",qualityRefundsExchanges.getRefundsExchangesCode()); } for (QualityRefundsExchangesDetail tempDetail : refundsExchangesDetails) { - QualityRefundsExchangesDetail refundsExchangesDetail = new QualityRefundsExchangesDetail(); - refundsExchangesDetail.setRefundsExchangesCode(refundsExchangesCode); - refundsExchangesDetail.setDeliveryInspectionTime(qualityRefundsExchanges.getDeliveryInspectionTime()); - refundsExchangesDetail.setQualityRemark(qualityRefundsExchanges.getQualityRemark()); - refundsExchangesDetail.setMaterialNo(tempDetail.getMaterialNo()); - refundsExchangesDetail.setMaterialName(tempDetail.getMaterialName()); - refundsExchangesDetail.setMaterialBrand(tempDetail.getMaterialBrand()); - refundsExchangesDetail.setMaterialDescribe(tempDetail.getMaterialDescribe()); - refundsExchangesDetail.setMaterialPhotourl(tempDetail.getMaterialPhotourl()); - refundsExchangesDetail.setMaterialType(tempDetail.getMaterialType()); - refundsExchangesDetail.setMaterialProcessMethod(tempDetail.getMaterialProcessMethod()); - refundsExchangesDetail.setMaterialUnit(tempDetail.getMaterialUnit()); - refundsExchangesDetail.setCreateBy(loginName); - refundsExchangesDetail.setCreateTime(new Date()); - refundsExchangesDetailMapper.insertQualityRefundsExchangesDetail(refundsExchangesDetail); + tempDetail.setRefundsExchangesCode(refundsExchangesCode); + tempDetail.setDeliveryInspectionTime(qualityRefundsExchanges.getDeliveryInspectionTime()); + tempDetail.setQualityRemark(qualityRefundsExchanges.getQualityRemark()); + tempDetail.setQualityUnqualifiedNum(tempDetail.getRefundsExchangesNum()); + + exchangeSum += tempDetail.getRefundsExchangesNum(); + tempDetail.setCreateBy(loginName); + tempDetail.setCreateTime(DateUtils.getNowDate()); + refundsExchangesDetailMapper.insertQualityRefundsExchangesDetail(tempDetail); + List unqualifiedList = tempDetail.getRefundsExchangesUnqualifieds(); + if(StringUtils.isEmpty(unqualifiedList)){ + log.warn("不合格分类数据为空:{}",tempDetail.getRefundsExchangesCode()); + }else{ + for (QualityRefundsExchangesUnqualified unqualified: unqualifiedList) { + unqualified.setRefundsExchangesCode(refundsExchangesCode); + unqualified.setMaterialNo(tempDetail.getMaterialNo()); + unqualified.setMaterialName(tempDetail.getMaterialName()); + unqualified.setCreateBy(loginName); + unqualified.setCreateTime(DateUtils.getNowDate()); + unqualifiedMapper.insertQualityRefundsExchangesUnqualified(unqualified); + } + } } + qualityRefundsExchanges.setMaterialTotal(refundsExchangesDetails.size()); + qualityRefundsExchanges.setNumTotal(exchangeSum); + qualityRefundsExchanges.setCreateBy(loginName); + qualityRefundsExchanges.setCreateTime(DateUtils.getNowDate()); + qualityRefundsExchanges.setQualityReturnNode("1"); + qualityRefundsExchanges.setRefundsExchangesStatus("0"); + + +// 生成入库单 + WarehouseStorageOrder warehouseStorageOrder = generateWarehouseStorageOrder(qualityRefundsExchanges); + warehouseStorageOrder.setWarehouseStorageCode(redisCache.generateBillNo("RK")); + warehouseStorageOrderMapper.insertWarehouseStorageOrder(warehouseStorageOrder); + List warehouseStorageOrderDetails = createWarehouseStorageDetail(qualityRefundsExchanges,warehouseStorageOrder.getWarehouseStorageCode()); + warehouseStorageOrderMapper.batchWarehouseStorageOrderDetail(warehouseStorageOrderDetails); + + qualityRefundsExchanges.setQualityWarehouseStatus("0"); + qualityRefundsExchanges.setInStorageCode(warehouseStorageOrder.getWarehouseStorageCode()); + qualityRefundsExchangesMapper.insertQualityRefundsExchanges(qualityRefundsExchanges); return 1; } - +// 生成退换货入库单对象 + public WarehouseStorageOrder generateWarehouseStorageOrder(QualityRefundsExchanges qualityRefundsExchanges){ + WarehouseStorageOrder warehouseStorageOrder = new WarehouseStorageOrder(); + warehouseStorageOrder.setRelatedOrderCode(qualityRefundsExchanges.getRefundsExchangesCode()); + warehouseStorageOrder.setWarehouseStorageStatus("2"); + warehouseStorageOrder.setWarehouseStorageType("3"); + warehouseStorageOrder.setWarehouseOrderType("2"); + warehouseStorageOrder.setWarehouseDeptType("0"); + warehouseStorageOrder.setWarehouseQualityStatus("2"); + warehouseStorageOrder.setActualArrivedNum(qualityRefundsExchanges.getNumTotal()); + warehouseStorageOrder.setNotifyArrivedNum(qualityRefundsExchanges.getNumTotal()); + warehouseStorageOrder.setStorageNum(qualityRefundsExchanges.getNumTotal()); + warehouseStorageOrder.setQualityQualifiedNum(0); + warehouseStorageOrder.setQualityUnqualifiedNum(qualityRefundsExchanges.getNumTotal()); + warehouseStorageOrder.setDeliveryInspectionTime(qualityRefundsExchanges.getDeliveryInspectionTime()); + warehouseStorageOrder.setQualityTime(qualityRefundsExchanges.getDeliveryInspectionTime()); + warehouseStorageOrder.setCreateBy(ShiroUtils.getLoginName()); + warehouseStorageOrder.setCreateTime(DateUtils.getNowDate()); + return warehouseStorageOrder; + } +// 生成退换货入库单详情对象 + public List createWarehouseStorageDetail(QualityRefundsExchanges qualityRefundsExchanges,String warehouseStorageCode){ + List detailList = new ArrayList<>(); + List exchangesDetails = qualityRefundsExchanges.getRefundsExchangesDetails(); + if(StringUtils.isEmpty(exchangesDetails)){ + log.warn("退换货详情物料数据为空:{}",qualityRefundsExchanges.getRefundsExchangesCode()); + }else { + for (QualityRefundsExchangesDetail exchangeDetail:exchangesDetails) { + WarehouseStorageOrderDetail warehouseStorageOrderDetail = new WarehouseStorageOrderDetail(); + warehouseStorageOrderDetail.setWarehouseStorageCode(warehouseStorageCode); + warehouseStorageOrderDetail.setRelatedOrderCode(qualityRefundsExchanges.getRefundsExchangesCode()); + warehouseStorageOrderDetail.setWarehouseStorageStatus("2"); + warehouseStorageOrderDetail.setWarehouseStorageType("3"); + warehouseStorageOrderDetail.setWarehouseOrderType("2"); + warehouseStorageOrderDetail.setWarehouseDeptType("0"); + warehouseStorageOrderDetail.setMaterialNo(exchangeDetail.getMaterialNo()); + warehouseStorageOrderDetail.setMaterialName(exchangeDetail.getMaterialName()); + warehouseStorageOrderDetail.setMaterialType(exchangeDetail.getMaterialType()); + warehouseStorageOrderDetail.setMaterialPhotourl(exchangeDetail.getMaterialPhotourl()); + warehouseStorageOrderDetail.setMaterialBrand(exchangeDetail.getMaterialBrand()); + warehouseStorageOrderDetail.setMaterialUnit(exchangeDetail.getMaterialUnit()); + warehouseStorageOrderDetail.setMaterialDescribe(exchangeDetail.getMaterialDescribe()); + warehouseStorageOrderDetail.setMaterialProcessMethod(exchangeDetail.getMaterialProcessMethod()); + warehouseStorageOrderDetail.setMaterialDeptType("0"); + warehouseStorageOrderDetail.setRefundsExchangesNum(exchangeDetail.getRefundsExchangesNum()); + warehouseStorageOrderDetail.setCreateBy(ShiroUtils.getLoginName()); + warehouseStorageOrderDetail.setCreateTime(DateUtils.getNowDate()); + detailList.add(warehouseStorageOrderDetail); + } + } + return detailList; + } /** * 修改品质管理退换货单 * @@ -192,24 +291,40 @@ public class QualityRefundsExchangesServiceImpl implements IQualityRefundsExchan if (StringUtils.isEmpty(refundsExchangesDetails)){ log.warn("退款换货单[{}]无关联的物料详情信息", qualityRefundsExchanges.getRefundsExchangesCode()); } - + List warehouseStorageOrderDetailList = warehouseStorageOrderDetailMapper.selectStorageOrderDetailListByCode(qualityRefundsExchanges.getInStorageCode()); + if (StringUtils.isEmpty(warehouseStorageOrderDetailList)){ + log.warn("退款换货单[{}]无关联的入库单详情信息", qualityRefundsExchanges.getRefundsExchangesCode()); + } int updateRows = 0; for (QualityRefundsExchangesDetail refundsExchangesDetail : refundsExchangesDetails) { - refundsExchangesDetail.setRefundsExchangesCode(qualityRefundsExchanges.getRefundsExchangesCode()); - refundsExchangesDetail.setDeliveryInspectionTime(qualityRefundsExchanges.getDeliveryInspectionTime()); - refundsExchangesDetail.setQualityRemark(qualityRefundsExchanges.getQualityRemark()); + refundsExchangesDetail.setUpdateBy(loginName); - refundsExchangesDetail.setUpdateTime(new Date()); + refundsExchangesDetail.setUpdateTime(DateUtils.getNowDate()); + for (WarehouseStorageOrderDetail storageOrderDetail:warehouseStorageOrderDetailList) { + if(storageOrderDetail.getMaterialNo().equals(refundsExchangesDetail.getMaterialNo())){ + storageOrderDetail.setSupplierCode(refundsExchangesDetail.getSupplierCode()); + storageOrderDetail.setSupplierName(refundsExchangesDetail.getSupplierName()); + storageOrderDetail.setSupplierAddress(refundsExchangesDetail.getSupplierAddress()); + storageOrderDetail.setCustomerContact(refundsExchangesDetail.getCustomerContact()); + storageOrderDetail.setContactNumber(refundsExchangesDetail.getContactNumber()); + storageOrderDetail.setUpdateBy(loginName); + storageOrderDetail.setUpdateTime(DateUtils.getNowDate()); + warehouseStorageOrderDetailMapper.updateWarehouseStorageOrderDetail(storageOrderDetail); + } + } //更新数据库记录 updateRows += refundsExchangesDetailMapper.updateQualityRefundsExchangesDetail(refundsExchangesDetail); - } + qualityRefundsExchanges.setQualityPurchaseStatus("1"); + qualityRefundsExchanges.setUpdateBy(loginName); + qualityRefundsExchanges.setUpdateTime(DateUtils.getNowDate()); + qualityRefundsExchangesMapper.updateQualityRefundsExchanges(qualityRefundsExchanges); return updateRows; } /** - * 保存入库前退货-确认供应商 + * 保存入库前退货-确认收货 */ @Override public int updateBeforeConfirmDelivery(QualityRefundsExchanges qualityRefundsExchanges) { @@ -224,12 +339,28 @@ public class QualityRefundsExchangesServiceImpl implements IQualityRefundsExchan for (QualityRefundsExchangesDetail refundsExchangesDetail : refundsExchangesDetails) { refundsExchangesDetail.setRefundsExchangesCode(qualityRefundsExchanges.getRefundsExchangesCode()); refundsExchangesDetail.setUpdateBy(loginName); - refundsExchangesDetail.setUpdateTime(new Date()); - + refundsExchangesDetail.setUpdateTime(DateUtils.getNowDate()); + int purchaseStatus = Integer.parseInt(refundsExchangesDetail.getQualityDeliveryStatus()); + refundsExchangesDetail.setQualityPurchaseStatus(String.valueOf((purchaseStatus+2))); //更新数据库记录 updateRows += refundsExchangesDetailMapper.updateQualityRefundsExchangesDetail(refundsExchangesDetail); - } + boolean allStatusZero = refundsExchangesDetails.stream() + .allMatch(detail -> "0".equals(detail.getQualityDeliveryStatus())); + boolean hasStatusOne = refundsExchangesDetails.stream() + .anyMatch(detail -> "1".equals(detail.getQualityDeliveryStatus())); + boolean allStatusTwo = refundsExchangesDetails.stream() + .allMatch(detail -> "2".equals(detail.getQualityDeliveryStatus())); + if(allStatusZero){ + qualityRefundsExchanges.setQualityPurchaseStatus("2"); + }else if(hasStatusOne){ + qualityRefundsExchanges.setQualityPurchaseStatus("3"); + }else if(allStatusTwo){ + qualityRefundsExchanges.setQualityPurchaseStatus("4"); + } + qualityRefundsExchanges.setUpdateBy(loginName); + qualityRefundsExchanges.setUpdateTime(DateUtils.getNowDate()); + qualityRefundsExchangesMapper.updateQualityRefundsExchanges(qualityRefundsExchanges); return updateRows; }