Browse Source

BUG修改。

cangku
wangfukang 2 years ago
parent
commit
38ef15632e
  1. 6
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductCategoryController.java
  2. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java
  3. 42
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java
  4. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ProductMapper.java
  5. 6
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalePageQuery.java
  6. 9
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ProductService.java
  7. 4
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java
  8. 12
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductServiceImpl.java
  9. 176
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java
  10. 60
      hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java
  11. 6
      hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml
  12. 2
      hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml
  13. 6
      hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml

6
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/ProductCategoryController.java

@ -6,6 +6,7 @@ import cc.hiver.core.common.vo.Result;
import cc.hiver.mall.entity.ProductCategory; import cc.hiver.mall.entity.ProductCategory;
import cc.hiver.mall.pojo.vo.ProductCategoryVo; import cc.hiver.mall.pojo.vo.ProductCategoryVo;
import cc.hiver.mall.service.mybatis.ProductCategoryService; import cc.hiver.mall.service.mybatis.ProductCategoryService;
import cc.hiver.mall.service.mybatis.ProductService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -30,6 +31,9 @@ public class ProductCategoryController {
@Autowired @Autowired
private ProductCategoryService productCategoryService; private ProductCategoryService productCategoryService;
@Autowired
private ProductService productService;
@Autowired @Autowired
private SecurityUtil securityUtil; private SecurityUtil securityUtil;
@ -65,6 +69,8 @@ public class ProductCategoryController {
@ApiOperation(value = "根据id删除货品类别") @ApiOperation(value = "根据id删除货品类别")
public Result delete(ProductCategory productCategory) { public Result delete(ProductCategory productCategory) {
boolean result = productCategoryService.removeById(productCategory); boolean result = productCategoryService.removeById(productCategory);
// 将该分类下的商品id删除掉
productService.deleteProductByCategoryId(productCategory.getId());
if (result) { if (result) {
return ResultUtil.success("删除成功"); return ResultUtil.success("删除成功");
} else { } else {

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/PurchaseController.java

@ -92,12 +92,9 @@ public class PurchaseController {
public Result delete(Purchase purchase) { public Result delete(Purchase purchase) {
final boolean result = purchaseService.removeById(purchase); final boolean result = purchaseService.removeById(purchase);
if (result) { if (result) {
final QueryWrapper<PurchaseDetail> deleteWrapper = new QueryWrapper<>(); // 删除采购单明细
deleteWrapper.eq("purchase_id", purchase.getId()); purchaseDetailService.deleteByPurchaseId(purchase.getId());
final boolean removeBatchByIds = purchaseDetailService.remove(deleteWrapper); return ResultUtil.error("删除成功!");
if (removeBatchByIds) {
return ResultUtil.success("删除成功");
}
} }
return ResultUtil.error("删除失败"); return ResultUtil.error("删除失败");
} }

42
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/controller/SaleController.java

@ -24,6 +24,7 @@ import cc.hiver.mall.service.*;
import cc.hiver.mall.service.mybatis.*; import cc.hiver.mall.service.mybatis.*;
import cc.hiver.mall.utils.DateUtil; import cc.hiver.mall.utils.DateUtil;
import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.text.CharSequenceUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@ -806,6 +807,42 @@ public class SaleController {
orderXd.setWorker(null); orderXd.setWorker(null);
orderXd.setOrderStatus(status); orderXd.setOrderStatus(status);
orderService.update(orderXd); orderService.update(orderXd);
// 库存退回去
// 封装退货的信息
List<ReturnSaleDetailDTO> returnDetails = new ArrayList<>();
final QueryWrapper<SaleDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.select("product_id")
.eq("sale_id", orderId)
.groupBy("product_id");
final List<String> list = saleDetailService.selectByCondition1(queryWrapper);
for (String productId : list) {
final QueryWrapper<SaleDetail> queryPWrapper = new QueryWrapper<>();
queryPWrapper.eq("sale_id", orderId).eq("product_id", productId);
final List<SaleDetail> saleDetailList = saleDetailService.list(queryPWrapper);
final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>();
final ReturnSaleDetailDTO returnSaleDetailDTO = new ReturnSaleDetailDTO();
for (SaleDetail saleDetail : saleDetailList) {
returnSaleDetailDTO.setProductId(productId);
returnSaleDetailDTO.setProductName(saleDetail.getProductName());
returnSaleDetailDTO.setUnit(saleDetail.getUnit());
returnSaleDetailDTO.setShopId(sale.getShopId());
returnSaleDetailDTO.setCategoryId(saleDetail.getCategoryId());
returnSaleDetailDTO.setSaleId(saleDetail.getSaleId());
returnSaleDetailDTO.setPrice(saleDetail.getPrice());
returnSaleDetailDTO.setWholesalePrice(saleDetail.getWholesalePrice());
returnSaleDetailDTO.setPurchasePrice(saleDetail.getPurchasePrice());
returnSaleDetailDTO.setDiscount(saleDetail.getDiscount());
returnSaleDetailDTO.setDiscountAmount(saleDetail.getDiscountAmount());
returnSaleDetailDTO.setRealPrice(saleDetail.getRealPrice());
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(saleDetail.getAttributeList());
saleDetailQueryDTO.setProductCount(saleDetail.getProductCount());
saleDetailQueryDTOS.add(saleDetailQueryDTO);
}
returnSaleDetailDTO.setStockLogList1(saleDetailQueryDTOS);
returnDetails.add(returnSaleDetailDTO);
}
stockAndLogService.handleRetIncStockLog(returnDetails);
return ResultUtil.success("取消订单成功"); return ResultUtil.success("取消订单成功");
} }
return ResultUtil.success(); return ResultUtil.success();
@ -935,7 +972,8 @@ public class SaleController {
if (StringUtils.isEmpty(aiMsg)) { if (StringUtils.isEmpty(aiMsg)) {
ResultUtil.error("指令不能为空!"); ResultUtil.error("指令不能为空!");
} }
final List<SaleDetailDTO> saleDetailDTOS = saleService.buyAi(aiMsg);
return new ResultUtil<List<SaleDetailDTO>>().setData(saleDetailDTOS); final JSONObject jsonObject = saleService.buyAi(aiMsg);
return new ResultUtil<JSONObject>().setData(jsonObject);
} }
} }

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/dao/mapper/ProductMapper.java

@ -54,4 +54,13 @@ public interface ProductMapper extends BaseMapper<Product> {
CopyOnWriteArrayList<Product> getProductByProductSnList(@Param("productSnList") List<String> productSnList, @Param("shopId") String shopId); CopyOnWriteArrayList<Product> getProductByProductSnList(@Param("productSnList") List<String> productSnList, @Param("shopId") String shopId);
CopyOnWriteArrayList<Product> getProductByProductNameList(@Param("productNameList") List<String> productNameList,@Param("shopId") String shopId); CopyOnWriteArrayList<Product> getProductByProductNameList(@Param("productNameList") List<String> productNameList,@Param("shopId") String shopId);
/**
* 删除分类时根据分类id删除商品信息
*
* @param categoryId 分类id
* @author 王富康
* @date 2024/4/22
*/
void deleteProductByCategoryId(@Param("categoryId") String categoryId);
} }

6
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/pojo/query/SalePageQuery.java

@ -51,4 +51,10 @@ public class SalePageQuery extends HiverBasePageQuery {
@ApiModelProperty("订单状态") @ApiModelProperty("订单状态")
private String status; private String status;
@ApiModelProperty("开始时间")
private String startDate;
@ApiModelProperty("结束时间")
private String endDate;
} }

9
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/ProductService.java

@ -36,4 +36,13 @@ public interface ProductService extends IService<Product> {
Product getByIdOrBrcode(String id); Product getByIdOrBrcode(String id);
List<Product> getByBarcode(String barcode); List<Product> getByBarcode(String barcode);
/**
* 删除分类时根据分类id删除商品信息
*
* @param categoryId 分类id
* @author 王富康
* @date 2024/4/22
*/
void deleteProductByCategoryId(String categoryId);
} }

