Browse Source

feat:码包列表服务异常修复

fangxinjian 3 years ago
parent
commit
10ad80e6b7

+ 104 - 37
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/service/impl/QrPackageServiceImpl.java

@@ -1,19 +1,81 @@
 package com.abi.qms.platform.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.json.JSONUtil;
 import com.abi.base.foundation.util.RedisClient;
-import com.abi.qms.platform.dao.entity.*;
-import com.abi.qms.platform.dao.enums.*;
-import com.abi.qms.platform.dao.mapper.*;
+import com.abi.qms.platform.dao.entity.BaseFactory;
+import com.abi.qms.platform.dao.entity.BaseMaterial;
+import com.abi.qms.platform.dao.entity.QrBoxCodeFormat;
+import com.abi.qms.platform.dao.entity.QrBoxMapping;
+import com.abi.qms.platform.dao.entity.QrPackage;
+import com.abi.qms.platform.dao.entity.QrPackageBatch;
+import com.abi.qms.platform.dao.entity.QrPackageBookingOrder;
+import com.abi.qms.platform.dao.entity.QrPackageDownloadRecord;
+import com.abi.qms.platform.dao.entity.QrPackageSapOrderItem;
+import com.abi.qms.platform.dao.entity.QrRepertoryColumn;
+import com.abi.qms.platform.dao.entity.UserInfo;
+import com.abi.qms.platform.dao.enums.CodePackageOrderTypeEnum;
+import com.abi.qms.platform.dao.enums.FactoryTypeEnum;
+import com.abi.qms.platform.dao.enums.FirstFactoryEnum;
+import com.abi.qms.platform.dao.enums.InvalidEnum;
+import com.abi.qms.platform.dao.enums.MaterialTypeEnum;
+import com.abi.qms.platform.dao.enums.QrPackageApplyStatusEnum;
+import com.abi.qms.platform.dao.enums.QrPackageGenerateStatusEnum;
+import com.abi.qms.platform.dao.enums.QrTypeEnum;
+import com.abi.qms.platform.dao.enums.TrueFalseEnum;
+import com.abi.qms.platform.dao.mapper.BaseActiveMapper;
+import com.abi.qms.platform.dao.mapper.BaseBrandMapper;
+import com.abi.qms.platform.dao.mapper.BaseFactoryMapper;
+import com.abi.qms.platform.dao.mapper.BaseMaterialMapper;
+import com.abi.qms.platform.dao.mapper.QrBoxCodeFormatMapper;
+import com.abi.qms.platform.dao.mapper.QrBoxMappingMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageBatchMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageDownloadRecordMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageMapper;
+import com.abi.qms.platform.dao.mapper.QrPackageSapOrderItemMapper;
+import com.abi.qms.platform.dao.mapper.QrRepertoryColumnMapper;
 import com.abi.qms.platform.dao.tablestore.entity.QrCode;
