Jelajahi Sumber

添加码包和批次号的业务关联关系
校验码包添加时码包数量和批次号总数量统一,同一码包下批次号唯一,码包的SAP订单号和物料数据重复要做额外申请拦截

v_HuilingDeng 3 tahun lalu
induk
melakukan
032ce83669

+ 3 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dao/vo/result/QrPackageVO.java

@@ -98,4 +98,7 @@ public class QrPackageVO implements Serializable {
 	@ApiModelProperty(value = "修改人id")
 	private Long updateBy;
 
+	@ApiModelProperty(value = "码包批次列表")
+	private List<QrPackageBatchVO> qrPackageBatchVOList;
+
 }

+ 3 - 0
abi-cloud-qr-platform-server/src/main/java/com/abi/qms/platform/dto/req/SaveQrPackageReq.java

@@ -75,6 +75,9 @@ public class SaveQrPackageReq implements Serializable {
 	@ApiModel(value = "SaveQrPackageReq_PackageBatchBean")
 	public static class PackageBatchBean implements Serializable {
 
+		@ApiModelProperty("批次号id")
+		private Long id;
+
 		@NotEmpty(message = "批次号为空")
 		@ApiModelProperty(value = "批次号")
 		private String batchNumber;

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

@@ -24,9 +24,12 @@ import com.abi.qms.platform.infrastructure.util.UserUtil;
 import com.abi.qms.platform.service.QrDataService;
 import com.abi.qms.platform.service.QrPackageService;
 import com.abi.task.common.api.exception.BusinessException;
+import com.abi.task.common.api.exception.ErrorCodeEnum;
+import com.abi.task.common.utils.ICollectionUtil;
 import com.abi.task.common.utils.PojoConverterUtils;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import lombok.extern.slf4j.Slf4j;
@@ -38,6 +41,7 @@ import org.springframework.transaction.annotation.Transactional;
 import javax.servlet.http.HttpServletResponse;
 import java.io.*;
 import java.net.URLEncoder;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
@@ -138,18 +142,72 @@ 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);
-
+			List<Long> batchOldId = qrPackageBatches.stream().map(QrPackageBatch::getId).collect(Collectors.toList());
+			if(CollectionUtil.isNotEmpty(req.getPackageBatchBeanList())) {
+				//提取出更新的批次数据
+				List<Long> batchNewId = req.getPackageBatchBeanList().stream().map(SaveQrPackageReq.PackageBatchBean::getId).collect(Collectors.toList());
+				//整理需删除的数据
+				List<Long> deleteBatch = new ArrayList<>(batchOldId);
+				deleteBatch.removeAll(batchNewId);
+				if(CollectionUtil.isNotEmpty(deleteBatch)){
+					UpdateWrapper<QrPackageBatch> qrPackageBatchDeleteParam = new UpdateWrapper<>();
+					qrPackageBatchDeleteParam.in("id", deleteBatch)
+							.set("is_delete", 1);
+					qrPackageBatchMapper.update(null, qrPackageBatchDeleteParam);
+				}
+				//循环添加或更新
+				for(SaveQrPackageReq.PackageBatchBean packageBatchBean: req.getPackageBatchBeanList()) {
+					if(packageBatchBean.getId() == null){
+						QrPackageBatch qrPackageBatch = new QrPackageBatch();
+						qrPackageBatch.setPackageId(qrPackage.getId());
+						qrPackageBatch.setBatchNumber(packageBatchBean.getBatchNumber());
+						qrPackageBatch.setBatchQrNumber(packageBatchBean.getBatchQrNumber());
+						qrPackageBatch.setUpdateBy(userId);
+						qrPackageBatch.setCreateBy(userId);
+						qrPackageBatchMapper.insert(qrPackageBatch);
+					}else{
+						QueryWrapper<QrPackageBatch> qrPackageBatchQ = new QueryWrapper<>();
+						qrPackageBatchQ.eq("id", packageBatchBean.getId());
+						qrPackageBatchQ.eq("is_delete", 0);
+						QrPackageBatch qrPackageBatch = qrPackageBatchMapper.selectOne(qrPackageBatchQ);
+						if(Objects.isNull(qrPackageBatch)){
+							throw new BusinessException(ErrorCodeEnum.NO_EXISTS_DATA.getCode(), "批次对象不存在");
+						}
+						qrPackageBatch.setBatchQrNumber(packageBatchBean.getBatchQrNumber());
+						qrPackageBatch.setBatchNumber(packageBatchBean.getBatchNumber());
+						qrPackageBatch.setUpdateBy(userId);
+						qrPackageBatchMapper.updateById(qrPackageBatch);
+					}
+				}
+			}else{
+				//入参没有批次信息,数据库有,则全删除
+				if(CollectionUtil.isNotEmpty(qrPackageBatches)){
+					UpdateWrapper<QrPackageBatch> qrPackageBatchDeleteParam = new UpdateWrapper<>();
+					qrPackageBatchDeleteParam.in("id", batchOldId)
+							.set("is_delete", 1);
+					qrPackageBatchMapper.update(null, qrPackageBatchDeleteParam);
+				}
+			}
 		} else {
 			qrPackage.setCreateBy(userId);
 			int insert = qrPackageMapper.insert(qrPackage);
-			//插入批次号的数据
-
+			if(CollectionUtil.isNotEmpty(req.getPackageBatchBeanList())) {
+				//插入批次号的数据
+				for(SaveQrPackageReq.PackageBatchBean packageBatchBean: req.getPackageBatchBeanList()) {
+					QrPackageBatch qrPackageBatch = new QrPackageBatch();
+					qrPackageBatch.setPackageId(qrPackage.getId());
+					qrPackageBatch.setBatchNumber(packageBatchBean.getBatchNumber());
+					qrPackageBatch.setBatchQrNumber(packageBatchBean.getBatchQrNumber());
+					qrPackageBatch.setUpdateBy(userId);
+					qrPackageBatch.setCreateBy(userId);
+					qrPackageBatchMapper.insert(qrPackageBatch);
+				}
+			}
 		}
 
 	}