4
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/service/mybatis/SaleService.java

@ -1,10 +1,10 @@
package cc.hiver.mall.service.mybatis; package cc.hiver.mall.service.mybatis;
import cc.hiver.mall.entity.Sale; import cc.hiver.mall.entity.Sale;
import cc.hiver.mall.pojo.dto.SaleDetailDTO;
import cc.hiver.mall.pojo.query.SalePageQuery; import cc.hiver.mall.pojo.query.SalePageQuery;
import cc.hiver.mall.pojo.query.SalesRankingQueryCriteria; import cc.hiver.mall.pojo.query.SalesRankingQueryCriteria;
import cc.hiver.mall.pojo.vo.*; import cc.hiver.mall.pojo.vo.*;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
@ -53,7 +53,7 @@ public interface SaleService extends IService<Sale> {
void buyAiSync(String aiMsg,String saleId); void buyAiSync(String aiMsg,String saleId);
List<SaleDetailDTO> buyAi(String aiMsg); JSONObject buyAi(String aiMsg);
void updateAiFlag(String id, Integer status); void updateAiFlag(String id, Integer status);

12
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/ProductServiceImpl.java

@ -79,4 +79,16 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();
return baseMapper.getByBarcode(barcode,shopId); return baseMapper.getByBarcode(barcode,shopId);
} }
/**
* 删除分类时根据分类id删除商品信息
*
* @param categoryId 分类id
* @author 王富康
* @date 2024/4/22
*/
@Override
public void deleteProductByCategoryId(String categoryId) {
baseMapper.deleteProductByCategoryId(categoryId);
}
} }