-import com.abi.qms.platform.dao.vo.result.*;
-import com.abi.qms.platform.dto.req.*;
-import com.abi.qms.platform.dto.res.*;
+import com.abi.qms.platform.dao.vo.result.PackageActiveVO;
+import com.abi.qms.platform.dao.vo.result.QrBoxMappingVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageBatchVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageDownloadRecordVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageVO;
+import com.abi.qms.platform.dao.vo.result.QrPackageWxVO;
+import com.abi.qms.platform.dao.vo.result.QrSingleCheckVO;
+import com.abi.qms.platform.dao.vo.result.WxQrPackageDetailVO;
+import com.abi.qms.platform.dto.req.DeleteQrPackageReq;
+import com.abi.qms.platform.dto.req.DownloadQrPackageReq;
+import com.abi.qms.platform.dto.req.GetPackageCodeReq;
+import com.abi.qms.platform.dto.req.GetQrPackageDetailReq;
+import com.abi.qms.platform.dto.req.GetQrSingleCheckDetailCodeReq;
+import com.abi.qms.platform.dto.req.InvalidQrPackageReq;
+import com.abi.qms.platform.dto.req.InvalidQrSingleReq;
+import com.abi.qms.platform.dto.req.ListQrPackageReq;
+import com.abi.qms.platform.dto.req.ListQrPackageWxReq;
+import com.abi.qms.platform.dto.req.PassQrPackageReq;
+import com.abi.qms.platform.dto.req.QrOneBoxCodeMappingReq;
+import com.abi.qms.platform.dto.req.QrOnePackageBatchReq;
+import com.abi.qms.platform.dto.req.RefuseQrPackageReq;
+import com.abi.qms.platform.dto.req.SaveQrPackageReq;
+import com.abi.qms.platform.dto.req.SendMobileMsgReq;
+import com.abi.qms.platform.dto.req.ValidSAPOrderNoAndMaterialReq;
+import com.abi.qms.platform.dto.req.WxQrPackageDetailReq;
+import com.abi.qms.platform.dto.res.GetPackageCodeRes;
+import com.abi.qms.platform.dto.res.GetQrPackageDetailRes;
+import com.abi.qms.platform.dto.res.GetQrSingleCheckDetailRes;
+import com.abi.qms.platform.dto.res.ListQrPackageRes;
+import com.abi.qms.platform.dto.res.ListQrPackageWxRes;
+import com.abi.qms.platform.dto.res.ValidSAPOrderNoAndMaterialRes;
+import com.abi.qms.platform.dto.res.WxQrPackageDetailRes;
 import com.abi.qms.platform.infrastructure.constant.RedisKey;
 import com.abi.qms.platform.infrastructure.event.CodePackageCreateEvent;
-import com.abi.qms.platform.infrastructure.mq.GenerateCodeConsumer;
-import com.abi.qms.platform.infrastructure.util.*;
+import com.abi.qms.platform.infrastructure.util.AssertUtil;
+import com.abi.qms.platform.infrastructure.util.FreeMarkerUtils;
+import com.abi.qms.platform.infrastructure.util.OssFileDownloadUtil;
+import com.abi.qms.platform.infrastructure.util.PageUtil;
+import com.abi.qms.platform.infrastructure.util.RandomCodeUtils;
+import com.abi.qms.platform.infrastructure.util.SendmailUtil;
+import com.abi.qms.platform.infrastructure.util.SmsUtil;
+import com.abi.qms.platform.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.FactoryService;
 import com.abi.qms.platform.service.MaterialService;
 import com.abi.qms.platform.service.QrPackageBookingOrderService;
@@ -30,7 +92,6 @@ import freemarker.template.Template;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.bouncycastle.util.Pack;
 import org.springframework.amqp.core.AmqpTemplate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.ApplicationContext;
@@ -41,7 +102,11 @@ import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;
 import javax.servlet.http.HttpServletResponse;
 import java.text.MessageFormat;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -200,18 +265,18 @@ public class QrPackageServiceImpl implements QrPackageService {
 
         //3-SAP:根据物料ID查询物料类型,判断码类型,保存至码包表中
         //预订单:直接预订单放入
-        if(CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType())){
+        if (CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType())) {
             BaseMaterial material = baseMaterialMapper.selectById(req.getMaterialId());
             AssertUtil.isNull(material, "物料信息不存在");
             req.setQrType(getPackageCode(material.getMaterialType()));
-        }else{
+        } else {
             QrPackageBookingOrder bookingOrder = qrPackageBookingOrderService.getBookingOrder(req.getBookingOrder());
             AssertUtil.isNull(bookingOrder, "预订单不存在");
             req.setQrType(bookingOrder.getQrType());
         }
 
         //4-如果是盖码,那么查询盖码得默认箱码幅面,并放入入参
