|
@@ -1,16 +1,17 @@
|
|
|
package com.abi.qms.platform.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
import cn.hutool.core.io.IoUtil;
|
|
|
-import cn.hutool.json.JSONUtil;
|
|
|
import com.abi.qms.platform.dao.entity.QrPackage;
|
|
|
+import com.abi.qms.platform.dao.entity.QrPackageBatch;
|
|
|
import com.abi.qms.platform.dao.entity.QrPackageDownloadRecord;
|
|
|
import com.abi.qms.platform.dao.enums.QrPackageApplyStatusEnum;
|
|
|
import com.abi.qms.platform.dao.enums.QrPackageGenerateStatusEnum;
|
|
|
import com.abi.qms.platform.dao.enums.QrRepertoryTypeEnum;
|
|
|
+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.QrRepertoryMapper;
|
|
|
import com.abi.qms.platform.dao.vo.result.QrPackageVO;
|
|
|
import com.abi.qms.platform.dto.req.*;
|
|
|
import com.abi.qms.platform.dto.res.GetQrPackageDetailRes;
|
|
@@ -31,7 +32,6 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.amqp.core.AmqpTemplate;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
-import org.springframework.http.HttpHeaders;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
@@ -39,6 +39,8 @@ import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.*;
|
|
|
import java.net.URLEncoder;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 码包 Service业务层处理
|
|
@@ -61,6 +63,9 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
|
|
|
@Autowired
|
|
|
private QrPackageDownloadRecordMapper qrPackageDownloadRecordMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private QrPackageBatchMapper qrPackageBatchMapper;
|
|
|
|
|
|
/**
|
|
|
* 保存码包
|
|
@@ -80,22 +85,52 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
throw new BusinessException("码包不可编辑");
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- // 码包名称不可重复
|
|
|
- QueryWrapper<QrPackage> qrPackageQw = new QueryWrapper<>();
|
|
|
- qrPackageQw.eq("name", req.getName());
|
|
|
- qrPackageQw.eq("is_delete", 0);
|
|
|
- if (qrPackageId != null) {
|
|
|
- qrPackageQw.ne("id", qrPackageId);
|
|
|
+ //如果SAP订单号和物料有重复数据,需提交额外申请原因
|
|
|
+ ValidSAPOrderNoAndMaterialReq reqValid = new ValidSAPOrderNoAndMaterialReq();
|
|
|
+ reqValid.setMaterialId(req.getMaterialId());
|
|
|
+ reqValid.setSapOrderNo(req.getSapOrderNo());
|
|
|
+ ValidSAPOrderNoAndMaterialRes validSAPOrderNoAndMaterialRes = validSAPOrderNoAndMaterial(reqValid);
|
|
|
+ if(Objects.nonNull(validSAPOrderNoAndMaterialRes) && CollectionUtil.isNotEmpty(validSAPOrderNoAndMaterialRes.getPackageBeanList())){
|
|
|
+ Long id = validSAPOrderNoAndMaterialRes.getPackageBeanList().get(0).getId();
|
|
|
+ if(validSAPOrderNoAndMaterialRes.getPackageBeanList().size() > 1) {
|
|
|
+ if (Objects.isNull(req.getReasonApply())) {
|
|
|
+ throw new BusinessException("该SAP订单号和物料与码包" + id + "重复,若仍需申请需要提交额外码包申请原因");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(validSAPOrderNoAndMaterialRes.getPackageBeanList().size() == 1) {
|
|
|
+ if(req.getId() == null){
|
|
|
+ if (Objects.isNull(req.getReasonApply())) {
|
|
|
+ throw new BusinessException("该SAP订单号和物料与码包" + id + "重复,若仍需申请需要提交额外码包申请原因");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!id.equals(req.getId())) {
|
|
|
+ if (Objects.isNull(req.getReasonApply())) {
|
|
|
+ throw new BusinessException("该SAP订单号和物料与码包" + id + "重复,若仍需申请需要提交额外码包申请原因");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- Integer count = qrPackageMapper.selectCount(qrPackageQw);
|
|
|
- if (!count.equals(0)) {
|
|
|
- throw new BusinessException("码包名称已存在");
|
|
|
+
|
|
|
+ if(CollectionUtil.isNotEmpty(req.getPackageBatchBeanList())){
|
|
|
+ //同一个码包内,不同批次的批次号不一样
|
|
|
+ List<SaveQrPackageReq.PackageBatchBean> packageBatchBeanList = req.getPackageBatchBeanList();
|
|
|
+ //聚合批次号
|
|
|
+ List<String> batchNumberList = packageBatchBeanList.stream().map(SaveQrPackageReq.PackageBatchBean::getBatchNumber).collect(Collectors.toList());
|
|
|
+ if(batchNumberList.size() < req.getPackageBatchBeanList().size()){
|
|
|
+ throw new BusinessException("批次号重复,请确认后重试");
|
|
|
+ }
|
|
|
+ //同一个码包内,批次加起来的总数量和码包数量一致
|
|
|
+ //计算码包数量总和
|
|
|
+ Long sum = packageBatchBeanList.stream().mapToLong(SaveQrPackageReq.PackageBatchBean::getBatchQrNumber).sum();
|
|
|
+ if(sum != req.getQrNumber()){
|
|
|
+ throw new BusinessException("批次码数量与申请码总量不匹配,请确认后重试");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// copy属性值
|
|
|
qrPackage = PojoConverterUtils.copy(req, QrPackage.class);
|
|
|
-
|
|
|
+ //若当前登录用户为包材厂用户,则该选项默认选择该用户所在的包材厂,不可修改
|
|
|
+ qrPackage.setFactoryCoverId(UserUtil.getUser().getFactoryId() != null ? UserUtil.getUser().getFactoryId() : req.getFactoryCoverId());
|
|
|
// 新增or修改
|
|
|
Long userId = UserUtil.getUser().getId();
|
|
|
qrPackage.setUpdateBy(userId);
|
|
@@ -103,11 +138,18 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
// 修改时,需要重置码包的状态为待审核
|
|
|
qrPackage.setApplyStatus(QrPackageApplyStatusEnum.WAIT_REVIEW.getCode());
|
|
|
qrPackageMapper.updateById(qrPackage);
|
|
|
+ //Todo:批次号和码包关联
|
|
|
+ //更新批次号的数据
|
|
|
+ QueryWrapper<QrPackageBatch> qrPackageBatchQuery = new QueryWrapper<>();
|
|
|
+ qrPackageBatchQuery.eq("package_id", qrPackageId);
|
|
|
+ qrPackageBatchQuery.eq("is_delete", 0);
|
|
|
+ List<QrPackageBatch> qrPackageBatches = qrPackageBatchMapper.selectList(qrPackageBatchQuery);
|
|
|
+
|
|
|
} else {
|
|
|
- qrPackage.setBatchNumber(IdWorker.getIdStr());
|
|
|
qrPackage.setCreateBy(userId);
|
|
|
int insert = qrPackageMapper.insert(qrPackage);
|
|
|
- System.out.println(insert);
|
|
|
+ //插入批次号的数据
|
|
|
+
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -119,7 +161,7 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
public ListQrPackageRes listQrPackage(ListQrPackageReq req) {
|
|
|
//数据权限隔离,如果登录账号是包材厂,只能看账号包材厂的数据。否则看全部
|
|
|
if(UserUtil.getUser().getFactoryId() != null){
|
|
|
- req.setFactoryId(UserUtil.getUser().getFactoryId());
|
|
|
+ req.setFactoryCoverId(UserUtil.getUser().getFactoryId());
|
|
|
}
|
|
|
|
|
|
// 分页查询
|
|
@@ -229,7 +271,7 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
in = new BufferedInputStream(new FileInputStream(new File("E:\\firefox_download\\202104161027287567357.zip")));
|
|
|
out = new BufferedOutputStream(response.getOutputStream());
|
|
|
|
|
|
- String fileName = qrPackage.getBatchNumber() + ".zip";
|
|
|
+ String fileName = qrPackage.getSapOrderNo() + ".zip";
|
|
|
response.setHeader("Content-Disposition","attachment;filename=" + URLEncoder.encode(fileName,"utf-8"));
|
|
|
|
|
|
byte [] b = new byte[1024];
|
|
@@ -276,8 +318,15 @@ public class QrPackageServiceImpl implements QrPackageService {
|
|
|
*/
|
|
|
@Override
|
|
|
public void failedRollback(QrPackage qrPackage) {
|
|
|
+ QueryWrapper<QrPackageBatch> qrPackageBatchQuery = new QueryWrapper<>();
|
|
|
+ qrPackageBatchQuery.eq("package_id", qrPackage.getId());
|
|
|
+ qrPackageBatchQuery.eq("is_delete", 0);
|
|
|
+ List<QrPackageBatch> qrPackageBatches = qrPackageBatchMapper.selectList(qrPackageBatchQuery);
|
|
|
// 删除本次生成的码
|
|
|
- qrDataService.deleteCodeByBatchNumber(qrPackage.getBatchNumber());
|
|
|
+ qrPackageBatches.forEach(qrPackageBatch -> {
|
|
|
+ qrDataService.deleteCodeByBatchNumber(qrPackageBatch.getBatchNumber());
|
|
|
+
|
|
|
+ });
|
|
|
|
|
|
// 更改生成状态为生成失败
|
|
|
QrPackage qrPackageUpdate = new QrPackage().setId(qrPackage.getId()).setGenerateStatus(QrPackageGenerateStatusEnum.GENERATE_FAIL.getCode());
|