From c8a85d51192494f87fc19d7d8af1562fd7831c02 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Fri, 7 Nov 2025 10:06:53 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E6=B0=B4=E9=80=BB=E8=BE=91=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/Schedule/DynamicTaskScheduler.java | 3 + .../client/controller/WebController.java | 2 +- .../java/com/small/client/dao/SxDataDao.java | 75 +++++++++++++------ .../com/small/client/dto/DataBaseInfo.java | 2 +- .../dto/ProductQuantityConsumptionDto.java | 3 + .../client/service/imp/SxDataServiceImp.java | 13 ++-- 6 files changed, 69 insertions(+), 29 deletions(-) diff --git a/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java b/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java index 941406c0..23b9bf55 100644 --- a/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java +++ b/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java @@ -96,6 +96,9 @@ public class DynamicTaskScheduler { commentModel =sxDataService.getCommentModel(); } DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); + if(dataBaseInfo==null||StringUtils.isEmpty(dataBaseInfo.getUserName())){ + return; + } if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){ commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime())); } diff --git a/client/src/main/java/com/small/client/controller/WebController.java b/client/src/main/java/com/small/client/controller/WebController.java index 21d45b73..0acedea2 100644 --- a/client/src/main/java/com/small/client/controller/WebController.java +++ b/client/src/main/java/com/small/client/controller/WebController.java @@ -75,7 +75,7 @@ public class WebController { //sxDataService.getAppSign(); CommentModel commentModel= sxDataService.getCommentModel(); DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); - if(dataBaseInfo==null){ + if(dataBaseInfo==null||StringUtils.isEmpty(dataBaseInfo.getUserName())){ log.error("syncGoods dataBaseInfo is null"); return; } diff --git a/client/src/main/java/com/small/client/dao/SxDataDao.java b/client/src/main/java/com/small/client/dao/SxDataDao.java index 2eab7769..d9de60c4 100644 --- a/client/src/main/java/com/small/client/dao/SxDataDao.java +++ b/client/src/main/java/com/small/client/dao/SxDataDao.java @@ -515,20 +515,22 @@ public class SxDataDao extends BaseDao{ int count = 0; Set sme=map.entrySet(); for (Map.Entry entry : sme) { - + String key=entry.getKey().toString(); + String[] splitKey = key.split("-"); + if(splitKey.length!=2){ + continue; + } + String itemNo = splitKey[1]; BigDecimal stock_qty= (BigDecimal) entry.getValue(); + if(stock_qty.compareTo(BigDecimal.ZERO)==0){ continue; } - String itemNo = (String) entry.getKey(); ProductQuantityConsumptionDto productQuantityConsumptionDto=pqMap.get(itemNo); - BigDecimal unitPrice = productQuantityConsumptionDto.getUnitPrice(); - RmSaleflow rmSaleflow=new RmSaleflow(); - rmSaleflow.setItemNo(itemNo); - rmSaleflow.setSalePrice(unitPrice); - rmSaleflow.setSaleQnty(stock_qty); - rmSaleflow.setSourcePrice(unitPrice); - rmSaleflow.setFlownoRand(productQuantityConsumptionDto.getOrderId());//随机子单号 设置网上订单号 + if(productQuantityConsumptionDto.getSaleAmount().compareTo(BigDecimal.ZERO)==0){ + continue; + } + RmSaleflow rmSaleflow = getRmSaleflow(productQuantityConsumptionDto, itemNo, stock_qty); rmSaleflow= fixRmSaleFlow(rmSaleflow,brachNo,itemInfoMap,dataBaseInfo.getSaleAccount()); TRmPayflow trmPayflow=fixTRmPayflow(rmSaleflow); @@ -587,6 +589,25 @@ public class SxDataDao extends BaseDao{ } } + /** + * 封装对象 + * @param productQuantityConsumptionDto + * @param itemNo + * @param stock_qty + * @return + */ + private RmSaleflow getRmSaleflow(ProductQuantityConsumptionDto productQuantityConsumptionDto, String itemNo, BigDecimal stock_qty) { + BigDecimal unitPrice = productQuantityConsumptionDto.getUnitPrice(); + RmSaleflow rmSaleflow=new RmSaleflow(); + rmSaleflow.setItemNo(itemNo); + rmSaleflow.setSalePrice(unitPrice); + rmSaleflow.setSaleQnty(stock_qty); + rmSaleflow.setSaleMoney(productQuantityConsumptionDto.getSaleAmount()); + // rmSaleflow.setSourcePrice(unitPrice); + rmSaleflow.setFlownoRand(productQuantityConsumptionDto.getOrderId());//随机子单号 设置网上订单号 + return rmSaleflow; + } + /** * 补充字段 * @param rmSaleflow @@ -597,7 +618,8 @@ public class SxDataDao extends BaseDao{ rmSaleflow.setFlowId(1); String orderId=rmSaleflow.getFlownoRand(); String[] orderIdSplits= orderId.split("_"); - String DateStr=DateUtil.format(new java.util.Date(),"yyyyMMdd"); + //String DateStr=DateUtil.format(new java.util.Date(),"yyyyMMdd"); + String DateStr=orderIdSplits[1]; String number= String.format("%04d", Integer.valueOf(orderIdSplits[orderIdSplits.length-1])); String flowNo="99"+DateStr+number; rmSaleflow.setFlowNo(flowNo);//订单号 todo @@ -612,17 +634,18 @@ public class SxDataDao extends BaseDao{ rmSaleflow.setSaleQnty(saleQnty); rmSaleflow.setRetQnty(BigDecimal.ZERO); } - BigDecimal saleMoney=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()); - if(rmSaleflow.getSaleQnty().compareTo(BigDecimal.ZERO)<0){ - saleMoney=saleMoney.multiply(new BigDecimal("-1")); - } - rmSaleflow.setSaleMoney(saleMoney); +// BigDecimal saleMoney=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()); +// if(rmSaleflow.getSaleQnty().compareTo(BigDecimal.ZERO)<0){ +// saleMoney=saleMoney.multiply(new BigDecimal("-1")); +// } +// rmSaleflow.setSaleMoney(saleMoney); //判断取值 end //数据库查询取值start todo ItemInfo itemInfo=itemInfoMap.get(rmSaleflow.getItemNo()); if(itemInfo!=null){ rmSaleflow.setInPrice(itemInfo.getPrice()); + rmSaleflow.setSourcePrice(itemInfo.getSalePrice()); rmSaleflow.setOperDate(new Timestamp(System.currentTimeMillis())); } rmSaleflow.setBranchNo(branchNo); @@ -654,11 +677,12 @@ public class SxDataDao extends BaseDao{ TRmPayflow rmPayflow=new TRmPayflow(); rmPayflow.setFlowId(rmSaleflow.getFlowId()); rmPayflow.setFlowNo(rmSaleflow.getFlowNo()); - BigDecimal saleAmount=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()).setScale(2, RoundingMode.HALF_UP); - if(saleAmount.compareTo(BigDecimal.ZERO)<0){ - saleAmount=saleAmount.multiply(new BigDecimal("-1")); - } - rmPayflow.setSaleAmount(saleAmount); +// BigDecimal saleAmount=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()).setScale(2, RoundingMode.HALF_UP); +// if(saleAmount.compareTo(BigDecimal.ZERO)<0){ +// saleAmount=saleAmount.multiply(new BigDecimal("-1")); +// } +// rmPayflow.setSaleAmount(saleAmount); + rmPayflow.setSaleAmount(rmSaleflow.getSaleMoney()); rmPayflow.setBranchNo(rmSaleflow.getBranchNo()); rmPayflow.setPayWay("RMB");//人民币 rmPayflow.setSellWay(rmSaleflow.getSellWay()); @@ -666,7 +690,7 @@ public class SxDataDao extends BaseDao{ rmPayflow.setVipNo(null); rmPayflow.setCoinNo("RMB");// rmPayflow.setCoinRate(new BigDecimal("1"));//利率 - rmPayflow.setPayAmount(saleAmount); + rmPayflow.setPayAmount(rmSaleflow.getSaleMoney()); rmPayflow.setOperDate(new Timestamp(System.currentTimeMillis())); rmPayflow.setOperId(rmSaleflow.getOperId()); rmPayflow.setCounterNo(rmSaleflow.getCounterNo()); @@ -712,7 +736,11 @@ public class SxDataDao extends BaseDao{ Set sme=map.entrySet(); String where = "where 1=1 and "; List itemNos = sme.stream() - .map(entry -> (String) entry.getKey()) + .map(entry -> { + String key= (String) entry.getKey(); + String[] split = key.split("-"); + return split[1]; + }) .collect(Collectors.toList()); where += SqlBuilder.buildInCondition("item_no", itemNos); ResultDto resultDto= this.baseFindList(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(), @@ -738,6 +766,9 @@ public class SxDataDao extends BaseDao{ if(StringUtils.isNotEmpty(rs.getString("item_clsno"))){ itemInfo.setItemClsno(rs.getString("item_clsno").trim()); } + if(StringUtils.isNotEmpty(rs.getString("sale_price"))){ + itemInfo.setSalePrice(rs.getBigDecimal("sale_price")); + } resultMap.put(itemNo,itemInfo); } } catch (SQLException e) { diff --git a/client/src/main/java/com/small/client/dto/DataBaseInfo.java b/client/src/main/java/com/small/client/dto/DataBaseInfo.java index bfe770c3..59dba861 100644 --- a/client/src/main/java/com/small/client/dto/DataBaseInfo.java +++ b/client/src/main/java/com/small/client/dto/DataBaseInfo.java @@ -43,7 +43,7 @@ public class DataBaseInfo { private String shopGapTime; @ApiModelProperty(value = "调价时间") - private String priceOperatiem; + private String priceOperatime; @ApiModelProperty(value = "库存条件") private String stockOperateWhere; diff --git a/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java b/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java index c152f6f0..75564364 100644 --- a/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java +++ b/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java @@ -29,6 +29,9 @@ public class ProductQuantityConsumptionDto { @ApiModelProperty("数量(正数表示入库/增加,负数表示出库/减少)") private BigDecimal quantity; + @ApiModelProperty("订单总额") + private BigDecimal saleAmount; + @ApiModelProperty("消费状态:0-未消费,1-已消费") private Integer status; diff --git a/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java b/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java index 5189b4f9..6aae15ee 100644 --- a/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java +++ b/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java @@ -334,7 +334,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService String stockOperateWhere=" ls.oper_date>'"+dataBaseInfo.getOperDate()+"' "; dataBaseInfo.setStockOperateWhere(stockOperateWhere); } - if(StringUtils.isNotEmpty(dataBaseInfo.getPriceOperatiem())){ + if(StringUtils.isNotEmpty(dataBaseInfo.getPriceOperatime())){ where+=" and EXISTS ( " + " select " + " shop.item_no " + @@ -344,17 +344,19 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService " on " + " tpfd.sheet_no = tppfm.sheet_no " + " where " + - " tppfm.valid_flag = '1' " +//有效 + " tppfm.valid_flag = '2' " +//有效 " and shop.item_no=tpfd.item_no " + - " and tppfm.oper_date >'"+dataBaseInfo.getPriceOperatiem()+"' " + + " and tppfm.oper_date >'"+dataBaseInfo.getPriceOperatime()+"' " + " )"; } dataBaseInfo.setWhere(where); // 记录总数 total = sxDataDao.getTBditemInfoJoninTotal(dataBaseInfo); }else { + where="where b.status='1'"; dataBaseInfo.setWhere(where); total = sxDataDao.getTBditemInfoTotal(dataBaseInfo); + where="where shop.status='1'"; } if(total==0){ log.info("暂无商品同步"); @@ -471,9 +473,10 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService * 增量同步 调价单变化 */ private void syncFlowPrice(DataBaseInfo dataBaseInfo, CommentModel commentModel,String sycnTime){ - dataBaseInfo.setPriceOperatiem(sycnTime); + dataBaseInfo.setPriceOperatime(sycnTime); commentModel.setSyncTime(""); dataBaseInfo.setOperDate(""); + dataBaseInfo.setStockOperateWhere(""); syncAllGoods(dataBaseInfo,commentModel); } @@ -773,7 +776,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService if(!productQuantityConsumptionDtoList.isEmpty()){ Map map = productQuantityConsumptionDtoList.stream() .collect(Collectors.groupingBy( - ProductQuantityConsumptionDto::getProductNumber, + dto -> dto.getOrderId()+"-"+dto.getProductNumber(), Collectors.reducing( BigDecimal.ZERO, ProductQuantityConsumptionDto::getQuantity,