-        if(QrTypeEnum.CAP.is(req.getQrType())){
+        if (QrTypeEnum.CAP.is(req.getQrType())) {
             QueryWrapper<QrBoxCodeFormat> formatQw = new QueryWrapper<>();
             formatQw.eq("is_sys", 1);
             //1-盖码默认幅面
@@ -340,12 +405,12 @@ public class QrPackageServiceImpl implements QrPackageService {
         }
 
         //如果有预订单号,需要判断是否被其他码包用过了
-        if(isAdd && StringUtils.isNotBlank(req.getBookingOrder())){
+        if (isAdd && StringUtils.isNotBlank(req.getBookingOrder())) {
             QueryWrapper<QrPackage> qrPackageQw = new QueryWrapper<>();
-            qrPackageQw.eq("booking_order",req.getBookingOrder());
-            qrPackageQw.eq("is_delete",0);
+            qrPackageQw.eq("booking_order", req.getBookingOrder());
+            qrPackageQw.eq("is_delete", 0);
             List<QrPackage> qrPackageList = qrPackageMapper.selectList(qrPackageQw);
-            if(CollectionUtil.isNotEmpty(qrPackageList)){
+            if (CollectionUtil.isNotEmpty(qrPackageList)) {
                 throw new BusinessException("预订单号已被其他码包使用");
             }
         }
@@ -364,12 +429,12 @@ public class QrPackageServiceImpl implements QrPackageService {
 
         //是否箱码
         boolean isCarton = false;
-        if(CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType())){
+        if (CodePackageOrderTypeEnum.SAP_ORDER.is(req.getOrderType())) {
             //查询sap订单,物料信息必填
             BaseMaterial material = baseMaterialMapper.selectById(req.getMaterialId());
             AssertUtil.isNull(material, "物料信息不存在");
             isCarton = QrTypeEnum.CARTON.is(getPackageCode(material.getMaterialType()));
-        }else{
+        } else {
             //查询预订单
             QrPackageBookingOrder bookingOrder = qrPackageBookingOrderService.getBookingOrder(req.getBookingOrder());
             AssertUtil.isNull(bookingOrder, "预订单不存在");
@@ -442,9 +507,9 @@ public class QrPackageServiceImpl implements QrPackageService {
         List<QrPackageVO> qrPackageList = iPage.getRecords();
 
         // 判断是否一级包材厂,如果不是,状态为已创建,如果是按表中值
-        if(FactoryTypeEnum.COVER.is(userUtil.getWholeUser().getFactoryType())) {
+        if (FactoryTypeEnum.COVER.is(userUtil.getWholeUser().getFactoryType())) {
             BaseFactory factory = baseFactoryMapper.selectById(userUtil.getWholeUser().getFactoryId());
-            if(TrueFalseEnum.TRUE.is(factory.getIsFirstFactory())){
+            if (ObjectUtils.isNotEmpty(factory) && TrueFalseEnum.TRUE.is(factory.getIsFirstFactory())) {
                 qrPackageList.stream().forEach(s -> s.setInvalid(QrPackageGenerateStatusEnum.CREATE_BEEN.getCode()));
             }
         }
@@ -468,7 +533,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         AssertUtil.isNull(qrPackageVO, "码包不存在");
 
         //拼接额外审核原因
-        String reasonDescForAudit = getReasonDescForAudit(qrPackageVO.getReasonApply(), qrPackageVO.getSapOrderNo(), qrPackageVO.getMaterialCode(),qrPackageVO.getId());
+        String reasonDescForAudit = getReasonDescForAudit(qrPackageVO.getReasonApply(), qrPackageVO.getSapOrderNo(), qrPackageVO.getMaterialCode(), qrPackageVO.getId());
         qrPackageVO.setReasonDescForAudit(reasonDescForAudit);
 
         // 查询下载列表
@@ -487,26 +552,27 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * 如果有额外审核原因,则拼接一个备注用于审核时候查看
+     *
      * @param reasonApply
      * @param sapOrderNo
      * @param materialCode
      * @param id
      * @return
      */
-    private String getReasonDescForAudit(String reasonApply,String sapOrderNo,String materialCode,Long id){
+    private String getReasonDescForAudit(String reasonApply, String sapOrderNo, String materialCode, Long id) {
         //如果没有申请原因,也不用拼接额外的描述
-        if(StringUtils.isBlank(reasonApply) || StringUtils.isBlank(sapOrderNo) || StringUtils.isBlank(materialCode)){
+        if (StringUtils.isBlank(reasonApply) || StringUtils.isBlank(sapOrderNo) || StringUtils.isBlank(materialCode)) {
             return null;
         }
 
         //查询是哪些码包使用了这个sap订单号和物料
         QueryWrapper<QrPackage> qrPackageQw = new QueryWrapper<>();
-        qrPackageQw.eq("sap_order_no",sapOrderNo);
-        qrPackageQw.eq("material_code",materialCode);
-        qrPackageQw.ne("id",id);
-        qrPackageQw.eq("is_delete",0);
+        qrPackageQw.eq("sap_order_no", sapOrderNo);
+        qrPackageQw.eq("material_code", materialCode);
+        qrPackageQw.ne("id", id);
+        qrPackageQw.eq("is_delete", 0);
         List<QrPackage> qrPackageList = qrPackageMapper.selectList(qrPackageQw);
-        if(CollectionUtil.isEmpty(qrPackageList)){
+        if (CollectionUtil.isEmpty(qrPackageList)) {
             return null;
         }
 
@@ -515,7 +581,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         String packageIds = qrPackageList.stream().map(qrPackage -> String.valueOf(qrPackage.getId())).collect(Collectors.joining(","));
 
         String desc = String.format("该SAP订单号和物料已申请码包%s,码数量%d", packageIds, totalQrNumber);
-        log.info("getReasonDescForAudit result => "+desc);
+        log.info("getReasonDescForAudit result => " + desc);
 
         return desc;
     }
@@ -734,6 +800,7 @@ public class QrPackageServiceImpl implements QrPackageService {
 
     /**
      * 码包生成完成后发送邮件给码包厂负责人邮箱
+     *
      * @param targetEmail
      * @param qrPackage
      * @param filename
@@ -746,10 +813,10 @@ public class QrPackageServiceImpl implements QrPackageService {
             Template template = FreeMarkerUtils.getTemplate("factory.ftl");
 
             String orderNoDesc = null;
-            if(CodePackageOrderTypeEnum.SAP_ORDER.is(qrPackage.getOrderType())){
-                orderNoDesc = String.format("SAP采购订单号%s",qrPackage.getSapOrderNo());
-            }else{
-                orderNoDesc = String.format("预订单号%s",qrPackage.getBookingOrder());
+            if (CodePackageOrderTypeEnum.SAP_ORDER.is(qrPackage.getOrderType())) {
+                orderNoDesc = String.format("SAP采购订单号%s", qrPackage.getSapOrderNo());
+            } else {
+                orderNoDesc = String.format("预订单号%s", qrPackage.getBookingOrder());
             }
 
             //填充的内容
@@ -793,7 +860,7 @@ public class QrPackageServiceImpl implements QrPackageService {
 
         //获取随机验证码
         String captcha = RandomCodeUtils.getCaptcha(6);
-        log.info("开始执行发送短信:{}",captcha);
+        log.info("开始执行发送短信:{}", captcha);
         //发送短信
         smsUtil.sendCode(mobile, captcha);
         //将验证码存入redis
@@ -845,7 +912,7 @@ public class QrPackageServiceImpl implements QrPackageService {
         }
 
         //查询码包对应活动单条数据
-        if(null != qrSingleCheckVO.getActiveId()) {
+        if (null != qrSingleCheckVO.getActiveId()) {
             //存在活动数据
             PackageActiveVO packageActive = baseActiveMapper.getPackageActive(qrSingleCheckVO.getActiveId());
             if (!ObjectUtils.isEmpty(packageActive)) {