ocr入库

This commit is contained in:
张松
2025-11-25 11:33:54 +08:00
parent eed5fd3ea4
commit a995e8db25
9 changed files with 181 additions and 23 deletions

View File

@@ -18,6 +18,7 @@ import com.czg.market.service.TbMemberConfigService;
import com.czg.market.vo.MemberConfigVO;
import com.czg.exception.CzgException;
import com.czg.market.dto.MemberOrderDTO;
import com.czg.market.vo.MmberOrderVO;
import com.czg.order.service.OrderInfoService;
import com.czg.order.service.OrderPaymentService;
import com.czg.sa.StpKit;
@@ -64,7 +65,7 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
LocalDateTime start = StrUtil.isBlank(startTime) ? null : DateUtil.parseLocalDateTime(startTime);
LocalDateTime end = StrUtil.isBlank(endTime) ? null : DateUtil.parseLocalDateTime(endTime);
Map<String, Object> map = BeanUtil.beanToMap(page(PageUtil.buildPage(), QueryWrapper.create()
Map<String, Object> map = BeanUtil.beanToMap(pageAs(PageUtil.buildPage(), QueryWrapper.create()
.leftJoin(UserInfoTableDef.USER_INFO).on(UserInfoTableDef.USER_INFO.ID.eq(MemberOrderTableDef.MEMBER_ORDER.USER_ID))
.leftJoin(ShopUserTableDef.SHOP_USER).on(ShopUserTableDef.SHOP_USER.MAIN_SHOP_ID.eq(MemberOrderTableDef.MEMBER_ORDER.SHOP_ID)
.and(ShopUserTableDef.SHOP_USER.USER_ID.eq(MemberOrderTableDef.MEMBER_ORDER.USER_ID)))
@@ -80,7 +81,10 @@ public class MemberOrderServiceImpl extends ServiceImpl<MemberOrderMapper, Membe
});
})
.eq(MemberOrder::getShopId, StpKit.USER.getMainShopId())
.orderBy(MemberOrder::getCreateTime, true)
.select(MemberOrderTableDef.MEMBER_ORDER.ALL_COLUMNS)
.select(ShopUserTableDef.SHOP_USER.NICK_NAME,
ShopUserTableDef.SHOP_USER.PHONE)
.orderBy(MemberOrder::getCreateTime, true), MmberOrderVO.class
));
map.put("totalAmount", getOneAsOpt(QueryWrapper.create()
.leftJoin(UserInfoTableDef.USER_INFO).on(UserInfoTableDef.USER_INFO.ID.eq(MemberOrderTableDef.MEMBER_ORDER.USER_ID))

View File

@@ -7,16 +7,15 @@ import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.czg.exception.CzgException;
import com.czg.product.dto.ConsStockFlowDTO;
import com.czg.product.dto.SaleOrderDTO;
import com.czg.product.entity.ConsInfo;
import com.czg.product.entity.ConsStockFlow;
import com.czg.product.enums.InOutItemEnum;
import com.czg.product.enums.InOutTypeEnum;
import com.czg.product.param.ConsCheckStockParam;
import com.czg.product.param.ConsInOutStockHeadParam;
import com.czg.product.param.ConsReportDamageParam;
import com.czg.product.param.ConsStockFlowParam;
import com.czg.product.param.*;
import com.czg.product.service.ConsStockFlowService;
import com.czg.product.vo.ConsCheckStockRecordVo;
import com.czg.sa.StpKit;
@@ -24,6 +23,7 @@ import com.czg.service.product.mapper.ConsInfoMapper;
import com.czg.service.product.mapper.ConsStockFlowMapper;
import com.czg.service.product.mapper.ProductMapper;
import com.czg.service.product.util.WxAccountUtil;
import com.czg.utils.AliOcrUtil;
import com.czg.utils.PageUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
@@ -36,9 +36,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
/**
* 耗材库存变动记录
@@ -258,4 +260,41 @@ public class ConsStockFlowServiceImpl extends ServiceImpl<ConsStockFlowMapper, C
}
}
@Override
public ConsInOutStockHeadParam ocr(String originalFilename, InputStream inputStream) {
String infoStr = AliOcrUtil.appCall(inputStream, originalFilename);
SaleOrderDTO saleOrderDTO = JSONObject.parseObject(infoStr, SaleOrderDTO.class);
ArrayList<ConsInOutStockBodyParam> bodyList = new ArrayList<>();
Set<String> nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet());
Map<String, ConsInfo> consInfoMap = new HashMap<>();
if (!nameList.isEmpty()) {
consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList))
.stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo));
}
ArrayList<SaleOrderDTO.Item> unInCons = new ArrayList<>();
for (SaleOrderDTO.Item item : saleOrderDTO.getItems()) {
ConsInfo consInfo = consInfoMap.get(item.getConName());
if (consInfo == null) {
unInCons.add(item);
continue;
}
bodyList.add(new ConsInOutStockBodyParam()
.setConId(consInfo.getId().toString())
.setConName(consInfo.getConName())
.setPurchasePrice(new BigDecimal(item.getPurchasePrice()))
.setUnitName(item.getUnitName())
.setSubTotal(new BigDecimal(item.getSubTotal()))
.setInOutNumber(new BigDecimal(item.getInOutNumber())));
}
ConsInOutStockHeadParam headParam = new ConsInOutStockHeadParam();
headParam.setBatchNo(saleOrderDTO.getOrderNumber())
.setInOutDate(LocalDate.parse(saleOrderDTO.getDate()))
.setAmountPayable(new BigDecimal(saleOrderDTO.getTotalAmount()))
.setBodyList(bodyList)
.setUnInCons(unInCons)
.setOcrSaleOrder(saleOrderDTO);
return headParam;
}
}