فهرست منبع

异常管理 - 质检来源的数据进行合并处理

yzc 1 سال پیش
والد
کامیت
d33fc4d8ba
22فایلهای تغییر یافته به همراه241 افزوده شده و 42 حذف شده
  1. 7 2
      hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java
  2. 4 0
      hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityDetailVo.java
  3. 1 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/WdlyService.java
  4. 1 1
      hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java
  5. 8 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/quality/QualityInfoController.java
  6. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/abnormal/po/AbnormalInfo.java
  7. 5 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/abnormal/vo/AbnormalInfoVo.java
  8. 4 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/quality/vo/QualityInfoVo.java
  9. 3 3
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/deliver/DeliverGoodsMapper.java
  10. 8 1
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/quality/QualityInfoMapper.java
  11. 22 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WdlyServiceImpl.java
  12. 28 4
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java
  13. 47 6
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java
  14. 16 2
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java
  15. 1 0
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/QualityInfoService.java
  16. 43 11
      hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java
  17. 3 1
      hx-victoriatourist/src/main/resources/mapper/abnormal/AbnormalInfoMapper.xml
  18. 9 6
      hx-victoriatourist/src/main/resources/mapper/deliver/DeliverGoodsMapper.xml
  19. 18 0
      hx-victoriatourist/src/main/resources/mapper/quality/QualityInfoMapper.xml
  20. 5 0
      hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockJournalDetailsVo.java
  21. 2 1
      hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java
  22. 1 1
      hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

+ 7 - 2
hx-purchase/src/main/java/com/fjhx/purchase/entity/purchase/vo/PurchaseDetailVo.java

@@ -2,7 +2,7 @@ package com.fjhx.purchase.entity.purchase.vo;
 
 import com.fjhx.purchase.entity.arrival.vo.ArrivalDetailVo;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
-import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
 import lombok.Getter;
 import lombok.Setter;
@@ -58,7 +58,7 @@ public class PurchaseDetailVo extends PurchaseDetail {
      */
     private String productCustomCode;
 
-    private List<QualityDetail> qualityDetailsList;
+    private List<QualityDetailVo> qualityDetailsList;
 
     /**
      * 发货数量
@@ -96,4 +96,9 @@ public class PurchaseDetailVo extends PurchaseDetail {
      */
     private List<StockJournalDetailsVo> receiptList;
 
+    /**
+     * 是否有次品
+     */
+    private  Integer isReject;
+
 }

+ 4 - 0
hx-purchase/src/main/java/com/fjhx/purchase/entity/quality/vo/QualityDetailVo.java

@@ -14,4 +14,8 @@ import lombok.Setter;
 @Setter
 public class QualityDetailVo extends QualityDetail {
 
+    /**
+     * 质检人名称
+     */
+    private String createUserName;
 }

+ 1 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/WdlyService.java

@@ -18,5 +18,5 @@ public interface WdlyService {
 
     List<DeliverGoodsDetailsPo> getDeliverGoodsDetailsInfo(Long id);
 
-    void addAbnormalInfo(Long linkId, String linkCode);
+    void addAbnormalInfo(Long linkId, String linkCode, Long deliverGoodsId);
 }

+ 1 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/arrival/impl/ArrivalServiceImpl.java

@@ -296,7 +296,7 @@ public class ArrivalServiceImpl extends ServiceImpl<ArrivalMapper, Arrival> impl
 
             //存在到货数量不等于发货数量 创建异常
             if (flag != 0) {
-                wdlyService.addAbnormalInfo(arrival.getId(), arrival.getCode());
+                wdlyService.addAbnormalInfo(arrival.getId(), arrival.getCode(),deliverGoodsId);
             }
         }
         arrivalDetailService.saveBatch(arrivalDetailList);

+ 8 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/controller/quality/QualityInfoController.java

@@ -86,4 +86,12 @@ public class QualityInfoController {
         qualityInfoService.delete(dto.getId());
     }
 
+    /**
+     * 获取质检记录
+     */
+    @PostMapping("/getQualityRecord")
+    List<QualityInfoVo> getQualityRecord(@RequestBody QualityInfoDto dto){
+        return qualityInfoService.getQualityRecordByPurchaseId(dto);
+    }
+
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/abnormal/po/AbnormalInfo.java

@@ -65,4 +65,9 @@ public class AbnormalInfo extends BasePo {
      */
     private Long purchaseId;
 
+    /**
+     * 物流信息id
+     */
+    private Long logisticsInfosId;
+
 }

