|
@@ -1,12 +1,14 @@
|
|
|
package cn.cslg.pas.service.business;
|
|
|
|
|
|
import cn.cslg.pas.common.dto.business.ProductDTO;
|
|
|
+import cn.cslg.pas.common.dto.business.UpdateProductDTO;
|
|
|
import cn.cslg.pas.common.model.cronModel.*;
|
|
|
import cn.cslg.pas.common.model.request.GroupRequest;
|
|
|
import cn.cslg.pas.common.model.request.QueryRequest;
|
|
|
import cn.cslg.pas.common.utils.CacheUtils;
|
|
|
import cn.cslg.pas.common.utils.LoginUtils;
|
|
|
import cn.cslg.pas.common.vo.business.ProductVO;
|
|
|
+import cn.cslg.pas.domain.business.AssoProductCategoryPerson;
|
|
|
import cn.cslg.pas.domain.business.AssoProductFile;
|
|
|
import cn.cslg.pas.domain.business.AssoProductPerson;
|
|
|
import cn.cslg.pas.domain.business.Product;
|
|
@@ -71,19 +73,6 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
List<String> sqls = formatQueryService.reSqls(queryRequest,"product");
|
|
|
//根据sql查询产品信息
|
|
|
List<ProductVO> productVOS = productMapper.getProduct(sqls.get(0), sqls.get(1), sqls.get(2));
|
|
|
- //遍历查询出来的产品
|
|
|
- productVOS.forEach(item -> {
|
|
|
- //根据showType到产品与可见人员关联表中查询可见人员
|
|
|
- Integer showType = item.getShowType();
|
|
|
- if(showType == 2 && showType == 3){
|
|
|
- LambdaQueryWrapper<AssoProductPerson> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
- queryWrapper.eq(AssoProductPerson::getProductId, item.getId());
|
|
|
- queryWrapper.eq(AssoProductPerson::getRole, showType);
|
|
|
- List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(queryWrapper);
|
|
|
- List<String> showPersonIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
|
|
|
- item.setShowPersonIds(showPersonIds);
|
|
|
- }
|
|
|
- });
|
|
|
//查询总数
|
|
|
Long total = productMapper.getProductCount(sqls.get(0));
|
|
|
this.loadProduct(productVOS);
|
|
@@ -123,20 +112,53 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
//产品入库
|
|
|
Product product = new Product();
|
|
|
BeanUtils.copyProperties(productDTO, product);
|
|
|
- //TODO
|
|
|
- product.setCreateId(null);
|
|
|
+ product.setCreateId(personnelVO.getGuid());
|
|
|
product.setTenantId(personnelVO.getTenantId());
|
|
|
product.insert();
|
|
|
+ //将创建人默认设置为管理员插入到产品类别与可见人员类型表中
|
|
|
+ AssoProductPerson assoProductAdmin = new AssoProductPerson();
|
|
|
+ assoProductAdmin.setProductId(product.getId());
|
|
|
+ assoProductAdmin.setPersonId(personnelVO.getGuid());
|
|
|
+ assoProductAdmin.setRole(0);
|
|
|
+ assoProductAdmin.setCreateId(personnelVO.getGuid());
|
|
|
+ assoProductAdmin.insert();
|
|
|
+ //判断可见类型:
|
|
|
+ Integer showType = productDTO.getShowType();
|
|
|
+ if(showType != 0 && showType != 1){
|
|
|
+ List<String> showPersonIds = productDTO.getShowPersonIds();
|
|
|
+ //0所有人可见,1本人可见
|
|
|
+ if(showPersonIds != null && showPersonIds.size() != 0){
|
|
|
+ List<AssoProductPerson> assoProductPeople = new ArrayList<>();
|
|
|
+ for (String showPersonId : showPersonIds) {
|
|
|
+ AssoProductPerson assoProductPerson = new AssoProductPerson();
|
|
|
+ assoProductPerson.setProductId(product.getId());
|
|
|
+ assoProductPerson.setPersonId(showPersonId);
|
|
|
+ assoProductPerson.setCreateId(personnelVO.getGuid());
|
|
|
+ //2仅选定人可见
|
|
|
+ if (showType == 2) {
|
|
|
+ assoProductPerson.setRole(1);
|
|
|
+ } else if (showType == 3) {//3选定人不可见
|
|
|
+ assoProductPerson.setRole(2);
|
|
|
+ } else {
|
|
|
+ throw new XiaoShiException("可见类型错误");
|
|
|
+ }
|
|
|
+ assoProductPeople.add(assoProductPerson);
|
|
|
+ }
|
|
|
+ if(assoProductPeople != null && assoProductPeople.size() != 0){
|
|
|
+ assoProductPersonService.saveBatch(assoProductPeople);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
if(files != null && files.size() != 0) {
|
|
|
try {
|
|
|
+ //调用上传文件接口
|
|
|
List<String> guids = fileManagerService.uploadFileGetGuid(files);
|
|
|
List<AssoProductFile> assoProductFiles = new ArrayList<>();
|
|
|
for (String item : guids) {
|
|
|
AssoProductFile assoProductFile = new AssoProductFile();
|
|
|
assoProductFile.setProductId(product.getId());
|
|
|
assoProductFile.setFileGuid(item);
|
|
|
- //TODO
|
|
|
- assoProductFile.setCreateId("1");
|
|
|
+ assoProductFile.setCreateId(personnelVO.getGuid());
|
|
|
assoProductFiles.add(assoProductFile);
|
|
|
}
|
|
|
if (assoProductFiles != null && assoProductFiles.size() != 0) {
|
|
@@ -162,7 +184,6 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
queryWrapper.in(AssoProductFile::getProductId, ids);
|
|
|
List<AssoProductFile> assoProductFiles = assoProductFileService.list(queryWrapper);
|
|
|
List<String> guids = assoProductFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
|
|
|
- //TODO 根据guid删除文件
|
|
|
if (guids.size() != 0) {
|
|
|
fileManagerService.deleteFileFromFMS(guids);
|
|
|
}
|
|
@@ -182,16 +203,45 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
@Override
|
|
|
public Object updateMessage(Object object, List<MultipartFile> files) {
|
|
|
//object to product
|
|
|
- ProductDTO productDTO = (ProductDTO) object;
|
|
|
+ UpdateProductDTO updateProductDTO = (UpdateProductDTO) object;
|
|
|
+ if(updateProductDTO == null || updateProductDTO.getId() == null){
|
|
|
+ throw new XiaoShiException("参数错误");
|
|
|
+ }
|
|
|
+ Product product = this.getById(updateProductDTO.getId());
|
|
|
//检测名称是否不规范
|
|
|
- productDTO.setName(productDTO.getName().trim());
|
|
|
+ updateProductDTO.setName(updateProductDTO.getName().trim());
|
|
|
//根据名称查询数据库中是否存在
|
|
|
- String name = productDTO.getName();
|
|
|
+ String name = updateProductDTO.getName();
|
|
|
LambdaQueryWrapper<Product> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
queryWrapper.eq(Product::getName, name);
|
|
|
List<Product> products = this.list(queryWrapper);
|
|
|
- if(products == null || products.size() == 0){
|
|
|
- return null;
|
|
|
+ if(updateProductDTO.getName() != product.getName() && products.size() != 0){
|
|
|
+ throw new XiaoShiException("名称重复");
|
|
|
+ }
|
|
|
+ BeanUtils.copyProperties(updateProductDTO, product);
|
|
|
+ product.updateById();
|
|
|
+ //根据产品id查询对应的附件id
|
|
|
+ LambdaQueryWrapper<AssoProductFile> wrapper = new LambdaQueryWrapper<>();
|
|
|
+ wrapper.eq(AssoProductFile::getProductId, updateProductDTO.getId());
|
|
|
+ List<AssoProductFile> assoFiles = assoProductFileService.list(wrapper);
|
|
|
+ List<String> fileGuIds = assoFiles.stream().map(AssoProductFile::getFileGuid).collect(Collectors.toList());
|
|
|
+ //获取更新后的附件ids
|
|
|
+ List<String> updateFileGuIds = new ArrayList<>();
|
|
|
+ if(updateProductDTO.getGuids() != null && updateProductDTO.getGuids().size() != 0){
|
|
|
+ updateFileGuIds = updateProductDTO.getGuids();
|
|
|
+ }
|
|
|
+ fileGuIds.retainAll(updateFileGuIds);
|
|
|
+ //做差获得被删除的文件id
|
|
|
+ if(fileGuIds.size() != 0){
|
|
|
+ //根据文件id删除产品与文件关联表记录
|
|
|
+ LambdaQueryWrapper<AssoProductFile> deleteWrapper = new LambdaQueryWrapper<>();
|
|
|
+ deleteWrapper.in(AssoProductFile::getFileGuid, fileGuIds);
|
|
|
+ assoProductFileService.remove(deleteWrapper);
|
|
|
+ try{
|
|
|
+ fileManagerService.deleteFileFromFMS(fileGuIds);
|
|
|
+ } catch (Exception e){
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
//获取登陆人信息 用于设置创建人
|
|
|
PersonnelVO personnelVO;
|
|
@@ -200,9 +250,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
} catch (Exception e) {
|
|
|
throw new UnLoginException("未登录");
|
|
|
}
|
|
|
- Product product = this.getById(productDTO.getId());
|
|
|
- BeanUtils.copyProperties(productDTO, product);
|
|
|
- product.insert();
|
|
|
+ //添加文件
|
|
|
if (files != null && files.size() != 0) {
|
|
|
try {
|
|
|
List<String> guids = fileManagerService.uploadFileGetGuid(files);
|
|
@@ -211,8 +259,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
AssoProductFile assoProductFile = new AssoProductFile();
|
|
|
assoProductFile.setProductId(product.getId());
|
|
|
assoProductFile.setFileGuid(item);
|
|
|
- //TODO
|
|
|
- assoProductFile.setCreateId("1");
|
|
|
+ assoProductFile.setCreateId(personnelVO.getGuid());
|
|
|
assoProductFiles.add(assoProductFile);
|
|
|
}
|
|
|
if (assoProductFiles != null && assoProductFiles.size() != 0) {
|
|
@@ -230,6 +277,16 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Object addMessage(Object object) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object updateMessage(Object object) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 装载productVO
|
|
|
* @param productVOS
|
|
@@ -279,7 +336,7 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
//装载信息
|
|
|
for (ProductVO productVO:productVOS) {
|
|
|
//装载人员信息
|
|
|
- Personnel personnel = personnels.stream().filter(item -> item.getId().equals(productVO.getCreateId())).findFirst().orElse(null);
|
|
|
+ Personnel personnel = personnels.stream().filter(item -> item.getGuid().equals(productVO.getCreateId())).findFirst().orElse(null);
|
|
|
if(personnel != null){
|
|
|
productVO.setCreateName(personnel.getPersonnelName());
|
|
|
}
|
|
@@ -294,6 +351,16 @@ public class ProductService extends ServiceImpl<ProductMapper, Product> implemen
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ //装载可见人员ids
|
|
|
+ Integer showType = productVO.getShowType();
|
|
|
+ if(showType == 2 && showType == 3){
|
|
|
+ LambdaQueryWrapper<AssoProductPerson> queryWrapper = new LambdaQueryWrapper<>();
|
|
|
+ queryWrapper.eq(AssoProductPerson::getProductId, productVO.getId());
|
|
|
+ queryWrapper.eq(AssoProductPerson::getRole, showType);
|
|
|
+ List<AssoProductPerson> assoProductPeople = assoProductPersonService.list(queryWrapper);
|
|
|
+ List<String> showPersonIds = assoProductPeople.stream().map(AssoProductPerson::getPersonId).collect(Collectors.toList());
|
|
|
+ productVO.setShowPersonIds(showPersonIds);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|