176
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/serviceimpl/mybatis/SaleServiceImpl.java

@ -36,6 +36,7 @@ import org.springframework.util.ObjectUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -493,6 +494,11 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
@Override @Override
public Page<SaleNoWorkerVO> getSaleByCompanyId(SalePageQuery salePageQuery) { public Page<SaleNoWorkerVO> getSaleByCompanyId(SalePageQuery salePageQuery) {
final Page<SaleNoWorkerVO> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize()); final Page<SaleNoWorkerVO> page = new Page<>(salePageQuery.getPageNum(), salePageQuery.getPageSize());
//结束时间-1天
if(StringUtils.isNotEmpty(salePageQuery.getEndDate())){
String endDate = DateUtil.addDay(salePageQuery.getEndDate(), 1);
salePageQuery.setEndDate(endDate);
}
final Page<SaleNoWorkerVO> saleNoWorkerVOPage = saleMapper.getSaleByCompanyId(page, salePageQuery); final Page<SaleNoWorkerVO> saleNoWorkerVOPage = saleMapper.getSaleByCompanyId(page, salePageQuery);
return saleNoWorkerVOPage; return saleNoWorkerVOPage;
} }
@ -554,10 +560,12 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
} }
@Override @Override
public List<SaleDetailDTO> buyAi(String aiMsg) { public JSONObject buyAi(String aiMsg) {
JSONObject returnJsonObject = new JSONObject();
// 叉转X 文本纠错 使用正则表达式替换单个或多个连续的“叉”字符 // 叉转X 文本纠错 使用正则表达式替换单个或多个连续的“叉”字符
aiMsg = replaceAllX(aiMsg); aiMsg = replaceAllX(aiMsg);
final List<SaleDetailDTO> saleDetailDTOS = new ArrayList<>(); final List<SaleDetailDTO> saleDetailDTOS = new ArrayList<>();
final CopyOnWriteArrayList<String> aiNotRecognitionList = new CopyOnWriteArrayList<>();
// shopId从缓存中设置 // shopId从缓存中设置
final String shopId = securityUtil.getShopId(); final String shopId = securityUtil.getShopId();
try { try {
@ -595,6 +603,36 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>(); final List<SaleDetailQueryDTO> saleDetailQueryDTOS = new ArrayList<>();
final String attributeList = object.getString("attributeList"); final String attributeList = object.getString("attributeList");
final JSONArray attributeListJsonArray = JSON.parseArray(attributeList); final JSONArray attributeListJsonArray = JSON.parseArray(attributeList);
// 获取商品分类及规格信息
final List<String> categoryIdList = new ArrayList<>();
categoryIdList.add(categoryId);
final List<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList);
final ProductCategoryVo productCategoryVo = shopCategory.get(0);
final List<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos();
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new HashMap<>();
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) {
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo);
}
//获取颜色及规格进行拼接
List<ProductAttributeValueVo> colorProductAttributeValueVoList = new ArrayList<>();
List<ProductAttributeValueVo> sizeProductAttributeValueVoList = new ArrayList<>();
if (productAttributeOfAddVoMap.containsKey("颜色")) {
colorProductAttributeValueVoList = productAttributeOfAddVoMap.get("颜色").getProductAttributeValueVoList();
}
// 将所有颜色放到一个集合中
final CopyOnWriteArrayList<String> colorList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
colorList.add(productAttributeValueVo.getValue());
}
if (productAttributeOfAddVoMap.containsKey("尺码")) {
sizeProductAttributeValueVoList = productAttributeOfAddVoMap.get("尺码").getProductAttributeValueVoList();
}
// 将所有尺码放到一个集合中
final CopyOnWriteArrayList<String> sizeList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : sizeProductAttributeValueVoList) {
sizeList.add(productAttributeValueVo.getValue());
}
for (int j = 0; j < attributeListJsonArray.size(); j++) { for (int j = 0; j < attributeListJsonArray.size(); j++) {
final JSONObject attributeListObject = attributeListJsonArray.getJSONObject(j); final JSONObject attributeListObject = attributeListJsonArray.getJSONObject(j);
String color = attributeListObject.getString("color").toUpperCase(); String color = attributeListObject.getString("color").toUpperCase();
@ -610,26 +648,8 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
size += '码'; size += '码';
} }
size = size.toUpperCase(); size = size.toUpperCase();
// if (color.contains("所有") && size.contains("所有")) {
if ("SYYS色".equals(color) && "SYCM码".equals(size)) { if ("SYYS色".equals(color) && "SYCM码".equals(size)) {
final List<String> categoryIdList = new ArrayList<>();
categoryIdList.add(categoryId);
final List<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList);
final ProductCategoryVo productCategoryVo = shopCategory.get(0);
final List<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos();
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new HashMap<>();
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) {
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo);
}
//获取颜色及规格进行拼接
List<ProductAttributeValueVo> colorProductAttributeValueVoList = new ArrayList<>();
List<ProductAttributeValueVo> sizeProductAttributeValueVoList = new ArrayList<>();
if (productAttributeOfAddVoMap.containsKey("颜色")) {
colorProductAttributeValueVoList = productAttributeOfAddVoMap.get("颜色").getProductAttributeValueVoList();
}
if (productAttributeOfAddVoMap.containsKey("尺码")) {
sizeProductAttributeValueVoList = productAttributeOfAddVoMap.get("尺码").getProductAttributeValueVoList();
}
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) { for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) { for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) {
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
@ -645,71 +665,75 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
// 所有颜色,所有尺码 // 所有颜色,所有尺码
} }
if ("SYYS色".equals(color)) { if ("SYYS色".equals(color)) {
// 所有颜色,固定尺码 if (sizeList.contains(size)) {
final List<String> categoryIdList = new ArrayList<>(); // 所有颜色,固定尺码
categoryIdList.add(categoryId); for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
final List<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
final ProductCategoryVo productCategoryVo = shopCategory.get(0); final String attribute = "{\"颜色\":\"" + productAttributeValueVo.getValue() + "\",\"尺码\":\"" + size + "\"}";
final List<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos(); saleDetailQueryDTO.setAttributeList(attribute);
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new HashMap<>(); saleDetailQueryDTO.setProductCount(productCount);
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) { saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null));
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo); saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount);
} saleDetailQueryDTOS.add(saleDetailQueryDTO);
//获取颜色及规格进行拼接 }
List<ProductAttributeValueVo> colorProductAttributeValueVoList = new ArrayList<>(); } else {
if (productAttributeOfAddVoMap.containsKey("颜色")) { final String msg = "商品:" + product.getProductName() + ",尺码:" + size + ",不存在";
colorProductAttributeValueVoList = productAttributeOfAddVoMap.get("颜色").getProductAttributeValueVoList(); aiNotRecognitionList.add(msg);
}
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
final String attribute = "{\"颜色\":\"" + productAttributeValueVo.getValue() + "\",\"尺码\":\"" + size + "\"}";
saleDetailQueryDTO.setAttributeList(attribute);
saleDetailQueryDTO.setProductCount(productCount);
saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null));
saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount);
saleDetailQueryDTOS.add(saleDetailQueryDTO);
} }
continue; continue;
} }
if ("SYCM码".equals(size)) { if ("SYCM码".equals(size)) {
// 所有尺码,固定颜色 if (colorList.contains(color)) {
final List<String> categoryIdList = new ArrayList<>(); // 所有尺码,固定颜色
categoryIdList.add(categoryId); for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) {
final List<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList); final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
final ProductCategoryVo productCategoryVo = shopCategory.get(0); final String attribute = "{\"颜色\":\"" + color + "\",\"尺码\":\"" + attributeValueVo.getValue() + "\"}";
final List<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos(); saleDetailQueryDTO.setAttributeList(attribute);
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new HashMap<>(); saleDetailQueryDTO.setProductCount(productCount);
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) { saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null));
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo); saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount);
} saleDetailQueryDTOS.add(saleDetailQueryDTO);
//获取颜色及规格进行拼接 }
List<ProductAttributeValueVo> sizeProductAttributeValueVoList = new ArrayList<>(); } else {
if (productAttributeOfAddVoMap.containsKey("尺码")) { final String msg = "商品:" + product.getProductName() + ",颜色:" + color + ",不存在";
sizeProductAttributeValueVoList = productAttributeOfAddVoMap.get("尺码").getProductAttributeValueVoList(); aiNotRecognitionList.add(msg);
}
for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) {
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
final String attribute = "{\"颜色\":\"" + color + "\",\"尺码\":\"" + attributeValueVo.getValue() + "\"}";
saleDetailQueryDTO.setAttributeList(attribute);
saleDetailQueryDTO.setProductCount(productCount);
saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null));
saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount);
saleDetailQueryDTOS.add(saleDetailQueryDTO);
} }
continue; continue;
} }
// 不包含所有按照获取的拼接 if (colorList.contains(color) && sizeList.contains(size)) {
final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO(); // 不包含所有按照获取的拼接
final String attribute = "{\"颜色\":\"" + color + "\",\"尺码\":\"" + size + "\"}"; final SaleDetailQueryDTO saleDetailQueryDTO = new SaleDetailQueryDTO();
saleDetailQueryDTO.setAttributeList(attribute); final String attribute = "{\"颜色\":\"" + color + "\",\"尺码\":\"" + size + "\"}";
saleDetailQueryDTO.setProductCount(productCount); saleDetailQueryDTO.setAttributeList(attribute);
saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null)); saleDetailQueryDTO.setProductCount(productCount);
saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount); saleDetailQueryDTO.setStockCount(stockMap.getOrDefault(attribute, null));
saleDetailQueryDTOS.add(saleDetailQueryDTO); saleDetailDTO.setProductCount(saleDetailDTO.getProductCount() + productCount);
saleDetailQueryDTOS.add(saleDetailQueryDTO);
} else {
// 封装颜色和尺码可能不存在的情况封装到返回结果中去
if (!colorList.contains(color) && !sizeList.contains(size)) {
// 颜色和尺码都不存在
final String msg = "商品:" + product.getProductName() + ",颜色:" + color + ",尺码:" + size + ",颜色及尺码都不存在";
aiNotRecognitionList.add(msg);
} else if (!colorList.contains(color)) {
// 颜色不存在
final String msg = "商品:" + product.getProductName() + ",颜色:" + color + ",不存在";
aiNotRecognitionList.add(msg);
} else if (!sizeList.contains(size)) {
final String msg = "商品:" + product.getProductName() + ",尺码:" + size + ",不存在";
aiNotRecognitionList.add(msg);
}
}
} }
saleDetailDTO.setStockLogList1(saleDetailQueryDTOS); saleDetailDTO.setStockLogList1(saleDetailQueryDTOS);
saleDetailDTOS.add(saleDetailDTO); saleDetailDTOS.add(saleDetailDTO);
} else { } else {
// 没查到去找下一个
final String msg = "货号为:" + productSn + "的商品,不存在";
aiNotRecognitionList.add(msg);
// 没查到去找下一个 // 没查到去找下一个
continue; continue;
} }
@ -720,7 +744,9 @@ public class SaleServiceImpl extends ServiceImpl<SaleMapper, Sale> implements Sa
} catch (InputRequiredException e) { } catch (InputRequiredException e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }
return saleDetailDTOS; returnJsonObject.put("data",saleDetailDTOS);
returnJsonObject.put("aiNotRecognition",String.join(";", aiNotRecognitionList));
return returnJsonObject;
} }
@Override @Override