+ 5 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/abnormal/vo/AbnormalInfoVo.java

@@ -32,4 +32,9 @@ public class AbnormalInfoVo extends AbnormalInfo {
      */
     private String createUserName;
 
+    /**
+     * 物流单号
+     */
+    private String logisticsCode;
+
 }

+ 4 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/entity/quality/vo/QualityInfoVo.java

@@ -87,5 +87,9 @@ public class QualityInfoVo extends QualityInfo {
      */
     private String qualityUserName;
 
+    /**
+     * 是否有次品
+     */
+    private Integer isReject;
 
 }

+ 3 - 3
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/deliver/DeliverGoodsMapper.java

@@ -1,9 +1,9 @@
 package com.fjhx.victoriatourist.mapper.deliver;
 
-import com.fjhx.purchase.entity.quality.po.QualityDetail;
-import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
+import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsDetailsVo;
 import com.fjhx.victoriatourist.entity.deliver.vo.DeliverGoodsVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
@@ -29,6 +29,6 @@ public interface DeliverGoodsMapper extends BaseMapper<DeliverGoods> {
 
     List<DeliverGoodsDetailsVo> listDeliverGoodsDetails(@Param("ew") IWrapper<DeliverGoods> wrapper);
 
-    List<QualityDetail> getQualityInfoByPurchaseId(@Param("id") Long id);
+    List<QualityDetailVo> getQualityInfoByPurchaseId(@Param("id") Long id);
 
 }

+ 8 - 1
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/mapper/quality/QualityInfoMapper.java

@@ -1,12 +1,14 @@
 package com.fjhx.victoriatourist.mapper.quality;
 
-import com.fjhx.victoriatourist.entity.quality.po.QualityInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fjhx.victoriatourist.entity.quality.po.QualityInfo;
 import com.fjhx.victoriatourist.entity.quality.vo.QualityInfoVo;
 import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 
 /**
  * <p>
@@ -24,4 +26,9 @@ public interface QualityInfoMapper extends BaseMapper<QualityInfo> {
     Page<QualityInfoVo> getPage(@Param("page") Page<Object> page, @Param("ew") IWrapper<QualityInfo> wrapper);
 
     Page<QualityInfoVo> getPage1(Page<Object> page, @Param("ew") IWrapper<QualityInfo> wrapper);
+
+    /**
+     * 获取质检记录
+     */
+    List<QualityInfoVo> getQualityRecordByPurchaseId( @Param("purchaseId") Long purchaseId);
 }

+ 22 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WdlyServiceImpl.java

@@ -1,6 +1,7 @@
 package com.fjhx.victoriatourist.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsDetailsPo;
 import com.fjhx.purchase.entity.deliver.DeliverGoodsPo;
@@ -8,14 +9,17 @@ import com.fjhx.purchase.service.WdlyService;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoods;
 import com.fjhx.victoriatourist.entity.deliver.po.DeliverGoodsDetails;
