From ff0aed0ad8b22b1f7e737a86af5c933f8deb1200 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Thu, 27 Nov 2025 15:00:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=80=9D=E8=BF=85=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=B8=8E=E6=9B=B4=E6=96=B0=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/small/client/dao/BaseDao.java | 56 ++++++++++++++++++ .../java/com/small/client/dao/SxDataDao.java | 27 +++++++-- .../dto/ProductQuantityConsumptionDto.java | 3 + .../service/SxDataAbst/SxDataAbstService.java | 58 ++++++++++--------- .../client/service/imp/SxDataServiceImp.java | 4 +- 5 files changed, 114 insertions(+), 34 deletions(-) diff --git a/client/src/main/java/com/small/client/dao/BaseDao.java b/client/src/main/java/com/small/client/dao/BaseDao.java index cb8492db..589eadcf 100644 --- a/client/src/main/java/com/small/client/dao/BaseDao.java +++ b/client/src/main/java/com/small/client/dao/BaseDao.java @@ -385,6 +385,62 @@ public class BaseDao { return resultDto; } + /** + * 全量查询 + * @param ip + * @param username + * @param password + * @param portNumber + * @param dataBaseName + * @param pageNo + * @param pageSize + * @param where + * @param stockOperateWhere + * @return + */ + public ResultDto baseFindAllGoodsListJoinPage(String ip, String username, String password,Integer portNumber, String dataBaseName, int pageNo, int pageSize, + String where,String stockOperateWhere){ + Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); + int start=(pageNo-1)*pageSize+1; + int end=pageNo*pageSize; + String sql="SELECT * " + + "FROM (" + + " SELECT " + + " ROW_NUMBER() OVER(ORDER BY shop.item_clsno, shop.item_no) AS rowIdA," + + " shop.*," + + " (\n" + + " SELECT TOP 1 stock_qty " + + " FROM t_im_branch_stock " + + " WHERE item_no = shop.item_no " + + " ORDER BY oper_date DESC " + + " ) as stock_qty,\n" + + " (\n" + + " SELECT TOP 1 oper_date " + + " FROM t_im_branch_stock " + + " WHERE item_no = shop.item_no " + + " ORDER BY oper_date DESC " + + " ) as oper_date " + + " FROM t_bd_item_info shop " + + " %s " + + ") t " + + "WHERE rowIdA BETWEEN %s AND %s " + + "ORDER BY rowIdA;"; + sql=String.format(sql,where,start,end); + log.info(sql); + ResultDto resultDto=new ResultDto(); + ResultSet rs=null; + try { + PreparedStatement ps= connection.prepareStatement(sql); + rs = ps.executeQuery(); + } catch (SQLException e) { + log.info("数据库查询异常方法{},异常信息{}","com.suisung.mall.shop.sixun.dao.BaseDao.baseFindListJoinPage",e.getMessage()); + throw new RuntimeException(e); + } + resultDto.setResultSet(rs); + resultDto.setConnection(connection); + return resultDto; + } + /** * * @param ip 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 2e7fb11e..67727c77 100644 --- a/client/src/main/java/com/small/client/dao/SxDataDao.java +++ b/client/src/main/java/com/small/client/dao/SxDataDao.java @@ -127,9 +127,15 @@ public class SxDataDao extends BaseDao{ try { while (rs.next()) { sxSyncCategory=new SxSyncCategory(); - sxSyncCategory.setItem_clsname(rs.getString("item_clsname"));//分类名称 - sxSyncCategory.setCls_parent(rs.getString("cls_parent"));//父级编码 - sxSyncCategory.setItem_clsno(rs.getString("item_clsno"));//分类编码 + if(StringUtils.isNotEmpty(rs.getString("item_clsname"))){ + sxSyncCategory.setItem_clsname(rs.getString("item_clsname").trim());//分类名称 + } + if(StringUtils.isNotEmpty(rs.getString("cls_parent"))){ + sxSyncCategory.setCls_parent(rs.getString("cls_parent").trim());//父级编码 + } + if(StringUtils.isNotEmpty(rs.getString("item_clsno"))){ + sxSyncCategory.setItem_clsno(rs.getString("item_clsno").trim());//分类编码 + } // System.out.printf(rs.getString("item_clsno"));//分类编码 // log.info(rs.getString("item_clsname")+"\t");//分类名称 //log.info(rs.getString("cls_parent")+"\t");//父级编码 @@ -203,13 +209,22 @@ public class SxDataDao extends BaseDao{ * @param pageNo * @param pageSize */ - public List findBditemInfoListPage(DataBaseInfo dataBaseInfo,int pageNo,int pageSize){ + public List findBditemInfoListPage(DataBaseInfo dataBaseInfo,int pageNo,int pageSize,boolean isAll){ String stockOperateWhere=""; if(StringUtils.isNotEmpty(dataBaseInfo.getStockOperateWhere())){ stockOperateWhere=" where "+dataBaseInfo.getStockOperateWhere(); } - ResultDto resultDto=baseFindGoodsListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() - ,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere(),stockOperateWhere); + + ResultDto resultDto=null; + if(!isAll){ + resultDto=baseFindGoodsListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() + ,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere(),stockOperateWhere); + }else { + resultDto=baseFindAllGoodsListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() + ,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere(),stockOperateWhere); + } + + ResultSet rs= resultDto.getResultSet(); List sxSyncGoodses=new ArrayList<>(); SxSyncGoods sxSyncGoods=null; 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 75564364..ff4b3db9 100644 --- a/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java +++ b/client/src/main/java/com/small/client/dto/ProductQuantityConsumptionDto.java @@ -45,4 +45,7 @@ public class ProductQuantityConsumptionDto { @ApiModelProperty(value = "更新时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; + + @ApiModelProperty(value = "下单时间") + private Long saleTime; } diff --git a/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java b/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java index ba7a7feb..d0280220 100644 --- a/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java +++ b/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java @@ -60,7 +60,7 @@ public abstract class SxDataAbstService { * @param allSxSyncCategories 所有分类 * @return */ - public List ConVToSxCategoryModel(List sxSyncCategories,List allSxSyncCategories, Map clsBrandMap) { + public List ConVToSxCategoryModel(List sxSyncCategories,List allSxSyncCategories, Map clsBrandMap) { if(CollectionUtil.isEmpty(sxSyncCategories)){ return new ArrayList<>(); } @@ -69,37 +69,41 @@ public abstract class SxDataAbstService { SxCategoryModel sxCategoryModel=null; while (iterator.hasNext()){ SxSyncCategory sxSyncCategory= iterator.next(); - sxCategoryModel=new SxCategoryModel(); - sxCategoryModel.setCategory_image(SxDataDao.DEFAULT_IMG); - sxCategoryModel.setCategory_name(sxSyncCategory.getItem_clsname()); - sxCategoryModel.setBrandName(clsBrandMap.get(sxSyncCategory.getItem_clsname())); - //寻找父级 - if(StringUtils.isNotEmpty(sxSyncCategory.getCls_parent())){ - SxSyncCategory firstNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent()); - if(null==firstNode){ - sxCategoryModel.setFirst_category_name(""); - sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name()); - sxCategoryModels.add(sxCategoryModel); - continue; - } - sxCategoryModel.setParent_name(firstNode.getItem_clsname());//todo 暂时无用 - //如何存在上级的上级,则上级为第二层,上上及为第一层 - if(StringUtils.isNotEmpty(firstNode.getCls_parent())) {//还存在上级 - SxSyncCategory secondNode=getParentNode(allSxSyncCategories,firstNode.getCls_parent()); - if(null!=secondNode && secondNode.getItem_clsno().equals(firstNode.getCls_parent())){ - sxCategoryModel.setFirst_category_name(secondNode.getItem_clsname()); - sxCategoryModel.setSecond_category_name(firstNode.getItem_clsname()); + try { + sxCategoryModel=new SxCategoryModel(); + sxCategoryModel.setCategory_image(SxDataDao.DEFAULT_IMG); + sxCategoryModel.setCategory_name(sxSyncCategory.getItem_clsname()); + sxCategoryModel.setBrandName(clsBrandMap.get(sxSyncCategory.getItem_clsname())); + //寻找父级 + if(StringUtils.isNotEmpty(sxSyncCategory.getCls_parent())){ + SxSyncCategory firstNode=getParentNode(allSxSyncCategories,sxSyncCategory.getCls_parent()); + if(null==firstNode){ + sxCategoryModel.setFirst_category_name(""); + sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name()); + sxCategoryModels.add(sxCategoryModel); + continue; + } + sxCategoryModel.setParent_name(firstNode.getItem_clsname());//todo 暂时无用 + //如何存在上级的上级,则上级为第二层,上上及为第一层 + if(StringUtils.isNotEmpty(firstNode.getCls_parent())) {//还存在上级 + SxSyncCategory secondNode=getParentNode(allSxSyncCategories,firstNode.getCls_parent()); + if(null!=secondNode && secondNode.getItem_clsno().equals(firstNode.getCls_parent())){ + sxCategoryModel.setFirst_category_name(secondNode.getItem_clsname()); + sxCategoryModel.setSecond_category_name(firstNode.getItem_clsname()); + }else { + sxCategoryModel.setFirst_category_name(firstNode.getItem_clsname()); + } }else { sxCategoryModel.setFirst_category_name(firstNode.getItem_clsname()); } }else { - sxCategoryModel.setFirst_category_name(firstNode.getItem_clsname()); + sxCategoryModel.setFirst_category_name(""); } - }else { - sxCategoryModel.setFirst_category_name(""); + sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name()); + sxCategoryModels.add(sxCategoryModel); + }catch (Exception e){ + log.info("sxSyncCategory:{}",sxSyncCategory); } - sxCategoryModel.setProduct_type(sxCategoryModel.getCategory_name()); - sxCategoryModels.add(sxCategoryModel); } sxCategoryModels=filterCategories(sxCategoryModels); return sxCategoryModels; @@ -132,7 +136,7 @@ public abstract class SxDataAbstService { List list= sxSyncCategories.stream().filter(cc-> cc.getItem_clsno().trim().equals(parentId.trim())) .collect(Collectors.toList()); - return CollectionUtil.isNotEmpty(list)?list.get(0):new SxSyncCategory(); + return CollectionUtil.isNotEmpty(list)?list.get(0):null; } /** 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 0b483805..361f22f9 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,6 +334,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService //String where="where 1=1"; String where="where shop.status='1'"; Integer total =0; + boolean isAll=false; String parentId=getAndCacheTree(dataBaseInfo,dataBaseInfo.getCategoryName());//加载缓存用的 String fileEndFix=""; if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){ @@ -374,6 +375,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService total = sxDataDao.getTBditemInfoJoninTotal(dataBaseInfo); }else { where="where b.status='1'"; + isAll=true; dataBaseInfo.setWhere(where); total = sxDataDao.getTBditemInfoTotal(dataBaseInfo); where="where shop.status='1'"; @@ -396,7 +398,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService Date refreshDate= DateUtil.date(tenMinutesAgo); List folders=new ArrayList<>(); for (int i = 1; i <=pages; i++) { - List sxSyncGoods= sxDataDao.findBditemInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE); + List sxSyncGoods= sxDataDao.findBditemInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE,isAll); List sxGoosModelList= CvtToGoosModel(sxSyncGoods,specPriceDtoList); String jsonString=""; ObjectMapper objectMapper = new ObjectMapper();