|
@@ -1,12 +1,13 @@
|
|
package com.fjhx.bom.service.impl;
|
|
package com.fjhx.bom.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.fjhx.base.BaseEntity;
|
|
import com.fjhx.base.BaseEntity;
|
|
import com.fjhx.bom.mapper.BomMapper;
|
|
import com.fjhx.bom.mapper.BomMapper;
|
|
import com.fjhx.bom.service.BomService;
|
|
import com.fjhx.bom.service.BomService;
|
|
-import com.fjhx.constant.ProductLibraryLockConstant;
|
|
+import com.fjhx.constant.IotManagementLockConstant;
|
|
import com.fjhx.constants.ErrorMsgConstant;
|
|
import com.fjhx.constants.ErrorMsgConstant;
|
|
import com.fjhx.constants.StatusConstant;
|
|
import com.fjhx.constants.StatusConstant;
|
|
import com.fjhx.entity.bom.Bom;
|
|
import com.fjhx.entity.bom.Bom;
|
|
@@ -81,15 +82,16 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
|
|
Assert.notEmpty(productId, "产品id不能为空");
|
|
Assert.notEmpty(productId, "产品id不能为空");
|
|
Assert.notEmpty(bomVo.getEdition(), "版本号不能为空");
|
|
Assert.notEmpty(bomVo.getEdition(), "版本号不能为空");
|
|
|
|
|
|
- save(bomVo);
|
|
|
|
|
|
|
|
-
|
|
+ Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
|
|
-
|
|
+ () -> {
|
|
-
|
|
+ Integer count = count(Bom::getProductId, productId);
|
|
-
|
|
+ bomVo.setCurrentEdition(count == 0 ? StatusConstant.YES : StatusConstant.No);
|
|
-
|
|
+ save(bomVo);
|
|
|
|
+ return true;
|
|
|
|
+ });
|
|
|
|
|
|
-
|
|
+ Assert.eqTrue(flag, ErrorMsgConstant.SYSTEM_BUSY_ERROR);
|
|
|
|
|
|
|
|
|
|
FileClientUtil.bindingFile(bomVo.getId(), bomVo.getFileInfoParam());
|
|
FileClientUtil.bindingFile(bomVo.getId(), bomVo.getFileInfoParam());
|
|
@@ -98,7 +100,24 @@ public class BomServiceImpl extends ServiceImpl<BomMapper, Bom> implements BomSe
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
public void edit(BomVo bomVo) {
|
|
public void edit(BomVo bomVo) {
|
|
- updateById(bomVo);
|
|
+
|
|
|
|
+ Long productId = bomVo.getProductId();
|
|
|
|
+
|
|
|
|
+ Integer currentEdition = bomVo.getCurrentEdition();
|
|
|
|
+
|
|
|
|
+ Assert.notEmpty(currentEdition, "是否启用版本不能为空");
|
|
|
|
+
|
|
|
|
+ if (StatusConstant.YES.equals(currentEdition)) {
|
|
|
|
+
|
|
|
|
+ Boolean flag = redisLockClient.lockFair(IotManagementLockConstant.BOM_EDITION_LOCK + productId,
|
|
|
|
+ () -> {
|
|
|
|
+ update(Wrappers.<Bom>lambdaUpdate().set(Bom::getCurrentEdition, StatusConstant.No).eq(Bom::getProductId, productId));
|
|
|
|
+ updateById(bomVo);
|
|
|
|
+ return true;
|
|
|
|
+ });
|
|
|
|
+ Assert.eqTrue(flag, ErrorMsgConstant.SYSTEM_BUSY_ERROR);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
|
|
FileClientUtil.againBindingFile(bomVo.getId(), bomVo.getFileInfoParam());
|
|
FileClientUtil.againBindingFile(bomVo.getId(), bomVo.getFileInfoParam());
|
|
}
|
|
}
|