From 0a4c44f06b6b7dc0b13a76bcad4ad2b4b188da91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Nov 2025 09:32:49 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=B8=8A=E8=8F=9C=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cash-api/product-server/src/main/resources/application.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/cash-api/product-server/src/main/resources/application.yml b/cash-api/product-server/src/main/resources/application.yml index 4742d4a3d..e8fa88ffb 100644 --- a/cash-api/product-server/src/main/resources/application.yml +++ b/cash-api/product-server/src/main/resources/application.yml @@ -7,6 +7,9 @@ spring: profiles: active: dev include: tools + servlet: + multipart: + max-file-size: 10MB wx: ysk: appId: wx212769170d2c6b2a From 9ad71dc70b04a9a7676f37e3619b01444d28a731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Nov 2025 09:43:45 +0800 Subject: [PATCH 2/5] =?UTF-8?q?ocr=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/ConsStockFlowController.java | 14 ++- .../java/com/czg/market/dto/MkOcrDTO.java | 43 ++++++++++ .../java/com/czg/market/entity/MkOcr.java | 49 +++++++++++ .../com/czg/market/service/MkOcrService.java | 14 +++ .../product/service/ConsStockFlowService.java | 4 +- .../src/main/java/com/czg/Main.java | 8 +- .../service/market/mapper/MkOcrMapper.java | 14 +++ .../market/service/impl/MkOcrServiceImpl.java | 18 ++++ .../src/main/resources/mapper/MkOcrMapper.xml | 7 ++ .../service/impl/OrderInfoServiceImpl.java | 7 +- .../impl/ConsStockFlowServiceImpl.java | 86 ++++++++++++------- 11 files changed, 223 insertions(+), 41 deletions(-) create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkOcrDTO.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkOcr.java create mode 100644 cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java create mode 100644 cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java create mode 100644 cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java create mode 100644 cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml diff --git a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java index bfbcedde5..077c57b4c 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/admin/ConsStockFlowController.java @@ -1,6 +1,5 @@ package com.czg.controller.admin; -import com.czg.annotation.SaStaffCheckPermission; import com.czg.log.annotation.OperationLog; import com.czg.product.dto.ConsStockFlowDTO; import com.czg.product.param.ConsCheckStockParam; @@ -41,10 +40,21 @@ public class ConsStockFlowController { * @throws IOException */ @PostMapping("/ocr") - public CzgResult ocr(@RequestParam MultipartFile file) throws IOException { + public CzgResult ocr(@RequestParam MultipartFile file) throws IOException { return CzgResult.success(consStockFlowService.ocr(file.getOriginalFilename(), file.getInputStream())); } + /** + * ocr识别结果 + * @param id ocrId + * @return 识别结果 + */ + @GetMapping("/ocrResult") + public CzgResult ocrResult(@RequestParam Long id) { + return CzgResult.success(consStockFlowService.ocrDetail(id)); + } + + /** * 耗材入库 */ diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkOcrDTO.java b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkOcrDTO.java new file mode 100644 index 000000000..4feceff8b --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/dto/MkOcrDTO.java @@ -0,0 +1,43 @@ + +package com.czg.market.dto; + +import java.io.Serializable; +import java.time.LocalDateTime; +import com.alibaba.fastjson2.annotation.JSONField; +import lombok.experimental.Accessors; +import java.io.Serial; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ocr识别结果 实体类。 + * + * @author zs + * @since 2025-11-26 + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Accessors(chain = true) +public class MkOcrDTO implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + private Integer id; + + /** + * 响应内容 + */ + private String resp; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @JSONField(format = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; + + private Integer shopId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkOcr.java b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkOcr.java new file mode 100644 index 000000000..636bdb1f0 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/entity/MkOcr.java @@ -0,0 +1,49 @@ +package com.czg.market.entity; + +import com.mybatisflex.annotation.Column; +import com.mybatisflex.annotation.Id; +import com.mybatisflex.annotation.KeyType; +import com.mybatisflex.annotation.Table; +import java.io.Serializable; +import java.time.LocalDateTime; + +import java.io.Serial; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * ocr识别结果 实体类。 + * + * @author zs + * @since 2025-11-26 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table("mk_ocr") +public class MkOcr implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Integer id; + + /** + * 响应内容 + */ + private String resp; + + @Column(onInsertValue = "now()") + private LocalDateTime createTime; + + @Column(onInsertValue = "now()", onUpdateValue = "now()") + private LocalDateTime updateTime; + + private Long shopId; + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java new file mode 100644 index 000000000..a1918fa25 --- /dev/null +++ b/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java @@ -0,0 +1,14 @@ +package com.czg.market.service; + +import com.mybatisflex.core.service.IService; +import com.czg.market.entity.MkOcr; + +/** + * ocr识别结果 服务层。 + * + * @author zs + * @since 2025-11-26 + */ +public interface MkOcrService extends IService { + +} diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsStockFlowService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsStockFlowService.java index 77faab791..aca4cb621 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsStockFlowService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/service/ConsStockFlowService.java @@ -78,5 +78,7 @@ public interface ConsStockFlowService extends IService { */ void saveFlow(ConsStockFlow entity); - ConsInOutStockHeadParam ocr(String originalFilename, InputStream inputStream); + Integer ocr(String originalFilename, InputStream inputStream); + + ConsInOutStockHeadParam ocrDetail(Long id); } diff --git a/cash-service/code-generator/src/main/java/com/czg/Main.java b/cash-service/code-generator/src/main/java/com/czg/Main.java index 2c2e58900..2a7f179b6 100644 --- a/cash-service/code-generator/src/main/java/com/czg/Main.java +++ b/cash-service/code-generator/src/main/java/com/czg/Main.java @@ -29,13 +29,13 @@ public class Main { // orSqlTest(); - String packageName = "system"; +// String packageName = "system"; // String packageName = "account"; // String packageName = "product"; -// String packageName = "market"; + String packageName = "market"; // tableName 指定需要生成的表 - String tableName = "sys_devices"; - String author = "ww"; + String tableName = "mk_ocr"; + String author = "zs"; //是否生成DTO实体 默认生成 boolean isGenerateDto = true; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java new file mode 100644 index 000000000..abc5ef710 --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java @@ -0,0 +1,14 @@ +package com.czg.service.market.mapper; + +import com.mybatisflex.core.BaseMapper; +import com.czg.market.entity.MkOcr; + +/** + * ocr识别结果 映射层。 + * + * @author zs + * @since 2025-11-26 + */ +public interface MkOcrMapper extends BaseMapper { + +} diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java new file mode 100644 index 000000000..d3046f1e8 --- /dev/null +++ b/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java @@ -0,0 +1,18 @@ +package com.czg.service.market.service.impl; + +import com.mybatisflex.spring.service.impl.ServiceImpl; +import com.czg.market.entity.MkOcr; +import com.czg.market.service.MkOcrService; +import com.czg.service.market.mapper.MkOcrMapper; +import org.springframework.stereotype.Service; + +/** + * ocr识别结果 服务层实现。 + * + * @author zs + * @since 2025-11-26 + */ +@Service +public class MkOcrServiceImpl extends ServiceImpl implements MkOcrService{ + +} diff --git a/cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml b/cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml new file mode 100644 index 000000000..4f8e5a62d --- /dev/null +++ b/cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java index 6156d523e..102bc59ba 100644 --- a/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java +++ b/cash-service/order-service/src/main/java/com/czg/service/order/service/impl/OrderInfoServiceImpl.java @@ -1729,9 +1729,12 @@ public class OrderInfoServiceImpl extends ServiceImpl { + String infoStr = AliOcrUtil.appCall(inputStream, originalFilename); + SaleOrderDTO saleOrderDTO = JSONObject.parseObject(infoStr, SaleOrderDTO.class); - ArrayList bodyList = new ArrayList<>(); - Set nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet()); - Map consInfoMap = new HashMap<>(); - if (!nameList.isEmpty()) { - consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList)) - .stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo)); - } - ArrayList unInCons = new ArrayList<>(); - for (SaleOrderDTO.Item item : saleOrderDTO.getItems()) { - ConsInfo consInfo = consInfoMap.get(item.getConName()); - if (consInfo == null) { - unInCons.add(item); - continue; + ArrayList bodyList = new ArrayList<>(); + Set nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet()); + Map consInfoMap = new HashMap<>(); + if (!nameList.isEmpty()) { + consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList)) + .stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo)); + } + ArrayList 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()))); } - 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; + ConsInOutStockHeadParam headParam = new ConsInOutStockHeadParam(); + headParam.setBatchNo(saleOrderDTO.getOrderNumber()) + .setInOutDate(LocalDate.parse(saleOrderDTO.getDate())) + .setAmountPayable(new BigDecimal(saleOrderDTO.getTotalAmount())) + .setBodyList(bodyList) + .setUnInCons(unInCons) + .setOcrSaleOrder(saleOrderDTO); + + mkOcr.setResp(JSON.toJSONString(headParam)); + ocrService.updateById(mkOcr); + }); + + return mkOcr.getId(); + } + + @Override + public ConsInOutStockHeadParam ocrDetail(Long id) { + MkOcr mkOcr = ocrService.getOne(new QueryWrapper().eq(MkOcr::getShopId, StpKit.USER.getShopId()).eq(MkOcr::getId, id)); + if (StrUtil.isNotBlank(mkOcr.getResp())) { + return JSONObject.parseObject(mkOcr.getResp(), ConsInOutStockHeadParam.class); + } + return null; } } From fbe5410d230400c3bf75a11c02907c148329d32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Nov 2025 09:47:51 +0800 Subject: [PATCH 3/5] =?UTF-8?q?ocr=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{market/service => product/entity}/MkOcrService.java | 2 +- .../java/com/czg/service/product}/mapper/MkOcrMapper.java | 2 +- .../product/service/impl/ConsStockFlowServiceImpl.java | 2 +- .../czg/service/product}/service/impl/MkOcrServiceImpl.java | 6 +++--- .../src/main/resources/mapper/MkOcrMapper.xml | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) rename cash-common/cash-common-service/src/main/java/com/czg/{market/service => product/entity}/MkOcrService.java (87%) rename cash-service/{market-service/src/main/java/com/czg/service/market => product-service/src/main/java/com/czg/service/product}/mapper/MkOcrMapper.java (84%) rename cash-service/{market-service/src/main/java/com/czg/service/market => product-service/src/main/java/com/czg/service/product}/service/impl/MkOcrServiceImpl.java (70%) rename cash-service/{market-service => product-service}/src/main/resources/mapper/MkOcrMapper.xml (73%) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/MkOcrService.java similarity index 87% rename from cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java rename to cash-common/cash-common-service/src/main/java/com/czg/product/entity/MkOcrService.java index a1918fa25..4ee414e72 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/market/service/MkOcrService.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/entity/MkOcrService.java @@ -1,4 +1,4 @@ -package com.czg.market.service; +package com.czg.product.entity; import com.mybatisflex.core.service.IService; import com.czg.market.entity.MkOcr; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/MkOcrMapper.java similarity index 84% rename from cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java rename to cash-service/product-service/src/main/java/com/czg/service/product/mapper/MkOcrMapper.java index abc5ef710..32b6370dd 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/mapper/MkOcrMapper.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/mapper/MkOcrMapper.java @@ -1,4 +1,4 @@ -package com.czg.service.market.mapper; +package com.czg.service.product.mapper; import com.mybatisflex.core.BaseMapper; import com.czg.market.entity.MkOcr; diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java index 5ddd60016..a2980e46c 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java @@ -10,7 +10,7 @@ import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.czg.exception.CzgException; import com.czg.market.entity.MkOcr; -import com.czg.market.service.MkOcrService; +import com.czg.product.entity.MkOcrService; import com.czg.product.dto.ConsStockFlowDTO; import com.czg.product.dto.SaleOrderDTO; import com.czg.product.entity.ConsInfo; diff --git a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/MkOcrServiceImpl.java similarity index 70% rename from cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java rename to cash-service/product-service/src/main/java/com/czg/service/product/service/impl/MkOcrServiceImpl.java index d3046f1e8..c8a13e56d 100644 --- a/cash-service/market-service/src/main/java/com/czg/service/market/service/impl/MkOcrServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/MkOcrServiceImpl.java @@ -1,9 +1,9 @@ -package com.czg.service.market.service.impl; +package com.czg.service.product.service.impl; +import com.czg.service.product.mapper.MkOcrMapper; import com.mybatisflex.spring.service.impl.ServiceImpl; import com.czg.market.entity.MkOcr; -import com.czg.market.service.MkOcrService; -import com.czg.service.market.mapper.MkOcrMapper; +import com.czg.product.entity.MkOcrService; import org.springframework.stereotype.Service; /** diff --git a/cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml b/cash-service/product-service/src/main/resources/mapper/MkOcrMapper.xml similarity index 73% rename from cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml rename to cash-service/product-service/src/main/resources/mapper/MkOcrMapper.xml index 4f8e5a62d..e79850708 100644 --- a/cash-service/market-service/src/main/resources/mapper/MkOcrMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/MkOcrMapper.xml @@ -2,6 +2,6 @@ - + From a6f0637927ef0715b3cd099a2bf33a954597eca7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Nov 2025 09:56:01 +0800 Subject: [PATCH 4/5] =?UTF-8?q?ocr=E8=AF=86=E5=88=AB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ConsStockFlowServiceImpl.java | 71 ++++++++++--------- 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java index a2980e46c..9a87b456c 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java @@ -270,42 +270,49 @@ public class ConsStockFlowServiceImpl extends ServiceImpl { - String infoStr = AliOcrUtil.appCall(inputStream, originalFilename); - SaleOrderDTO saleOrderDTO = JSONObject.parseObject(infoStr, SaleOrderDTO.class); + try { - ArrayList bodyList = new ArrayList<>(); - Set nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet()); - Map consInfoMap = new HashMap<>(); - if (!nameList.isEmpty()) { - consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList)) - .stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo)); - } - ArrayList unInCons = new ArrayList<>(); - for (SaleOrderDTO.Item item : saleOrderDTO.getItems()) { - ConsInfo consInfo = consInfoMap.get(item.getConName()); - if (consInfo == null) { - unInCons.add(item); - continue; + String infoStr = AliOcrUtil.appCall(inputStream, originalFilename); + SaleOrderDTO saleOrderDTO = JSONObject.parseObject(infoStr, SaleOrderDTO.class); + + ArrayList bodyList = new ArrayList<>(); + Set nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet()); + Map consInfoMap = new HashMap<>(); + if (!nameList.isEmpty()) { + consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList).eq(ConsInfo::getShopId, StpKit.USER.getShopId())) + .stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo)); } - 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()))); + ArrayList 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); + + + mkOcr.setResp(JSON.toJSONString(headParam)); + ocrService.updateById(mkOcr); + }catch (Exception e) { + log.warn("ocr失败: {}", e.getMessage()); } - ConsInOutStockHeadParam headParam = new ConsInOutStockHeadParam(); - headParam.setBatchNo(saleOrderDTO.getOrderNumber()) - .setInOutDate(LocalDate.parse(saleOrderDTO.getDate())) - .setAmountPayable(new BigDecimal(saleOrderDTO.getTotalAmount())) - .setBodyList(bodyList) - .setUnInCons(unInCons) - .setOcrSaleOrder(saleOrderDTO); - - mkOcr.setResp(JSON.toJSONString(headParam)); - ocrService.updateById(mkOcr); }); return mkOcr.getId(); From 44e01fbf6f6f80e2e4e3d2a83905be6303e9816f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Wed, 26 Nov 2025 09:56:50 +0800 Subject: [PATCH 5/5] =?UTF-8?q?ocr=E8=AF=86=E5=88=AB=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/service/impl/ConsStockFlowServiceImpl.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java index 9a87b456c..bfd05a220 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ConsStockFlowServiceImpl.java @@ -266,8 +266,9 @@ public class ConsStockFlowServiceImpl extends ServiceImpl { try { @@ -279,7 +280,7 @@ public class ConsStockFlowServiceImpl extends ServiceImpl nameList = saleOrderDTO.getItems().stream().map(SaleOrderDTO.Item::getConName).collect(Collectors.toSet()); Map consInfoMap = new HashMap<>(); if (!nameList.isEmpty()) { - consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList).eq(ConsInfo::getShopId, StpKit.USER.getShopId())) + consInfoMap = consInfoMapper.selectListByQuery(new QueryWrapper().in(ConsInfo::getConName, nameList).eq(ConsInfo::getShopId, shopId)) .stream().collect(Collectors.toMap(ConsInfo::getConName, consInfo -> consInfo)); } ArrayList unInCons = new ArrayList<>();