+import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsDetailsService;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsService;
+import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class WdlyServiceImpl implements WdlyService {
@@ -27,6 +31,8 @@ public class WdlyServiceImpl implements WdlyService {
     DeliverGoodsDetailsService deliverGoodsDetailsService;
     @Autowired
     AbnormalInfoService abnormalInfoService;
+    @Autowired
+    private LogisticsInfosService logisticsInfosService;
 
     /**
      * 更新发货记录的状态为到货
@@ -56,14 +62,28 @@ public class WdlyServiceImpl implements WdlyService {
     }
 
     @Override
-    public void addAbnormalInfo(Long linkId,String linkCode){
+    public void addAbnormalInfo(Long linkId, String linkCode, Long deliverGoodsId){
+        LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, deliverGoodsId));
+
         AbnormalInfo abnormalInfo = new AbnormalInfo();
-        abnormalInfo.setStatus(0);
         abnormalInfo.setId(IdWorker.getId());
+
+        //搜索物流单号是否已经存在 异常信息
+        List<LogisticsInfos> logisticsInfosList = logisticsInfosService.list(q -> q.eq(LogisticsInfos::getCode, logisticsInfos.getCode()));
+        if (ObjectUtil.isNotEmpty(logisticsInfosList)) {
+            List<Long> ids = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
+            AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q.in(AbnormalInfo::getLogisticsInfosId, ids));
+            if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
+                abnormalInfo = oldAbnormalInfo;
+            }
+        }
+
+        abnormalInfo.setStatus(0);
         abnormalInfo.setType(40);
         abnormalInfo.setLinkId(linkId);
         abnormalInfo.setLinkCode(linkCode);
         abnormalInfo.setTitle("到货数量与发货数量不一致");
+        abnormalInfo.setLogisticsInfosId(logisticsInfos.getId());
         abnormalInfoService.save(abnormalInfo);
     }
 }

+ 28 - 4
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/WmsServiceImpl.java

@@ -1,6 +1,8 @@
 package com.fjhx.victoriatourist.service;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
@@ -8,17 +10,20 @@ import com.fjhx.victoriatourist.entity.group.dto.GroupRecordDto;
 import com.fjhx.victoriatourist.entity.group.po.GroupRecordDetails;
 import com.fjhx.victoriatourist.entity.jd.dto.JdOrderDto;
 import com.fjhx.victoriatourist.entity.jd.po.JdOrderDetails;
+import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
 import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackVo;
 import com.fjhx.victoriatourist.entity.quality.po.QualityDetails;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
 import com.fjhx.victoriatourist.service.group.GroupRecordDetailsService;
 import com.fjhx.victoriatourist.service.jd.JdOrderService;
+import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.order.OrderInfoService;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
 import com.fjhx.victoriatourist.service.quality.QualityDetailsService;
 import com.fjhx.wms.entity.QualityDetailsPo;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+import com.fjhx.wms.entity.stock.po.StockWait;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.WmsService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -27,6 +32,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.List;
+import java.util.stream.Collectors;
 
 @Service
 public class WmsServiceImpl implements WmsService {
@@ -42,6 +48,8 @@ public class WmsServiceImpl implements WmsService {
     private GroupRecordDetailsService groupRecordDetailsService;
     @Autowired
     private JdOrderService jdOrderService;
+    @Autowired
+    private LogisticsInfosService logisticsInfosService;
 
 //    /**
 //     * 销售订单出库
@@ -57,13 +65,29 @@ public class WmsServiceImpl implements WmsService {
     }
 
     @Override
-    public void addEndInStockAbnormal(Long linkId, String linkCode, Long purchaseId) {
+    public void addEndInStockAbnormal(StockWait stockWait, Long purchaseId) {
+        String swJsonStr = stockWait.getVictoriatouristJson();
+        JSONObject swJson = ObjectUtil.isEmpty(swJsonStr) ? new JSONObject() : JSONObject.parseObject(swJsonStr);
+        Long deliverGoodsId = swJson.getLong("deliverGoodsId");
+        LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, deliverGoodsId));
+
         AbnormalInfo abnormalInfo = new AbnormalInfo();
-        abnormalInfo.setStatus(0);
         abnormalInfo.setId(IdWorker.getId());
+
+        //搜索物流单号是否已经存在 异常信息
+        List<LogisticsInfos> logisticsInfosList = logisticsInfosService.list(q -> q.eq(LogisticsInfos::getCode, logisticsInfos.getCode()));
+        if (ObjectUtil.isNotEmpty(logisticsInfosList)) {
+            List<Long> ids = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
+            AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q.in(AbnormalInfo::getLogisticsInfosId, ids));
+            if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
+                abnormalInfo = oldAbnormalInfo;
+            }
+        }
+
+        abnormalInfo.setStatus(0);
         abnormalInfo.setType(50);//结束入库
-        abnormalInfo.setLinkId(linkId);
-        abnormalInfo.setLinkCode(linkCode);
+        abnormalInfo.setLinkId(stockWait.getId());
+        abnormalInfo.setLinkCode(stockWait.getBusinessCode());
         abnormalInfo.setTitle("入库数量差异");
         abnormalInfo.setPurchaseId(purchaseId);
         abnormalInfoService.save(abnormalInfo);

+ 47 - 6
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/deliver/impl/DeliverGoodsServiceImpl.java

@@ -22,6 +22,7 @@ import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseDetailVo;
 import com.fjhx.purchase.entity.purchase.vo.PurchaseVo;
 import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.quality.vo.QualityDetailVo;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
@@ -38,6 +39,7 @@ import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBack;
 import com.fjhx.victoriatourist.entity.purchase.po.PurchaseBackDetails;
 import com.fjhx.victoriatourist.entity.purchase.vo.PurchaseBackDetailsVo;
+import com.fjhx.victoriatourist.entity.quality.po.QualityDetails;
 import com.fjhx.victoriatourist.mapper.deliver.DeliverGoodsMapper;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsDetailsService;
 import com.fjhx.victoriatourist.service.deliver.DeliverGoodsService;
@@ -45,15 +47,19 @@ import com.fjhx.victoriatourist.service.logistics.LogisticsDetailsService;
 import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackDetailsService;
 import com.fjhx.victoriatourist.service.purchase.PurchaseBackService;
+import com.fjhx.victoriatourist.service.quality.QualityDetailsService;
+import com.fjhx.wms.entity.arrival.po.ArrivalStockRecordsDetails;
 import com.fjhx.wms.entity.stock.po.StockJournal;
 import com.fjhx.wms.entity.stock.po.StockJournalDetails;
 import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.entity.stock.vo.StockJournalDetailsVo;
+import com.fjhx.wms.service.arrival.ArrivalStockRecordsDetailsService;
 import com.fjhx.wms.service.stock.StockJournalDetailsService;
 import com.fjhx.wms.service.stock.StockJournalService;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.utils.wrapper.IWrapper;
+import com.ruoyi.system.utils.UserUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -105,6 +111,10 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
     private StockJournalDetailsService stockJournalDetailsService;
     @Autowired
     private StockJournalService stockJournalService;
+    @Autowired
+    private ArrivalStockRecordsDetailsService arrivalStockRecordsDetailsService;
+    @Autowired
+    private QualityDetailsService qualityDetailsService;
 
     @Value("${spring.profiles.active}")
     private String active;
@@ -265,20 +275,34 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
             item.setProductSpec(productInfo.getSpec());
         });
         //赋值质检信息
-        List<QualityDetail> qualityInfoByPurchaseId = baseMapper.getQualityInfoByPurchaseId(purchase.getId());
+        List<QualityDetailVo> qualityInfoByPurchaseId = baseMapper.getQualityInfoByPurchaseId(purchase.getId());
+        //赋值质检人名称
+        UserUtil.assignmentNickName(qualityInfoByPurchaseId, QualityDetailVo::getCreateUser, QualityDetailVo::setCreateUserName);
+
         if (ObjectUtil.isNotEmpty(qualityInfoByPurchaseId)) {
-            Map<Long, QualityDetail> qualityDetailsMap = qualityInfoByPurchaseId.stream().collect(Collectors.toMap(QualityDetail::getBussinessId, Function.identity()));
+            Map<Long, List<QualityDetailVo>> qualityDetailsMap = qualityInfoByPurchaseId.stream().collect(Collectors.groupingBy(QualityDetail::getBussinessId));
+
             for (PurchaseDetailVo purchaseDetailVo : purchaseDetailVoList) {
-                QualityDetail qualityDetails = qualityDetailsMap.get(purchaseDetailVo.getBussinessId());
+                List<QualityDetailVo> qualityDetails = qualityDetailsMap.get(purchaseDetailVo.getBussinessId());
                 if (ObjectUtil.isEmpty(qualityDetails)) {
                     purchaseDetailVo.setQualifiedCount(BigDecimal.ZERO);
                     purchaseDetailVo.setNoQualifiedCount(BigDecimal.ZERO);
                     purchaseDetailVo.setQualityQuantity(BigDecimal.ZERO);
                     continue;
                 }
-                purchaseDetailVo.setQualifiedCount(qualityDetails.getQualifiedCount());
-                purchaseDetailVo.setNoQualifiedCount(qualityDetails.getNoQualifiedCount());
-                purchaseDetailVo.setQualityQuantity(qualityDetails.getQualifiedCount().add(qualityDetails.getNoQualifiedCount()));
+
+                BigDecimal qualifiedCount = qualityDetails.stream().map(QualityDetail::getQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+                BigDecimal noQualifiedCount = qualityDetails.stream().map(QualityDetail::getNoQualifiedCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+
+                //赋值质检之和
+                purchaseDetailVo.setQualifiedCount(qualifiedCount);
+                purchaseDetailVo.setNoQualifiedCount(noQualifiedCount);
+                purchaseDetailVo.setQualityQuantity(qualifiedCount.add(noQualifiedCount));
+
+                purchaseDetailVo.setIsReject(noQualifiedCount.compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
+
+                //赋值产品质检的明细
+                purchaseDetailVo.setQualityDetailsList(qualityDetails);
             }
         }
         //赋值发货信息
@@ -403,6 +427,23 @@ public class DeliverGoodsServiceImpl extends ServiceImpl<DeliverGoodsMapper, Del
 
                 //赋值发货单号
                 stockJournalDetailsVo.setLogisticsCode(dgdMap.get(arrivalDetail1.getDeliverGoodsDetailsId()));
+
+                //赋值是否有次品
+                stockJournalDetailsVo.setIsReject(0);
+                List<ArrivalStockRecordsDetails> arrivalStockRecordsDetailsList = arrivalStockRecordsDetailsService.list(
+                        q -> q.eq(ArrivalStockRecordsDetails::getBusinessDetailsId, stockWaitDetails.getId()));
+                if (ObjectUtil.isNotEmpty(arrivalStockRecordsDetailsList)) {
+                    List<Long> ids = arrivalStockRecordsDetailsList.stream().map(ArrivalStockRecordsDetails::getId)
+                            .collect(Collectors.toList());
+                    List<QualityDetails> qualityDetailsList = qualityDetailsService.list(
+                            q -> q.in(QualityDetails::getArrivalStockRecordsDetailsId, ids));
+                    if (ObjectUtil.isNotEmpty(qualityDetailsList)) {
+                        BigDecimal noQualityCount = qualityDetailsList.stream().map(QualityDetails::getDisqualificationQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
+                        if (noQualityCount.compareTo(BigDecimal.ZERO) > 0) {
+                            stockJournalDetailsVo.setIsReject(1);
+                        }
+                    }
+                }
             }
 
             //对数量求和

+ 16 - 2
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/jd/impl/JdOrderServiceImpl.java

@@ -495,13 +495,27 @@ public class JdOrderServiceImpl extends ServiceImpl<JdOrderMapper, JdOrder> impl
 
             if (abnormalFlag == 1) {
                 AbnormalInfo abnormalInfo = new AbnormalInfo();
-                abnormalInfo.setStatus(0);
                 abnormalInfo.setId(IdWorker.getId());
+
+                LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, stockTransfer.getBusinessId()));
+                //搜索物流单号是否已经存在 异常信息
+                List<LogisticsInfos> logisticsInfosList = logisticsInfosService.list(q -> q.eq(LogisticsInfos::getCode, logisticsInfos.getCode()));
+                if (ObjectUtil.isNotEmpty(logisticsInfosList)) {
+                    List<Long> liIds = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
+                    AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q.in(AbnormalInfo::getLogisticsInfosId, liIds));
+                    if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
+                        abnormalInfo = oldAbnormalInfo;
+                    }
+                }
+
+                abnormalInfo.setStatus(0);
                 abnormalInfo.setType(30);
                 abnormalInfo.setLinkId(stockTransfer.getId());
                 abnormalInfo.setLinkCode(stockTransfer.getCode());
                 abnormalInfo.setTitle("京东订单接收数量与发出数量不一致");
-                abnormalInfoService.save(abnormalInfo);
+
+                abnormalInfo.setLogisticsInfosId(logisticsInfos.getId());
+                abnormalInfoService.saveOrUpdate(abnormalInfo);
             }
         }
 

+ 1 - 0
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/QualityInfoService.java

@@ -52,4 +52,5 @@ public interface QualityInfoService extends BaseService<QualityInfo> {
      */
     void delete(Long id);
 
+    List<QualityInfoVo> getQualityRecordByPurchaseId(QualityInfoDto qualityInfoDto);
 }

+ 43 - 11
hx-victoriatourist/src/main/java/com/fjhx/victoriatourist/service/quality/impl/QualityInfoServiceImpl.java

@@ -18,6 +18,7 @@ import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.service.supplier.SupplierInfoService;
 import com.fjhx.victoriatourist.entity.abnormal.po.AbnormalInfo;
+import com.fjhx.victoriatourist.entity.logistics.po.LogisticsInfos;
 import com.fjhx.victoriatourist.entity.quality.dto.QualityInfoDto;
 import com.fjhx.victoriatourist.entity.quality.dto.QualityInfoSelectDto;
 import com.fjhx.victoriatourist.entity.quality.po.QualityDetails;
@@ -26,6 +27,7 @@ import com.fjhx.victoriatourist.entity.quality.vo.QualityDetailsVo;
 import com.fjhx.victoriatourist.entity.quality.vo.QualityInfoVo;
 import com.fjhx.victoriatourist.mapper.quality.QualityInfoMapper;
 import com.fjhx.victoriatourist.service.abnormal.AbnormalInfoService;
+import com.fjhx.victoriatourist.service.logistics.LogisticsInfosService;
 import com.fjhx.victoriatourist.service.quality.QualityDetailsService;
 import com.fjhx.victoriatourist.service.quality.QualityInfoService;
 import com.fjhx.wms.entity.arrival.po.ArrivalStockRecords;
@@ -89,6 +91,8 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
     private PurchaseService purchaseService;
     @Autowired
     private ProductInfoService productInfoService;
+    @Autowired
+    private LogisticsInfosService logisticsInfosService;
 
     @Override
     public Page<QualityInfoVo> getPage(QualityInfoSelectDto dto) {
@@ -113,8 +117,8 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
                     .like("json_unquote(p.victoriatourist_json -> '$.contractCode')", dto.getKeyword())
                     .or().in("p.supply_id", suppIds)
                     .or().like("dg.code", dto.getKeyword())
-                    .or().like("pi.custom_code",dto.getKeyword())
-                    .or().like("pi.name",dto.getKeyword())
+                    .or().like("pi.custom_code", dto.getKeyword())
+                    .or().like("pi.name", dto.getKeyword())
             );
         }
         wrapper.orderByDesc("asr", QualityInfo::getCreateTime);