+ 14 - 1
abi-cloud-qr-platform-server/src/main/resources/dao/mapper/QrPackageMapper.xml

@@ -35,6 +35,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <result property="createTime" column="download_time"/>
             <result property="createByName" column="download_user_name"/>
         </collection>
+
+        <!-- 码包批次列表 -->
+        <collection property="qrPackageBatchVOList" javaType="java.util.List" ofType="com.abi.qms.platform.dao.vo.result.QrPackageBatchVO">
+            <result property="id" column="batch_id"/>
+            <result property="packageId" column="package_id"/>
+            <result property="batchNumber" column="batch_number"/>
+            <result property="batchQrNumber" column="batch_qr_number"/>
+        </collection>
     </resultMap>
 
     <select id="listQrPackage" resultType="com.abi.qms.platform.dao.vo.result.QrPackageVO">
@@ -105,7 +113,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             qr.name AS qr_repertory_name,
             qr.type AS qr_repertory_type,
             qpdr.create_time AS download_time,
-            ui.user_name AS download_user_name
+            ui.user_name AS download_user_name,
+            qpb.id as batch_id,
+            qpb.package_id,
+            qpb.batch_number,
+            qpb.batch_qr_number
         FROM
             qr_package qp
         LEFT JOIN qr_box_code_format bcf ON qp.box_code_format_id = bcf.id
@@ -114,6 +126,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         LEFT JOIN base_factory bfc ON qp.factory_cover_id = bfc.id
         LEFT JOIN base_factory bfb ON qp.factory_beer_id = bfb.id
         LEFT JOIN qr_package_download_record qpdr ON qpdr.qr_package_id = qp.id
+        LEFT JOIN qr_package_batch qpb ON qpb.package_id = qp.id
         LEFT JOIN user_info ui ON ui.id = qpdr.create_by
         WHERE qp.id = #{id}
     </select>