|
@@ -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)) {
|