@@ -146,7 +150,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
     public List<QualityInfoVo> getList(QualityInfoSelectDto dto) {
         List<QualityInfo> qualityInfoList = this.list(q -> q.eq(QualityInfo::getBussinessId, dto.getArrivalStockRecordsId()));
         List<QualityInfoVo> qualityInfoVos = BeanUtil.copyToList(qualityInfoList, QualityInfoVo.class);
-        UserUtil.assignmentNickName(qualityInfoVos,QualityInfoVo::getCreateUser,QualityInfoVo::setQualityUserName);
+        UserUtil.assignmentNickName(qualityInfoVos, QualityInfoVo::getCreateUser, QualityInfoVo::setQualityUserName);
         for (QualityInfoVo qualityInfoVo : qualityInfoVos) {
 
         }
@@ -175,7 +179,7 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
                 .mapKEntity(ArrivalStockRecordsDetails::getId, q -> q.in(ArrivalStockRecordsDetails::getId, asrIds));
         for (QualityDetailsVo qualityDetailsVo : qualityDetailsVos) {
             ArrivalStockRecordsDetails arrivalStockRecordsDetails = arrivalStockRecordsDetailsMap.get(qualityDetailsVo.getArrivalStockRecordsDetailsId());
-            if(ObjectUtil.isEmpty(arrivalStockRecordsDetails)){
+            if (ObjectUtil.isEmpty(arrivalStockRecordsDetails)) {
                 continue;
             }
             qualityDetailsVo.setArrivalQuantity(arrivalStockRecordsDetails.getQuantity());
@@ -196,6 +200,11 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
         Assert.notEmpty(arrivalStockRecords, "查询不到到货信息");
         arrivalStockRecords.setQualityStatus(2);//质检完成
 
+        StockWait stockWait = stockWaitService.getById(arrivalStockRecords.getStockWaitId());
+        //赋值采购id
+        qualityInfoDto.setPurchaseId(stockWait.getBusinessId());
+        qualityInfoDto.setPurchaseCode(stockWait.getBusinessCode());
+
         //根据到货编号生成质检编号
         Integer codeNum = 0;
         String itemPrefix = arrivalStockRecords.getArrivalCode();
@@ -247,15 +256,30 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
         this.save(qualityInfoDto);
 
         if (qFlag != 0) {
+            Assert.notEmpty(stockWait, "查询不到待入库信息");
+            //查询物流信息
+            String stockWaitJsonStr = stockWait.getVictoriatouristJson();
+            JSONObject stockWaitJson = ObjectUtil.isEmpty(stockWaitJsonStr) ? new JSONObject() : JSONObject.parseObject(stockWaitJsonStr);
+            Long deliverGoodsId = stockWaitJson.getLong("deliverGoodsId");
+            LogisticsInfos logisticsInfos = logisticsInfosService.getOne(q -> q.eq(LogisticsInfos::getBusinessId, deliverGoodsId));
+
             AbnormalInfo abnormalInfo = new AbnormalInfo();
-            abnormalInfo.setStatus(0);
             abnormalInfo.setId(IdWorker.getId());
+
+            //搜索物流单号是否已经存在 异常信息
+            List<LogisticsInfos> logisticsInfosList = logisticsInfosService.list(q -> q.eq(LogisticsInfos::getCode, logisticsInfos.getCode()));
+            if (ObjectUtil.isNotEmpty(logisticsInfosList)) {
+                List<Long> ids = logisticsInfosList.stream().map(LogisticsInfos::getId).collect(Collectors.toList());
+                AbnormalInfo oldAbnormalInfo = abnormalInfoService.getOne(q -> q.in(AbnormalInfo::getLogisticsInfosId, ids));
+                if (ObjectUtil.isNotEmpty(oldAbnormalInfo)) {
+                    abnormalInfo = oldAbnormalInfo;
+                }
+            }
+
+            //创建到货质检信息
+            abnormalInfo.setStatus(0);
             abnormalInfo.setType(10);
-//            abnormalInfo.setLinkId(qualityInfoDto.getId());
-//            abnormalInfo.setLinkCode(qualityInfoDto.getCode());
             //将异常关联详细设置成采购id和采购单号
-            StockWait stockWait = stockWaitService.getById(arrivalStockRecords.getStockWaitId());
-            Assert.notEmpty(stockWait, "查询不到待入库信息");
             Purchase purchase = purchaseService.getById(stockWait.getBusinessId());
             Assert.notEmpty(purchase, "查询不到采购信息");
             String victoriatouristJson = purchase.getVictoriatouristJson();
@@ -266,7 +290,9 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
             abnormalInfo.setPurchaseId(purchase.getId());
 
             abnormalInfo.setTitle("质检存在不合格");
-            abnormalInfoService.save(abnormalInfo);
+
+            abnormalInfo.setLogisticsInfosId(logisticsInfos.getId());
+            abnormalInfoService.saveOrUpdate(abnormalInfo);
         }
 
         arrivalStockRecordsService.updateById(arrivalStockRecords);
@@ -280,7 +306,6 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
         stockJournal.setOpType(1);//入库;
         stockJournal.setBusinessId(qualityInfoDto.getId());
         stockJournal.setWarehouseId(arrivalStockRecords.getWarehouseId());
-        StockWait stockWait = stockWaitService.getById(arrivalStockRecords.getStockWaitId());
         stockJournal.setLinkCode(stockWait.getBusinessCode());
         stockJournalService.save(stockJournal);
         List<StockJournalDetails> stockJournalDetailsList = new ArrayList<>();
@@ -339,4 +364,11 @@ public class QualityInfoServiceImpl extends ServiceImpl<QualityInfoMapper, Quali
         this.removeById(id);
     }
 
+    @Override
+    public List<QualityInfoVo> getQualityRecordByPurchaseId(QualityInfoDto qualityInfoDto) {
+        List<QualityInfoVo> qualityInfoVos = baseMapper.getQualityRecordByPurchaseId(qualityInfoDto.getPurchaseId());
+        UserUtil.assignmentNickName(qualityInfoVos, QualityInfoVo::getCreateUser, QualityInfoVo::setQualityUserName);
+        return qualityInfoVos;
+    }
+
 }

+ 3 - 1
hx-victoriatourist/src/main/resources/mapper/abnormal/AbnormalInfoMapper.xml

@@ -16,7 +16,8 @@
             ai.create_time,
             ai.update_user,
             ai.update_time,
-            ai.purchase_id
+            ai.purchase_id,
+            li.code as logisticsCode
             <if test="businessType eq 10 or businessType eq 50">
                 ,p.create_user purchaseUserId
             </if>
@@ -40,6 +41,7 @@
                         LEFT JOIN bytesailing_item.product_info pi ON arrd.bussiness_id = pi.id
                 </if>
                 LEFT JOIN bytesailing_base.sys_dept de ON CAST(json_unquote(pi.victoriatourist_json -> '$.deptId') AS UNSIGNED) = de.dept_id
+                left join logistics_infos li on ai.logistics_infos_id = li.id
             ${ew.customSqlSegment}
     </select>
 

+ 9 - 6
hx-victoriatourist/src/main/resources/mapper/deliver/DeliverGoodsMapper.xml

@@ -26,18 +26,21 @@
                 JOIN deliver_goods_details dgd ON dgd.deliver_goods_id = dg.id
             ${ew.customSqlSegment}
     </select>
-    <select id="getQualityInfoByPurchaseId" resultType="com.fjhx.purchase.entity.quality.po.QualityDetail">
+    <select id="getQualityInfoByPurchaseId" resultType="com.fjhx.purchase.entity.quality.vo.QualityDetailVo">
         SELECT
             qd.product_info_id bussiness_id,
-            sum( qd.qualified_quantity ) qualifiedCount,
-            sum( qd.disqualification_quantity ) noQualifiedCount
+             qd.qualified_quantity  qualifiedCount,
+             qd.disqualification_quantity  noQualifiedCount,
+             qd.create_user,
+             qd.create_time
         FROM
             bytesailing_wms.stock_wait sw
-                JOIN bytesailing_wms.arrival_stock_records asr ON asr.stock_wait_id = sw.id
-                JOIN bytesailing_wms.arrival_stock_records_details asrd ON asrd.arrival_stock_records_id = asr.id
-                JOIN bytesailing_victoriatourist.quality_details qd ON qd.arrival_stock_records_details_id = asrd.id
+                JOIN bytesailing_wms.arrival_stock_records asr ON asr.stock_wait_id = sw.id and asr.del_flag = 0
+                JOIN bytesailing_wms.arrival_stock_records_details asrd ON asrd.arrival_stock_records_id = asr.id and asrd.del_flag = 0
+                JOIN bytesailing_victoriatourist.quality_details qd ON qd.arrival_stock_records_details_id = asrd.id and qd.del_flag = 0
         WHERE
             sw.business_id = #{id}
+          and sw.del_flag = 0
         GROUP BY
             qd.product_info_id
     </select>

+ 18 - 0
hx-victoriatourist/src/main/resources/mapper/quality/QualityInfoMapper.xml

@@ -42,5 +42,23 @@
                 LEFT JOIN bytesailing_victoriatourist.logistics_infos lis ON lis.business_id = CAST( json_unquote( sw.victoriatourist_json -> '$.deliverGoodsId' ) AS UNSIGNED )
             ${ew.customSqlSegment}
     </select>
+    <select id="getQualityRecordByPurchaseId" resultType="com.fjhx.victoriatourist.entity.quality.vo.QualityInfoVo">
+        SELECT
+            qi.id,
+            qi.create_time,
+            qi.create_user,
+            IF( sum( qd.disqualification_quantity )> 0, 1, 0 ) isReject
+        FROM
+            quality_details qd
+                JOIN quality_info qi ON qd.quality_info_id = qi.id
+                JOIN bytesailing_wms.arrival_stock_records asr ON qi.bussiness_id = asr.id
+                AND asr.del_flag = 0
+                JOIN bytesailing_wms.stock_wait sw ON asr.stock_wait_id = sw.id
+                AND sw.del_flag = 0
+        WHERE
+            sw.business_id = #{purchaseId}
+        GROUP BY
+            qi.id
+    </select>
 
 </mapper>

+ 5 - 0
hx-wms/src/main/java/com/fjhx/wms/entity/stock/vo/StockJournalDetailsVo.java

@@ -85,4 +85,9 @@ public class StockJournalDetailsVo extends StockJournalDetails {
      * 备注
      */
     private String remarks;
+
+    /**
+     * 是否有次品 1是 0不是
+     */
+    private Integer isReject;
 }

+ 2 - 1
hx-wms/src/main/java/com/fjhx/wms/service/WmsService.java

@@ -2,6 +2,7 @@ package com.fjhx.wms.service;
 
 import com.fjhx.wms.entity.QualityDetailsPo;
 import com.fjhx.wms.entity.stock.dto.StockWaitDto;
+import com.fjhx.wms.entity.stock.po.StockWait;
 
 import java.math.BigDecimal;
 import java.util.List;
@@ -21,7 +22,7 @@ public interface WmsService {
     /**
      * 添加结束入库异常
      */
-    void addEndInStockAbnormal(Long linkId, String linkCode, Long purchaseId);
+    void addEndInStockAbnormal(StockWait stockWait, Long purchaseId);
 
     /**
      * 获取采购退货信息

+ 1 - 1
hx-wms/src/main/java/com/fjhx/wms/service/stock/impl/StockWaitServiceImpl.java

@@ -456,7 +456,7 @@ public class StockWaitServiceImpl extends ServiceImpl<StockWaitMapper, StockWait
         if (stockWait.getBusinessType() == 3) {
             purchaseId = stockWait.getBusinessId();
         }
-        wmsService.addEndInStockAbnormal(stockWait.getId(), stockWait.getBusinessCode(), purchaseId);
+        wmsService.addEndInStockAbnormal(stockWait, purchaseId);
     }
 
     @Override