流水逻辑修改

This commit is contained in:
liyj 2025-11-07 10:06:53 +08:00
parent 3e5e9c265e
commit c934bcb9dc
6 changed files with 69 additions and 29 deletions

View File

@ -96,6 +96,9 @@ public class DynamicTaskScheduler {
commentModel =sxDataService.getCommentModel(); commentModel =sxDataService.getCommentModel();
} }
DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel);
if(dataBaseInfo==null||StringUtils.isEmpty(dataBaseInfo.getUserName())){
return;
}
if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){ if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){
commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime())); commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime()));
} }

View File

@ -75,7 +75,7 @@ public class WebController {
//sxDataService.getAppSign(); //sxDataService.getAppSign();
CommentModel commentModel= sxDataService.getCommentModel(); CommentModel commentModel= sxDataService.getCommentModel();
DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel);
if(dataBaseInfo==null){ if(dataBaseInfo==null||StringUtils.isEmpty(dataBaseInfo.getUserName())){
log.error("syncGoods dataBaseInfo is null"); log.error("syncGoods dataBaseInfo is null");
return; return;
} }

View File

@ -515,20 +515,22 @@ public class SxDataDao extends BaseDao{
int count = 0; int count = 0;
Set<Map.Entry> sme=map.entrySet(); Set<Map.Entry> sme=map.entrySet();
for (Map.Entry entry : sme) { 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(); BigDecimal stock_qty= (BigDecimal) entry.getValue();
if(stock_qty.compareTo(BigDecimal.ZERO)==0){ if(stock_qty.compareTo(BigDecimal.ZERO)==0){
continue; continue;
} }
String itemNo = (String) entry.getKey();
ProductQuantityConsumptionDto productQuantityConsumptionDto=pqMap.get(itemNo); ProductQuantityConsumptionDto productQuantityConsumptionDto=pqMap.get(itemNo);
BigDecimal unitPrice = productQuantityConsumptionDto.getUnitPrice(); if(productQuantityConsumptionDto.getSaleAmount().compareTo(BigDecimal.ZERO)==0){
RmSaleflow rmSaleflow=new RmSaleflow(); continue;
rmSaleflow.setItemNo(itemNo); }
rmSaleflow.setSalePrice(unitPrice); RmSaleflow rmSaleflow = getRmSaleflow(productQuantityConsumptionDto, itemNo, stock_qty);
rmSaleflow.setSaleQnty(stock_qty);
rmSaleflow.setSourcePrice(unitPrice);
rmSaleflow.setFlownoRand(productQuantityConsumptionDto.getOrderId());//随机子单号 设置网上订单号
rmSaleflow= fixRmSaleFlow(rmSaleflow,brachNo,itemInfoMap,dataBaseInfo.getSaleAccount()); rmSaleflow= fixRmSaleFlow(rmSaleflow,brachNo,itemInfoMap,dataBaseInfo.getSaleAccount());
TRmPayflow trmPayflow=fixTRmPayflow(rmSaleflow); 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 * @param rmSaleflow
@ -597,7 +618,8 @@ public class SxDataDao extends BaseDao{
rmSaleflow.setFlowId(1); rmSaleflow.setFlowId(1);
String orderId=rmSaleflow.getFlownoRand(); String orderId=rmSaleflow.getFlownoRand();
String[] orderIdSplits= orderId.split("_"); 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 number= String.format("%04d", Integer.valueOf(orderIdSplits[orderIdSplits.length-1]));
String flowNo="99"+DateStr+number; String flowNo="99"+DateStr+number;
rmSaleflow.setFlowNo(flowNo);//订单号 todo rmSaleflow.setFlowNo(flowNo);//订单号 todo
@ -612,17 +634,18 @@ public class SxDataDao extends BaseDao{
rmSaleflow.setSaleQnty(saleQnty); rmSaleflow.setSaleQnty(saleQnty);
rmSaleflow.setRetQnty(BigDecimal.ZERO); rmSaleflow.setRetQnty(BigDecimal.ZERO);
} }
BigDecimal saleMoney=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()); // BigDecimal saleMoney=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty());
if(rmSaleflow.getSaleQnty().compareTo(BigDecimal.ZERO)<0){ // if(rmSaleflow.getSaleQnty().compareTo(BigDecimal.ZERO)<0){
saleMoney=saleMoney.multiply(new BigDecimal("-1")); // saleMoney=saleMoney.multiply(new BigDecimal("-1"));
} // }
rmSaleflow.setSaleMoney(saleMoney); // rmSaleflow.setSaleMoney(saleMoney);
//判断取值 end //判断取值 end
//数据库查询取值start todo //数据库查询取值start todo
ItemInfo itemInfo=itemInfoMap.get(rmSaleflow.getItemNo()); ItemInfo itemInfo=itemInfoMap.get(rmSaleflow.getItemNo());
if(itemInfo!=null){ if(itemInfo!=null){
rmSaleflow.setInPrice(itemInfo.getPrice()); rmSaleflow.setInPrice(itemInfo.getPrice());
rmSaleflow.setSourcePrice(itemInfo.getSalePrice());
rmSaleflow.setOperDate(new Timestamp(System.currentTimeMillis())); rmSaleflow.setOperDate(new Timestamp(System.currentTimeMillis()));
} }
rmSaleflow.setBranchNo(branchNo); rmSaleflow.setBranchNo(branchNo);
@ -654,11 +677,12 @@ public class SxDataDao extends BaseDao{
TRmPayflow rmPayflow=new TRmPayflow(); TRmPayflow rmPayflow=new TRmPayflow();
rmPayflow.setFlowId(rmSaleflow.getFlowId()); rmPayflow.setFlowId(rmSaleflow.getFlowId());
rmPayflow.setFlowNo(rmSaleflow.getFlowNo()); rmPayflow.setFlowNo(rmSaleflow.getFlowNo());
BigDecimal saleAmount=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()).setScale(2, RoundingMode.HALF_UP); // BigDecimal saleAmount=rmSaleflow.getSalePrice().multiply(rmSaleflow.getSaleQnty()).setScale(2, RoundingMode.HALF_UP);
if(saleAmount.compareTo(BigDecimal.ZERO)<0){ // if(saleAmount.compareTo(BigDecimal.ZERO)<0){
saleAmount=saleAmount.multiply(new BigDecimal("-1")); // saleAmount=saleAmount.multiply(new BigDecimal("-1"));
} // }
rmPayflow.setSaleAmount(saleAmount); // rmPayflow.setSaleAmount(saleAmount);
rmPayflow.setSaleAmount(rmSaleflow.getSaleMoney());
rmPayflow.setBranchNo(rmSaleflow.getBranchNo()); rmPayflow.setBranchNo(rmSaleflow.getBranchNo());
rmPayflow.setPayWay("RMB");//人民币 rmPayflow.setPayWay("RMB");//人民币
rmPayflow.setSellWay(rmSaleflow.getSellWay()); rmPayflow.setSellWay(rmSaleflow.getSellWay());
@ -666,7 +690,7 @@ public class SxDataDao extends BaseDao{
rmPayflow.setVipNo(null); rmPayflow.setVipNo(null);
rmPayflow.setCoinNo("RMB");// rmPayflow.setCoinNo("RMB");//
rmPayflow.setCoinRate(new BigDecimal("1"));//利率 rmPayflow.setCoinRate(new BigDecimal("1"));//利率
rmPayflow.setPayAmount(saleAmount); rmPayflow.setPayAmount(rmSaleflow.getSaleMoney());
rmPayflow.setOperDate(new Timestamp(System.currentTimeMillis())); rmPayflow.setOperDate(new Timestamp(System.currentTimeMillis()));
rmPayflow.setOperId(rmSaleflow.getOperId()); rmPayflow.setOperId(rmSaleflow.getOperId());
rmPayflow.setCounterNo(rmSaleflow.getCounterNo()); rmPayflow.setCounterNo(rmSaleflow.getCounterNo());
@ -712,7 +736,11 @@ public class SxDataDao extends BaseDao{
Set<Map.Entry> sme=map.entrySet(); Set<Map.Entry> sme=map.entrySet();
String where = "where 1=1 and "; String where = "where 1=1 and ";
List<String> itemNos = sme.stream() List<String> 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()); .collect(Collectors.toList());
where += SqlBuilder.buildInCondition("item_no", itemNos); where += SqlBuilder.buildInCondition("item_no", itemNos);
ResultDto resultDto= this.baseFindList(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(), 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"))){ if(StringUtils.isNotEmpty(rs.getString("item_clsno"))){
itemInfo.setItemClsno(rs.getString("item_clsno").trim()); itemInfo.setItemClsno(rs.getString("item_clsno").trim());
} }
if(StringUtils.isNotEmpty(rs.getString("sale_price"))){
itemInfo.setSalePrice(rs.getBigDecimal("sale_price"));
}
resultMap.put(itemNo,itemInfo); resultMap.put(itemNo,itemInfo);
} }
} catch (SQLException e) { } catch (SQLException e) {

View File

@ -43,7 +43,7 @@ public class DataBaseInfo {
private String shopGapTime; private String shopGapTime;
@ApiModelProperty(value = "调价时间") @ApiModelProperty(value = "调价时间")
private String priceOperatiem; private String priceOperatime;
@ApiModelProperty(value = "库存条件") @ApiModelProperty(value = "库存条件")
private String stockOperateWhere; private String stockOperateWhere;

View File

@ -29,6 +29,9 @@ public class ProductQuantityConsumptionDto {
@ApiModelProperty("数量(正数表示入库/增加,负数表示出库/减少)") @ApiModelProperty("数量(正数表示入库/增加,负数表示出库/减少)")
private BigDecimal quantity; private BigDecimal quantity;
@ApiModelProperty("订单总额")
private BigDecimal saleAmount;
@ApiModelProperty("消费状态0-未消费1-已消费") @ApiModelProperty("消费状态0-未消费1-已消费")
private Integer status; private Integer status;

View File

@ -334,7 +334,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
String stockOperateWhere=" ls.oper_date>'"+dataBaseInfo.getOperDate()+"' "; String stockOperateWhere=" ls.oper_date>'"+dataBaseInfo.getOperDate()+"' ";
dataBaseInfo.setStockOperateWhere(stockOperateWhere); dataBaseInfo.setStockOperateWhere(stockOperateWhere);
} }
if(StringUtils.isNotEmpty(dataBaseInfo.getPriceOperatiem())){ if(StringUtils.isNotEmpty(dataBaseInfo.getPriceOperatime())){
where+=" and EXISTS ( " + where+=" and EXISTS ( " +
" select " + " select " +
" shop.item_no " + " shop.item_no " +
@ -344,17 +344,19 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
" on " + " on " +
" tpfd.sheet_no = tppfm.sheet_no " + " tpfd.sheet_no = tppfm.sheet_no " +
" where " + " where " +
" tppfm.valid_flag = '1' " +//有效 " tppfm.valid_flag = '2' " +//有效
" and shop.item_no=tpfd.item_no " + " and shop.item_no=tpfd.item_no " +
" and tppfm.oper_date >'"+dataBaseInfo.getPriceOperatiem()+"' " + " and tppfm.oper_date >'"+dataBaseInfo.getPriceOperatime()+"' " +
" )"; " )";
} }
dataBaseInfo.setWhere(where); dataBaseInfo.setWhere(where);
// 记录总数 // 记录总数
total = sxDataDao.getTBditemInfoJoninTotal(dataBaseInfo); total = sxDataDao.getTBditemInfoJoninTotal(dataBaseInfo);
}else { }else {
where="where b.status='1'";
dataBaseInfo.setWhere(where); dataBaseInfo.setWhere(where);
total = sxDataDao.getTBditemInfoTotal(dataBaseInfo); total = sxDataDao.getTBditemInfoTotal(dataBaseInfo);
where="where shop.status='1'";
} }
if(total==0){ if(total==0){
log.info("暂无商品同步"); log.info("暂无商品同步");
@ -471,9 +473,10 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
* 增量同步 调价单变化 * 增量同步 调价单变化
*/ */
private void syncFlowPrice(DataBaseInfo dataBaseInfo, CommentModel commentModel,String sycnTime){ private void syncFlowPrice(DataBaseInfo dataBaseInfo, CommentModel commentModel,String sycnTime){
dataBaseInfo.setPriceOperatiem(sycnTime); dataBaseInfo.setPriceOperatime(sycnTime);
commentModel.setSyncTime(""); commentModel.setSyncTime("");
dataBaseInfo.setOperDate(""); dataBaseInfo.setOperDate("");
dataBaseInfo.setStockOperateWhere("");
syncAllGoods(dataBaseInfo,commentModel); syncAllGoods(dataBaseInfo,commentModel);
} }
@ -773,7 +776,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
if(!productQuantityConsumptionDtoList.isEmpty()){ if(!productQuantityConsumptionDtoList.isEmpty()){
Map map = productQuantityConsumptionDtoList.stream() Map map = productQuantityConsumptionDtoList.stream()
.collect(Collectors.groupingBy( .collect(Collectors.groupingBy(
ProductQuantityConsumptionDto::getProductNumber, dto -> dto.getOrderId()+"-"+dto.getProductNumber(),
Collectors.reducing( Collectors.reducing(
BigDecimal.ZERO, BigDecimal.ZERO,
ProductQuantityConsumptionDto::getQuantity, ProductQuantityConsumptionDto::getQuantity,