60
hiver-modules/hiver-mall/src/main/java/cc/hiver/mall/utils/AliOcrUtil.java

@ -453,6 +453,35 @@ public class AliOcrUtil {
final String categoryId = product.getCategoryId(); final String categoryId = product.getCategoryId();
final String attributeList = object.getString("attributeList"); final String attributeList = object.getString("attributeList");
final JSONArray attributeListJsonArray = JSON.parseArray(attributeList); final JSONArray attributeListJsonArray = JSON.parseArray(attributeList);
final CopyOnWriteArrayList<String> categoryIdList = new CopyOnWriteArrayList<>();
categoryIdList.add(categoryId);
// 查询该店铺该分类下所有的颜色和尺码,进行对比,有则新增,无,则提醒用户无该规格
final CopyOnWriteArrayList<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList);
final ProductCategoryVo productCategoryVo = shopCategory.get(0);
final CopyOnWriteArrayList<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos();
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new ConcurrentHashMap<>();
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) {
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo);
}
//获取颜色及规格进行拼接
CopyOnWriteArrayList<ProductAttributeValueVo> colorProductAttributeValueVoList = new CopyOnWriteArrayList<>();
CopyOnWriteArrayList<ProductAttributeValueVo> sizeProductAttributeValueVoList = new CopyOnWriteArrayList<>();
if (productAttributeOfAddVoMap.containsKey("颜色")) {
colorProductAttributeValueVoList = productAttributeOfAddVoMap.get("颜色").getProductAttributeValueVoList();
}
// 将所有颜色放到一个集合中
final CopyOnWriteArrayList<String> colorList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
colorList.add(productAttributeValueVo.getValue());
}
if (productAttributeOfAddVoMap.containsKey("尺码")) {
sizeProductAttributeValueVoList = productAttributeOfAddVoMap.get("尺码").getProductAttributeValueVoList();
}
// 将所有尺码放到一个集合中
final CopyOnWriteArrayList<String> sizeList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : sizeProductAttributeValueVoList) {
sizeList.add(productAttributeValueVo.getValue());
}
for (int j = 0; j < attributeListJsonArray.size(); j++) { for (int j = 0; j < attributeListJsonArray.size(); j++) {
final JSONObject attributeListObject = attributeListJsonArray.getJSONObject(j); final JSONObject attributeListObject = attributeListJsonArray.getJSONObject(j);
String color = attributeListObject.getString("color").toUpperCase(); String color = attributeListObject.getString("color").toUpperCase();
@ -468,38 +497,7 @@ public class AliOcrUtil {
size += '码'; size += '码';
} }
size = size.toUpperCase(); size = size.toUpperCase();
final CopyOnWriteArrayList<String> categoryIdList = new CopyOnWriteArrayList<>();
categoryIdList.add(categoryId);
// 查询该店铺该分类下所有的颜色和尺码,进行对比,有则新增,无,则提醒用户无该规格
final CopyOnWriteArrayList<ProductCategoryVo> shopCategory = productCategoryService.getShopCategory(categoryIdList);
final ProductCategoryVo productCategoryVo = shopCategory.get(0);
final CopyOnWriteArrayList<ProductAttributeOfAddVo> productAttributeOfAddVos = productCategoryVo.getProductAttributeOfAddVos();
final Map<String, ProductAttributeOfAddVo> productAttributeOfAddVoMap = new ConcurrentHashMap<>();
for (ProductAttributeOfAddVo productAttributeOfAddVo : productAttributeOfAddVos) {
productAttributeOfAddVoMap.put(productAttributeOfAddVo.getAttributeName(), productAttributeOfAddVo);
}
//获取颜色及规格进行拼接
CopyOnWriteArrayList<ProductAttributeValueVo> colorProductAttributeValueVoList = new CopyOnWriteArrayList<>();
CopyOnWriteArrayList<ProductAttributeValueVo> sizeProductAttributeValueVoList = new CopyOnWriteArrayList<>();
if (productAttributeOfAddVoMap.containsKey("颜色")) {
colorProductAttributeValueVoList = productAttributeOfAddVoMap.get("颜色").getProductAttributeValueVoList();
}
// 将所有颜色放到一个集合中
final CopyOnWriteArrayList<String> colorList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
colorList.add(productAttributeValueVo.getValue());
}
if (productAttributeOfAddVoMap.containsKey("尺码")) {
sizeProductAttributeValueVoList = productAttributeOfAddVoMap.get("尺码").getProductAttributeValueVoList();
}
// 将所有尺码放到一个集合中
final CopyOnWriteArrayList<String> sizeList = new CopyOnWriteArrayList<>();
for (ProductAttributeValueVo productAttributeValueVo : sizeProductAttributeValueVoList) {
sizeList.add(productAttributeValueVo.getValue());
}
if ("SYYS色".equals(color) && "SYCM码".equals(size)) { if ("SYYS色".equals(color) && "SYCM码".equals(size)) {
for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) { for (ProductAttributeValueVo productAttributeValueVo : colorProductAttributeValueVoList) {
for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) { for (ProductAttributeValueVo attributeValueVo : sizeProductAttributeValueVoList) {
final SaleDetail saleDetail = new SaleDetail(); final SaleDetail saleDetail = new SaleDetail();

6
hiver-modules/hiver-mall/src/main/resources/mapper/ProductMapper.xml

@ -704,4 +704,10 @@
ORDER BY ORDER BY
create_time desc create_time desc
</select> </select>
<!-- 删除分类时,根据分类id删除商品信息-->
<update id="deleteProductByCategoryId" parameterType="java.lang.String">
update t_product
set del_flag = 2
where category_id = #{categoryId,jdbcType=VARCHAR}
</update>
</mapper> </mapper>

2
hiver-modules/hiver-mall/src/main/resources/mapper/PurchaseMapper.xml

@ -415,7 +415,7 @@
</if> </if>
<if test="queryParams.isAiList != null and queryParams.isAiList != ''"> <if test="queryParams.isAiList != null and queryParams.isAiList != ''">
<!-- 查询ai列表--> <!-- 查询ai列表-->
and in_storage_status in ('2','3') and in_storage_status in ('2','3','4')
</if> </if>
<if test="queryParams.searchStr != null and queryParams.searchStr != ''"> <if test="queryParams.searchStr != null and queryParams.searchStr != ''">
and (id in( and (id in(

6
hiver-modules/hiver-mall/src/main/resources/mapper/SaleMapper.xml

@ -861,9 +861,15 @@ trans_company, company_name, product_count, remark, sale_name, company_phone, cr
<if test='salePageQuery.status !=null and salePageQuery.status != ""'> <if test='salePageQuery.status !=null and salePageQuery.status != ""'>
and t.status = #{salePageQuery.status} and t.status = #{salePageQuery.status}
</if> </if>
<if test='salePageQuery.transportType !=null and salePageQuery.transportType != ""'>
and t.transport_type = #{salePageQuery.transportType}
</if>
<if test='salePageQuery.modeOfService !=null and salePageQuery.modeOfService != ""'> <if test='salePageQuery.modeOfService !=null and salePageQuery.modeOfService != ""'>
and t.mode_of_service = #{salePageQuery.modeOfService} and t.mode_of_service = #{salePageQuery.modeOfService}
</if> </if>
<if test='salePageQuery.startDate !=null and salePageQuery.endDate !=null'>
and t.create_time BETWEEN #{salePageQuery.startDate} AND #{salePageQuery.endDate}
</if>
</select> </select>

Loading…
Cancel
Save