Compare commits
2 Commits
3b7a923109
...
2746f11442
| Author | SHA1 | Date | |
|---|---|---|---|
| 2746f11442 | |||
| 7932c2cdf7 |
@ -47,9 +47,9 @@ public class DynamicTaskScheduler {
|
||||
}
|
||||
|
||||
public void refreshTasks() {
|
||||
if(!isRuning){
|
||||
sxDataService.checkForUpdates();//检查app更新
|
||||
}
|
||||
// if(!isRuning){
|
||||
// sxDataService.checkForUpdates();//检查app更新
|
||||
// }
|
||||
CommentModel commentModel =sxDataService.getCommentModel();
|
||||
DataBaseInfo enabledTask = sxDataService.getDataBaseInfo(commentModel);
|
||||
if(enabledTask == null){
|
||||
|
||||
38
client/src/main/java/com/small/client/Utils/SqlBuilder.java
Normal file
38
client/src/main/java/com/small/client/Utils/SqlBuilder.java
Normal file
@ -0,0 +1,38 @@
|
||||
package com.small.client.Utils;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
|
||||
public class SqlBuilder {
|
||||
/**
|
||||
* 构建IN查询条件
|
||||
* @param fieldName 字段名
|
||||
* @param values 值集合
|
||||
* @return IN条件字符串
|
||||
*/
|
||||
public static String buildInCondition(String fieldName, Collection<?> values) {
|
||||
if (values == null || values.isEmpty()) {
|
||||
return "";
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append(" ").append(fieldName).append(" in (");
|
||||
|
||||
Iterator<?> iterator = values.iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Object value = iterator.next();
|
||||
if (value instanceof String) {
|
||||
sb.append("'").append(value).append("'");
|
||||
} else {
|
||||
sb.append(value);
|
||||
}
|
||||
|
||||
if (iterator.hasNext()) {
|
||||
sb.append(",");
|
||||
}
|
||||
}
|
||||
sb.append(")");
|
||||
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
@ -266,7 +266,7 @@ public class BaseDao {
|
||||
return total;
|
||||
}
|
||||
|
||||
public Integer getBaseGoodsJoinTotal(String ip, String username, String password,Integer portNumber, String dataBaseName,String where){
|
||||
public Integer getBaseGoodsJoinTotal(String ip, String username, String password,Integer portNumber, String dataBaseName,String where,String stockOperateWhere){
|
||||
int total=0;
|
||||
Connection connection=getConnection(ip,username,password,portNumber,dataBaseName);
|
||||
try {
|
||||
@ -278,19 +278,18 @@ public class BaseDao {
|
||||
" ROW_NUMBER() OVER(PARTITION BY tib.item_no ORDER BY tib.oper_date DESC) AS rn " +
|
||||
" FROM t_im_branch_stock tib\n" +
|
||||
") " +
|
||||
"SELECT " +
|
||||
" b.*, " +
|
||||
" ls.stock_qty, " +
|
||||
" ls.oper_date " +
|
||||
"SELECT count(1) " +
|
||||
// " b.*, " +
|
||||
// " ls.stock_qty, " +
|
||||
// " ls.oper_date " +
|
||||
"FROM ( " +
|
||||
" SELECT " +
|
||||
" ROW_NUMBER() OVER(ORDER BY item_clsno) AS rowId, " +
|
||||
" * " +
|
||||
" FROM t_bd_item_info " +
|
||||
" FROM t_bd_item_info shop %s" +
|
||||
") b " +
|
||||
"LEFT JOIN LatestStock ls ON b.item_no = ls.item_no AND ls.rn = 1 " +
|
||||
" %s";
|
||||
sql=String.format(sql,where);
|
||||
"LEFT JOIN LatestStock ls ON b.item_no = ls.item_no AND ls.rn = 1 %s";
|
||||
sql=String.format(sql,where,stockOperateWhere);
|
||||
log.info(sql);
|
||||
PreparedStatement ps= connection.prepareStatement(sql);
|
||||
ResultSet rs=ps.executeQuery();
|
||||
@ -344,7 +343,8 @@ public class BaseDao {
|
||||
return resultDto;
|
||||
}
|
||||
|
||||
public ResultDto baseFindGoodsListJoinPage(String ip, String username, String password,Integer portNumber, String dataBaseName, int pageNo, int pageSize,String where){
|
||||
public ResultDto baseFindGoodsListJoinPage(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;
|
||||
@ -357,6 +357,7 @@ public class BaseDao {
|
||||
" FROM t_im_branch_stock tib " +
|
||||
") " +
|
||||
"SELECT " +
|
||||
"ROW_NUMBER() OVER (ORDER BY b.rowId) AS rowId, "+//-- 这里重新生成从1开始连续的行号
|
||||
" b.*, " +
|
||||
" ls.stock_qty, " +
|
||||
" ls.oper_date " +
|
||||
@ -364,11 +365,11 @@ public class BaseDao {
|
||||
" SELECT " +
|
||||
" ROW_NUMBER() OVER(ORDER BY item_clsno) AS rowId ," +
|
||||
" * " +
|
||||
" FROM t_bd_item_info\n" +
|
||||
" FROM t_bd_item_info shop %s" +
|
||||
") b " +
|
||||
"LEFT JOIN LatestStock ls ON b.item_no = ls.item_no AND ls.rn = 1 " +
|
||||
" %s b.rowId BETWEEN %s AND %s ";
|
||||
sql=String.format(sql,where,start,end);
|
||||
" where b.rowId BETWEEN %s AND %s %s";
|
||||
sql=String.format(sql,where,start,end,stockOperateWhere);
|
||||
log.info(sql);
|
||||
ResultDto resultDto=new ResultDto();
|
||||
ResultSet rs=null;
|
||||
|
||||
@ -9,8 +9,10 @@ import com.google.gson.Gson;
|
||||
import com.small.client.Utils.BigDecimalFormatter;
|
||||
import com.small.client.Utils.CommonUtil;
|
||||
import com.small.client.Utils.HttpUtils;
|
||||
import com.small.client.Utils.SqlBuilder;
|
||||
import com.small.client.dto.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.math.NumberUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
@ -20,6 +22,8 @@ import org.springframework.web.client.RestTemplate;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.sql.*;
|
||||
import java.sql.Date;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -50,6 +54,10 @@ public class SxDataDao extends BaseDao{
|
||||
|
||||
//private final static String T_IM_BRANCH_STOCK="t_im_branch_stock";//库存表
|
||||
|
||||
private final static String T_BD_BRANCH_INFO="t_bd_branch_info";//仓库表
|
||||
|
||||
private final static String T_RM_CASHIER="t_rm_cashier";//小发收银账号
|
||||
|
||||
private final static String T_IM_BRANCH_STOCK="(" +
|
||||
"select * from( " +
|
||||
" select ROW_NUMBER() OVER( " +
|
||||
@ -171,7 +179,7 @@ public class SxDataDao extends BaseDao{
|
||||
*/
|
||||
public int getTBditemInfoJoninTotal(DataBaseInfo dataBaseInfo){
|
||||
return getBaseGoodsJoinTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName()
|
||||
,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere());
|
||||
,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere(),"where "+dataBaseInfo.getStockOperateWhere());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -193,7 +201,7 @@ public class SxDataDao extends BaseDao{
|
||||
*/
|
||||
public List<SxSyncGoods> findBditemInfoListPage(DataBaseInfo dataBaseInfo,int pageNo,int pageSize){
|
||||
ResultDto resultDto=baseFindGoodsListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName()
|
||||
,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere());
|
||||
,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere()," and "+dataBaseInfo.getStockOperateWhere());
|
||||
ResultSet rs= resultDto.getResultSet();
|
||||
List<SxSyncGoods> sxSyncGoodses=new ArrayList<>();
|
||||
SxSyncGoods sxSyncGoods=null;
|
||||
@ -470,17 +478,21 @@ public class SxDataDao extends BaseDao{
|
||||
* @param dataBaseInfo
|
||||
* @param map
|
||||
*/
|
||||
public void updateStoreData(DataBaseInfo dataBaseInfo, Map map,List<ProductQuantityConsumptionDto> productQuantityConsumptionDtoList,
|
||||
public void updateStoreData(DataBaseInfo dataBaseInfo, Map map,Map<String,ProductQuantityConsumptionDto> pqMap,List<ProductQuantityConsumptionDto> productQuantityConsumptionDtoList,
|
||||
CommentModel commentModel){
|
||||
if(CollectionUtil.isEmpty(map)){
|
||||
log.info("同步数据为空");
|
||||
return;
|
||||
}
|
||||
Connection conn =getConnection(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),
|
||||
String brachNo=getLocalBranch(dataBaseInfo);//获取总店铺分仓编号
|
||||
Map<String,ItemInfo> itemInfoMap= findItemInfoList(dataBaseInfo,map);//查询商品信息
|
||||
Connection conn =getConnection(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),
|
||||
dataBaseInfo.getPassword(), dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName());
|
||||
try {
|
||||
conn.setAutoCommit(false); // 关闭自动提交,开启事务
|
||||
//String sql = "update t_im_branch_stock set stock_qty= stock_qty+(?),oper_date=? where item_no=?";
|
||||
List<RmSaleflow> rmSaleflowList=new ArrayList<>();
|
||||
List<TRmPayflow> tRmPayflowList=new ArrayList<>();
|
||||
String sql = "WITH TopStock AS ( " +
|
||||
" SELECT TOP(1) * " +
|
||||
" FROM t_im_branch_stock " +
|
||||
@ -491,15 +503,31 @@ public class SxDataDao extends BaseDao{
|
||||
" SET stock_qty = stock_qty+(?),oper_date=?;";
|
||||
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
|
||||
try (PreparedStatement ps = conn.prepareStatement(sql)) {
|
||||
int batchSize = 1000; // 每批处理1000条
|
||||
int batchSize = 100; // 每批处理1000条
|
||||
int count = 0;
|
||||
Set<Map.Entry> sme=map.entrySet();
|
||||
for (Map.Entry entry : sme) {
|
||||
|
||||
BigDecimal stock_qty= (BigDecimal) entry.getValue();
|
||||
if(stock_qty.compareTo(BigDecimal.ZERO)==0){
|
||||
continue;
|
||||
}
|
||||
ps.setString(1, (String) entry.getKey());
|
||||
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());//随机子单号 设置网上订单号
|
||||
rmSaleflow= fixRmSaleFlow(rmSaleflow,brachNo,itemInfoMap,dataBaseInfo.getSaleAccount());
|
||||
TRmPayflow trmPayflow=fixTRmPayflow(rmSaleflow);
|
||||
|
||||
rmSaleflowList.add(rmSaleflow);
|
||||
tRmPayflowList.add(trmPayflow);
|
||||
|
||||
ps.setString(1, itemNo);
|
||||
ps.setDouble(2, stock_qty.doubleValue());
|
||||
ps.setTimestamp(3, timestamp);
|
||||
ps.addBatch(); // 添加至批处理
|
||||
@ -513,6 +541,9 @@ public class SxDataDao extends BaseDao{
|
||||
// 执行剩余未满 batchSize 的批次
|
||||
int[] remainingCounts = ps.executeBatch();
|
||||
|
||||
//todo 新增流水
|
||||
updateStoreSaleFlow(dataBaseInfo,rmSaleflowList,tRmPayflowList);
|
||||
|
||||
List<String> consumIds=productQuantityConsumptionDtoList
|
||||
.stream()
|
||||
.map(ProductQuantityConsumptionDto::getConsumeId)
|
||||
@ -548,6 +579,334 @@ public class SxDataDao extends BaseDao{
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 补充字段
|
||||
* @param rmSaleflow
|
||||
* @return
|
||||
*/
|
||||
public RmSaleflow fixRmSaleFlow(RmSaleflow rmSaleflow,String branchNo,Map<String,ItemInfo> itemInfoMap,String saleAccount){
|
||||
//自定义单号 start
|
||||
rmSaleflow.setFlowId(1);
|
||||
String orderId=rmSaleflow.getFlownoRand();
|
||||
String[] orderIdSplits= orderId.split("_");
|
||||
String DateStr=DateUtil.format(new java.util.Date(),"yyyyMMdd");
|
||||
String number= String.format("%04d", Integer.valueOf(orderIdSplits[orderIdSplits.length-1]));
|
||||
String flowNo="99"+DateStr+number;
|
||||
rmSaleflow.setFlowNo(flowNo);//订单号 todo
|
||||
//自定义 单号 end
|
||||
|
||||
//判断取值 start
|
||||
rmSaleflow.setSellWay("B");
|
||||
rmSaleflow.setRetQnty(rmSaleflow.getSaleQnty());
|
||||
if(rmSaleflow.getSaleQnty().compareTo(BigDecimal.ZERO)<0){
|
||||
rmSaleflow.setSellWay("A");
|
||||
BigDecimal saleQnty=rmSaleflow.getSaleQnty();//销售数量
|
||||
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);
|
||||
//判断取值 end
|
||||
|
||||
//数据库查询取值start todo
|
||||
ItemInfo itemInfo=itemInfoMap.get(rmSaleflow.getItemNo());
|
||||
if(itemInfo!=null){
|
||||
rmSaleflow.setInPrice(itemInfo.getPrice());
|
||||
rmSaleflow.setOperDate(new Timestamp(System.currentTimeMillis()));
|
||||
}
|
||||
rmSaleflow.setBranchNo(branchNo);
|
||||
|
||||
//数据库查询取值end
|
||||
|
||||
//远程配置取值start todo
|
||||
rmSaleflow.setOperId(saleAccount);
|
||||
rmSaleflow.setSaleMan(saleAccount);
|
||||
rmSaleflow.setCounterNo(saleAccount);
|
||||
//远程配置取值end
|
||||
|
||||
//统一默认值 start
|
||||
rmSaleflow.setNStan(BigDecimal.ZERO);
|
||||
rmSaleflow.setChrStan("0");
|
||||
rmSaleflow.setFlownoType("0");
|
||||
rmSaleflow.setPrefAmt(BigDecimal.ZERO);
|
||||
rmSaleflow.setComFlag("0");
|
||||
rmSaleflow.setRemoteFlag("0");
|
||||
//统一默认值 end
|
||||
return rmSaleflow;
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付流水赋值
|
||||
* @return
|
||||
*/
|
||||
public TRmPayflow fixTRmPayflow(RmSaleflow rmSaleflow){
|
||||
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);
|
||||
rmPayflow.setBranchNo(rmSaleflow.getBranchNo());
|
||||
rmPayflow.setPayWay("RMB");//人民币
|
||||
rmPayflow.setSellWay(rmSaleflow.getSellWay());
|
||||
rmPayflow.setCardNo("");
|
||||
rmPayflow.setVipNo(null);
|
||||
rmPayflow.setCoinNo("RMB");//
|
||||
rmPayflow.setCoinRate(new BigDecimal("1"));//利率
|
||||
rmPayflow.setPayAmount(saleAmount);
|
||||
rmPayflow.setOperDate(new Timestamp(System.currentTimeMillis()));
|
||||
rmPayflow.setOperId(rmSaleflow.getOperId());
|
||||
rmPayflow.setCounterNo(rmSaleflow.getCounterNo());
|
||||
rmPayflow.setSaleMan(rmSaleflow.getSaleMan());
|
||||
rmPayflow.setMemo("");
|
||||
rmPayflow.setVoucherNo("");//退货单号 退货时要填
|
||||
rmPayflow.setRemoteFlag("0");
|
||||
rmPayflow.setExchangeFlag("0");
|
||||
rmPayflow.setShiftNo("");
|
||||
rmPayflow.setComFlag("0");
|
||||
rmPayflow.setPosid("01");
|
||||
rmPayflow.setUptime(null);
|
||||
rmPayflow.setFlownoRand(rmSaleflow.getFlownoRand());
|
||||
rmPayflow.setCiceroniNo("0");
|
||||
rmPayflow.setCiceroniId(null);
|
||||
rmPayflow.setFlownoType(rmSaleflow.getFlownoType());
|
||||
rmPayflow.setTransType(null);
|
||||
rmPayflow.setUpBatchno("");//todo
|
||||
rmPayflow.setUpVipacc("0");
|
||||
rmPayflow.setCashNo("00");
|
||||
if("B".equals(rmSaleflow.getSellWay())){//退货
|
||||
rmPayflow.setMemo("正常退货");
|
||||
rmPayflow.setVoucherNo("");//退货单号 退货时要填
|
||||
rmPayflow.setRemoteFlag("");
|
||||
rmPayflow.setExchangeFlag("0");
|
||||
rmPayflow.setUpVipacc(null);
|
||||
}
|
||||
|
||||
return rmPayflow;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询商品,返回map
|
||||
* @param dataBaseInfo
|
||||
* @param map
|
||||
* @return
|
||||
*/
|
||||
public Map<String,ItemInfo> findItemInfoList(DataBaseInfo dataBaseInfo,Map map){
|
||||
if(CollectionUtil.isEmpty(map)){
|
||||
return null;
|
||||
}
|
||||
Map<String,ItemInfo> resultMap=new HashMap<>();
|
||||
Set<Map.Entry> sme=map.entrySet();
|
||||
String where = "where 1=1 and ";
|
||||
List<String> itemNos = sme.stream()
|
||||
.map(entry -> (String) entry.getKey())
|
||||
.collect(Collectors.toList());
|
||||
where += SqlBuilder.buildInCondition("item_no", itemNos);
|
||||
ResultDto resultDto= this.baseFindList(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),
|
||||
dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_BD_ITEM_INFO,where);
|
||||
ResultSet rs= resultDto.getResultSet();
|
||||
try {
|
||||
while (rs.next()) {
|
||||
ItemInfo itemInfo=new ItemInfo();
|
||||
String itemNo=rs.getString("item_no").trim();
|
||||
itemInfo.setItemNo(itemNo);//
|
||||
if(StringUtils.isNotEmpty(rs.getString("item_subno"))){
|
||||
itemInfo.setItemSubno(rs.getString("item_subno").trim());
|
||||
}
|
||||
if(StringUtils.isNotEmpty(rs.getString("item_name"))){
|
||||
itemInfo.setItemName(rs.getString("item_name").trim());
|
||||
}
|
||||
if(StringUtils.isNotEmpty(rs.getString("item_brand"))){
|
||||
itemInfo.setItemBrand(rs.getString("item_brand").trim());//品牌
|
||||
}
|
||||
if(StringUtils.isNotEmpty(rs.getString("price"))){
|
||||
itemInfo.setPrice(rs.getBigDecimal("price"));//进货价
|
||||
}
|
||||
if(StringUtils.isNotEmpty(rs.getString("item_clsno"))){
|
||||
itemInfo.setItemClsno(rs.getString("item_clsno").trim());
|
||||
}
|
||||
resultMap.put(itemNo,itemInfo);
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
try {
|
||||
resultDto.getConnection().close();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
return resultMap;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量新增销售流水
|
||||
* @param dataBaseInfo
|
||||
* @param rmSaleflowList
|
||||
*/
|
||||
public void updateStoreSaleFlow(DataBaseInfo dataBaseInfo,List<RmSaleflow> rmSaleflowList,List<TRmPayflow> payflowList){
|
||||
if(CollectionUtil.isEmpty(rmSaleflowList)){
|
||||
log.info("销售流水记录为空");
|
||||
return;
|
||||
}
|
||||
Connection conn =getConnection(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),
|
||||
dataBaseInfo.getPassword(), dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName());
|
||||
try {
|
||||
conn.setAutoCommit(false); // 关闭自动提交,开启事务
|
||||
String sql = "INSERT INTO t_rm_saleflow (" +
|
||||
"flow_id, flow_no, branch_no, item_no, source_price, sale_price, " +
|
||||
"sale_qnty, sale_money, sell_way, oper_id, sale_man, counter_no, " +
|
||||
"oper_date, remote_flag, shift_no, com_flag, spec_flag, pref_amt, " +
|
||||
"in_price, n_stan, chr_stan, posid, uptime, flowno_rand, ret_qnty, " +
|
||||
"flowno_type, spec_sheet_no, cic_sheet_no, share_cardid, item_no_Fresh" +
|
||||
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
String sql2 = "INSERT INTO t_rm_payflow (" +
|
||||
"flow_id, flow_no, sale_amount, branch_no, pay_way, sell_way, " +
|
||||
"card_no, vip_no, coin_no, coin_rate, pay_amount, oper_date, " +
|
||||
"oper_id, counter_no, sale_man, memo,remote_flag, " +
|
||||
"exchange_flag, shift_no, com_flag, uptime, flowno_rand, " +
|
||||
"ciceroni_no, ciceroni_id, flowno_type, trans_type, up_batchno, " +
|
||||
"remark, cash_no" +
|
||||
") VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
|
||||
try {
|
||||
PreparedStatement ps = conn.prepareStatement(sql);//销售流水
|
||||
PreparedStatement ps2 = conn.prepareStatement(sql2);//资金流水
|
||||
int batchSize = 10; // 每批处理10条
|
||||
int count = 0;
|
||||
for (int i=0;i<rmSaleflowList.size();i++) {
|
||||
//rmSaleflow start-------------
|
||||
RmSaleflow rmSaleflow=rmSaleflowList.get(i);
|
||||
ps.setInt(1,rmSaleflow.getFlowId());
|
||||
ps.setString(2, rmSaleflow.getFlowNo());
|
||||
ps.setString(3, rmSaleflow.getBranchNo());
|
||||
ps.setString(4, rmSaleflow.getItemNo());
|
||||
ps.setBigDecimal(5, rmSaleflow.getSourcePrice());
|
||||
ps.setBigDecimal(6, rmSaleflow.getSalePrice());
|
||||
|
||||
BigDecimal saleQnty=rmSaleflow.getSaleQnty();
|
||||
if(saleQnty.compareTo(BigDecimal.ZERO)<0){
|
||||
saleQnty=saleQnty.multiply(new BigDecimal("-1"));
|
||||
}
|
||||
ps.setBigDecimal(7,saleQnty);
|
||||
|
||||
ps.setBigDecimal(8, rmSaleflow.getSaleMoney());
|
||||
ps.setString(9, rmSaleflow.getSellWay());
|
||||
ps.setString(10, rmSaleflow.getOperId());
|
||||
ps.setString(11, rmSaleflow.getSaleMan());
|
||||
ps.setString(12, rmSaleflow.getCounterNo());
|
||||
|
||||
ps.setTimestamp(13, rmSaleflow.getOperDate());//OperDate
|
||||
ps.setString(14, rmSaleflow.getRemoteFlag());
|
||||
ps.setString(15, "");//ShiftNo
|
||||
ps.setString(16, rmSaleflow.getComFlag());
|
||||
ps.setString(17, "");//SpecFlag
|
||||
ps.setBigDecimal(18, rmSaleflow.getPrefAmt());
|
||||
|
||||
ps.setBigDecimal(19, rmSaleflow.getInPrice());
|
||||
ps.setBigDecimal(20, rmSaleflow.getNStan());
|
||||
ps.setString(21, rmSaleflow.getChrStan());
|
||||
ps.setString(22, rmSaleflow.getPosid());
|
||||
ps.setTimestamp(23, null);//Uptime
|
||||
ps.setString(24, rmSaleflow.getFlownoRand());
|
||||
ps.setBigDecimal(25, rmSaleflow.getRetQnty());
|
||||
|
||||
ps.setString(26, rmSaleflow.getFlownoType());
|
||||
ps.setString(27, rmSaleflow.getSpecSheetNo());
|
||||
ps.setString(28, "");//CicSheetNo
|
||||
ps.setString(29, rmSaleflow.getShareCardid());
|
||||
ps.setString(30, rmSaleflow.getItemNoFresh());
|
||||
|
||||
ps.addBatch(); // 添加至批处理
|
||||
//rmSaleflow end-------------
|
||||
|
||||
//rmPayflow start-------------
|
||||
TRmPayflow rmPayflow=payflowList.get(i);
|
||||
|
||||
//rmPayflow end-------------
|
||||
ps2.setInt(1,rmPayflow.getFlowId());
|
||||
ps2.setString(2, rmPayflow.getFlowNo());
|
||||
ps2.setBigDecimal(3, rmPayflow.getSaleAmount());
|
||||
ps2.setString(4, rmPayflow.getBranchNo());
|
||||
ps2.setString(5, rmPayflow.getPayWay());
|
||||
ps2.setString(6, rmPayflow.getSellWay());
|
||||
|
||||
ps2.setString(7, rmPayflow.getCardNo());
|
||||
ps2.setString(8, rmPayflow.getVipNo());
|
||||
ps2.setString(9, rmPayflow.getCoinNo());
|
||||
ps2.setBigDecimal(10, rmPayflow.getCoinRate());
|
||||
ps2.setBigDecimal(11, rmPayflow.getPayAmount());
|
||||
ps2.setTimestamp(12, rmPayflow.getOperDate());
|
||||
|
||||
ps2.setString(13, rmPayflow.getOperId());//OperDate
|
||||
ps2.setString(14, rmPayflow.getCounterNo());
|
||||
ps2.setString(15, rmPayflow.getSaleMan());
|
||||
ps2.setString(16, rmPayflow.getMemo());
|
||||
// ps2.setString(17, rmPayflow.getVoucherNo());
|
||||
ps2.setString(17, rmPayflow.getRemoteFlag());
|
||||
|
||||
ps2.setString(18, rmPayflow.getExchangeFlag());
|
||||
ps2.setString(19, rmPayflow.getShiftNo());
|
||||
ps2.setString(20, rmPayflow.getComFlag());
|
||||
//ps2.setString(22, rmPayflow.getPosid());
|
||||
ps2.setTimestamp(21, null);//Uptime
|
||||
ps2.setString(22, rmPayflow.getFlownoRand());
|
||||
|
||||
ps2.setString(23, rmPayflow.getCiceroniNo());
|
||||
ps2.setString(24, rmPayflow.getCiceroniId());
|
||||
ps2.setString(25, rmPayflow.getFlownoType());
|
||||
ps2.setString(26, rmPayflow.getTransType());
|
||||
ps2.setString(27, rmPayflow.getUpBatchno());
|
||||
|
||||
|
||||
// ps2.setString(30, rmPayflow.getUpVipacc());
|
||||
ps2.setString(28, rmPayflow.getRemark());
|
||||
ps2.setString(29, rmPayflow.getCashNo());
|
||||
// ps2.setString(33, rmPayflow.getCheckData());
|
||||
|
||||
ps2.addBatch(); // 添加至批处理
|
||||
count++;
|
||||
if (count % batchSize == 0) {
|
||||
ps.executeBatch();
|
||||
ps2.executeBatch();
|
||||
|
||||
ps.clearBatch();
|
||||
ps2.clearBatch();
|
||||
log.info("已提交批次: {}", count);
|
||||
}
|
||||
}
|
||||
// 执行剩余未满 batchSize 的批次
|
||||
int[] remainingCounts = ps.executeBatch();
|
||||
int[] remainingCounts2 = ps2.executeBatch();
|
||||
log.info("销售流水记录剩余批次更新数: {}", Arrays.toString(remainingCounts));
|
||||
log.info("支付流水记录剩余批次更新数: {}", Arrays.toString(remainingCounts2));
|
||||
conn.commit(); // 最终提交事务
|
||||
log.info("销售-支付-流水记录批量更新完成,总记录数: {}" , count);
|
||||
//baseUpdateImBrancStock(dataBaseInfo);
|
||||
} catch (Exception e) {
|
||||
conn.rollback(); // 出错时回滚整个事务
|
||||
log.info("销售支付流水记录业务失败:: {}", e.getMessage());
|
||||
throw new RuntimeException("销售支付流水记录业务失败:: {}"+e.getMessage());
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
log.info("sql失败:: {}", e.getMessage());
|
||||
throw new RuntimeException("sql失败:: {}"+e.getMessage());
|
||||
}finally {
|
||||
if(conn!=null){
|
||||
try {
|
||||
conn.close();
|
||||
} catch (SQLException e) {
|
||||
log.info("最后sql失败:: {}", e.getMessage());
|
||||
throw new RuntimeException("sql关闭失败:: {}"+e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
*获取促销活动价格 时段特价单
|
||||
* @param dataBaseInfo
|
||||
@ -895,4 +1254,54 @@ public class SxDataDao extends BaseDao{
|
||||
return getTotalSpecShop(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),
|
||||
dataBaseInfo.getDataBaseName(),where);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本地仓库
|
||||
* @return
|
||||
*/
|
||||
public String getLocalBranch(DataBaseInfo dataBaseInfo){
|
||||
ResultDto resultDto= this.baseFindList(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),
|
||||
dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_BD_BRANCH_INFO,"where property =2 ");
|
||||
ResultSet rs= resultDto.getResultSet();
|
||||
String branch_no = "";
|
||||
try {
|
||||
while (rs.next()) {
|
||||
branch_no=rs.getString("branch_no");//
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
try {
|
||||
resultDto.getConnection().close();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
return branch_no;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小发账号
|
||||
* @return
|
||||
*/
|
||||
public String getTRmCashier(DataBaseInfo dataBaseInfo,String accountNo){
|
||||
ResultDto resultDto= this.baseFindList(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),
|
||||
dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_CASHIER,"where cashier_id='"+accountNo+"'");
|
||||
ResultSet rs= resultDto.getResultSet();
|
||||
String cashier_id = "";
|
||||
try {
|
||||
while (rs.next()) {
|
||||
cashier_id=rs.getString("cashier_id");//
|
||||
}
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
} finally {
|
||||
try {
|
||||
resultDto.getConnection().close();
|
||||
} catch (SQLException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
return cashier_id;
|
||||
}
|
||||
}
|
||||
|
||||
@ -41,4 +41,13 @@ public class DataBaseInfo {
|
||||
|
||||
@ApiModelProperty(value = "间隔时间")
|
||||
private String shopGapTime;
|
||||
|
||||
@ApiModelProperty(value = "调价时间")
|
||||
private String priceOperatiem;
|
||||
|
||||
@ApiModelProperty(value = "库存条件")
|
||||
private String stockOperateWhere;
|
||||
|
||||
@ApiModelProperty(value = "营业员账号")
|
||||
private String saleAccount;
|
||||
}
|
||||
|
||||
45
client/src/main/java/com/small/client/dto/ItemInfo.java
Normal file
45
client/src/main/java/com/small/client/dto/ItemInfo.java
Normal file
@ -0,0 +1,45 @@
|
||||
package com.small.client.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Data
|
||||
public class ItemInfo {
|
||||
/**
|
||||
* 商品货架号
|
||||
*/
|
||||
private String itemNo;
|
||||
|
||||
/**
|
||||
* 自定义编号
|
||||
*/
|
||||
private String itemSubno;
|
||||
|
||||
/**
|
||||
* 商品名称
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
|
||||
/**
|
||||
* 商品分类编号
|
||||
*/
|
||||
private String itemClsno;
|
||||
|
||||
|
||||
/**
|
||||
* 商品品牌
|
||||
*/
|
||||
private String itemBrand;
|
||||
|
||||
/**
|
||||
* 单位
|
||||
*/
|
||||
private String unitNo;
|
||||
|
||||
/**
|
||||
* 进货价格
|
||||
*/
|
||||
private BigDecimal price;
|
||||
}
|
||||
@ -23,6 +23,9 @@ public class ProductQuantityConsumptionDto {
|
||||
@ApiModelProperty("商品编号")
|
||||
private String productNumber;
|
||||
|
||||
@ApiModelProperty("商品单价,如果是切割商品要算回来每公斤多少")
|
||||
private BigDecimal unitPrice;
|
||||
|
||||
@ApiModelProperty("数量(正数表示入库/增加,负数表示出库/减少)")
|
||||
private BigDecimal quantity;
|
||||
|
||||
|
||||
43
client/src/main/java/com/small/client/dto/RmSaleflow.java
Normal file
43
client/src/main/java/com/small/client/dto/RmSaleflow.java
Normal file
@ -0,0 +1,43 @@
|
||||
package com.small.client.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Date;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
@Data
|
||||
public class RmSaleflow {
|
||||
private Long comNo;
|
||||
private Integer flowId;//第几个商品 从1开始算
|
||||
private String flowNo;//自定义编号
|
||||
private String branchNo;
|
||||
private String itemNo;
|
||||
private BigDecimal sourcePrice;
|
||||
private BigDecimal salePrice;
|
||||
private BigDecimal saleQnty;
|
||||
private BigDecimal saleMoney;
|
||||
private String sellWay;//A销售,B退货
|
||||
private String operId;
|
||||
private String saleMan;
|
||||
private String counterNo;
|
||||
private Timestamp operDate;
|
||||
private String remoteFlag;
|
||||
private String shiftNo;
|
||||
private String comFlag;
|
||||
private String specFlag;
|
||||
private BigDecimal prefAmt;
|
||||
private BigDecimal inPrice;
|
||||
private BigDecimal nStan;
|
||||
private String chrStan;
|
||||
private String posid;
|
||||
private Date uptime;
|
||||
private String flownoRand;
|
||||
private BigDecimal retQnty;//销售数量
|
||||
private String flownoType;
|
||||
private String specSheetNo;
|
||||
private String cicSheetNo;
|
||||
private String shareCardid;
|
||||
private String itemNoFresh;
|
||||
|
||||
}
|
||||
@ -71,4 +71,7 @@ public class StoreDbConfig implements Serializable {
|
||||
|
||||
@ApiModelProperty("商品同步间隔时间")
|
||||
private String shopGapTime;
|
||||
|
||||
@ApiModelProperty(value = "营业员账号")
|
||||
private String saleAccount;
|
||||
}
|
||||
|
||||
174
client/src/main/java/com/small/client/dto/TRmPayflow.java
Normal file
174
client/src/main/java/com/small/client/dto/TRmPayflow.java
Normal file
@ -0,0 +1,174 @@
|
||||
package com.small.client.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.sql.Date;
|
||||
import java.sql.Timestamp;
|
||||
|
||||
@Data
|
||||
public class TRmPayflow {
|
||||
/**
|
||||
* 流水ID - 主键,自增
|
||||
*/
|
||||
private Long comNo;
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
private Integer flowId;
|
||||
|
||||
/**
|
||||
* 流水号
|
||||
*/
|
||||
private String flowNo;
|
||||
|
||||
/**
|
||||
* 销售金额
|
||||
*/
|
||||
private BigDecimal saleAmount;
|
||||
|
||||
/**
|
||||
* 门店编号
|
||||
*/
|
||||
private String branchNo;
|
||||
|
||||
/**
|
||||
* 支付方式
|
||||
*/
|
||||
private String payWay;
|
||||
|
||||
/**
|
||||
* 销售方式
|
||||
*/
|
||||
private String sellWay;
|
||||
|
||||
/**
|
||||
* 卡号
|
||||
*/
|
||||
private String cardNo;
|
||||
|
||||
/**
|
||||
* 会员号
|
||||
*/
|
||||
private String vipNo;
|
||||
|
||||
/**
|
||||
* 币种
|
||||
*/
|
||||
private String coinNo;
|
||||
|
||||
/**
|
||||
* 汇率
|
||||
*/
|
||||
private BigDecimal coinRate;
|
||||
|
||||
/**
|
||||
* 支付金额
|
||||
*/
|
||||
private BigDecimal payAmount;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
private Timestamp operDate;
|
||||
|
||||
/**
|
||||
* 操作员ID
|
||||
*/
|
||||
private String operId;
|
||||
|
||||
/**
|
||||
* 柜台号
|
||||
*/
|
||||
private String counterNo;
|
||||
|
||||
/**
|
||||
* 销售员
|
||||
*/
|
||||
private String saleMan;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String memo;
|
||||
|
||||
/**
|
||||
* 凭证号
|
||||
*/
|
||||
private String voucherNo;
|
||||
|
||||
/**
|
||||
* 远程标志
|
||||
*/
|
||||
private String remoteFlag;
|
||||
|
||||
/**
|
||||
* 兑换标志
|
||||
*/
|
||||
private String exchangeFlag;
|
||||
|
||||
/**
|
||||
* 班次号
|
||||
*/
|
||||
private String shiftNo;
|
||||
|
||||
/**
|
||||
* 完成标志
|
||||
*/
|
||||
private String comFlag;
|
||||
|
||||
/**
|
||||
* POS机ID
|
||||
*/
|
||||
private String posid;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date uptime;
|
||||
|
||||
/**
|
||||
* 随机流水号
|
||||
*/
|
||||
private String flownoRand;
|
||||
|
||||
/**
|
||||
* 导游编号
|
||||
*/
|
||||
private String ciceroniNo;
|
||||
|
||||
/**
|
||||
* 导游ID
|
||||
*/
|
||||
private String ciceroniId;
|
||||
|
||||
/**
|
||||
* 流水号类型
|
||||
*/
|
||||
private String flownoType;
|
||||
|
||||
/**
|
||||
* 交易类型
|
||||
*/
|
||||
private String transType;
|
||||
|
||||
/**
|
||||
* 上传批次号
|
||||
*/
|
||||
private String upBatchno;
|
||||
|
||||
/**
|
||||
* 上传会员账户
|
||||
*/
|
||||
private String upVipacc;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
private String cashNo;
|
||||
|
||||
private String checkData;
|
||||
}
|
||||
@ -142,9 +142,11 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
syncAllGoods(dataBaseInfo, commentModel);
|
||||
break;
|
||||
case "02"://增量 todo test
|
||||
String sycnTime=commentModel.getSyncTime();
|
||||
syncIncrementAddGoods(dataBaseInfo, commentModel);
|
||||
syncIncrementModifyGoods(dataBaseInfo, commentModel);
|
||||
// syncIncrementModifyGoods(dataBaseInfo, commentModel);
|
||||
syncIncrementStock(dataBaseInfo, commentModel);
|
||||
syncFlowPrice(dataBaseInfo, commentModel,sycnTime);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -324,21 +326,37 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
*/
|
||||
private void syncAllGoods(DataBaseInfo dataBaseInfo, CommentModel commentModel){
|
||||
//String where="where 1=1";
|
||||
String where="where b.status='1'";
|
||||
String where="where shop.status='1'";
|
||||
Integer total =0;
|
||||
String parentId=getAndCacheTree(dataBaseInfo,dataBaseInfo.getCategoryName());//加载缓存用的
|
||||
if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){
|
||||
if (StringUtils.isNotEmpty(dataBaseInfo.getCategoryName())) {
|
||||
//syncGoodsSearchModel.setItemClsno(childrens);
|
||||
String childrens= commonCache.get(CommonCache.CACHE_CATEGROY+parentId);
|
||||
where += " and b.item_clsno in ('" + childrens + "')";
|
||||
where += " and shop.item_clsno in ('" + childrens + "')";
|
||||
}
|
||||
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
|
||||
where+=" and b.modify_date>'"+commentModel.getSyncTime()+"' ";
|
||||
where+=" or b.build_date>'"+commentModel.getSyncTime()+"' ";
|
||||
where+=" and shop.modify_date>'"+commentModel.getSyncTime()+"' ";
|
||||
where+=" or shop.build_date>'"+commentModel.getSyncTime()+"' ";
|
||||
}
|
||||
if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){
|
||||
where+=" and ls.oper_date>'"+dataBaseInfo.getOperDate()+"' ";
|
||||
String stockOperateWhere=" ls.oper_date>'"+dataBaseInfo.getOperDate()+"' ";
|
||||
dataBaseInfo.setStockOperateWhere(stockOperateWhere);
|
||||
}
|
||||
if(StringUtils.isNotEmpty(dataBaseInfo.getPriceOperatiem())){
|
||||
where+=" and EXISTS ( " +
|
||||
" select " +
|
||||
" shop.item_no " +
|
||||
" from " +
|
||||
" t_pc_price_flow_detail tpfd " +
|
||||
" inner join t_pc_price_flow_master tppfm " +
|
||||
" on " +
|
||||
" tpfd.sheet_no = tppfm.sheet_no " +
|
||||
" where " +
|
||||
" tppfm.valid_flag = '1' " +//有效
|
||||
" and shop.item_no=tpfd.item_no " +
|
||||
" and tppfm.oper_date >'"+dataBaseInfo.getPriceOperatiem()+"' " +
|
||||
" )";
|
||||
}
|
||||
dataBaseInfo.setWhere(where);
|
||||
// 记录总数
|
||||
@ -351,7 +369,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
log.info("暂无商品同步");
|
||||
return;
|
||||
}
|
||||
where+=" and";
|
||||
//where+=" and";
|
||||
dataBaseInfo.setWhere(where);
|
||||
|
||||
// 总页数
|
||||
@ -458,6 +476,16 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
syncAllGoods(dataBaseInfo,commentModel);
|
||||
}
|
||||
|
||||
/**
|
||||
* 增量同步 调价单变化
|
||||
*/
|
||||
private void syncFlowPrice(DataBaseInfo dataBaseInfo, CommentModel commentModel,String sycnTime){
|
||||
dataBaseInfo.setPriceOperatiem(sycnTime);
|
||||
commentModel.setSyncTime("");
|
||||
dataBaseInfo.setOperDate("");
|
||||
syncAllGoods(dataBaseInfo,commentModel);
|
||||
}
|
||||
|
||||
/**
|
||||
*获取特价商品
|
||||
* @param dataBaseInfo
|
||||
@ -726,6 +754,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
dataBaseInfo.setRefreshTime(storeDbConfig.getRefreshTime());
|
||||
dataBaseInfo.setIsTowSync(storeDbConfig.getIsTowSync());
|
||||
dataBaseInfo.setShopGapTime(storeDbConfig.getShopGapTime());
|
||||
dataBaseInfo.setSaleAccount(storeDbConfig.getSaleAccount());
|
||||
return dataBaseInfo;
|
||||
}
|
||||
return new DataBaseInfo();
|
||||
@ -737,6 +766,11 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
log.info("不做双向同步数据库");
|
||||
return;
|
||||
}
|
||||
String saleAccount= sxDataDao.getTRmCashier(dataBaseInfo,dataBaseInfo.getSaleAccount());
|
||||
if(StringUtils.isEmpty(saleAccount)){
|
||||
log.error("需要配置商城收银人员");
|
||||
return;
|
||||
}
|
||||
JSONObject jsonObject= restTemplate.getForObject(remoteIp+HttpUtils.URL_SYNC_GET_STOR_DATA_RELEASE
|
||||
+"?appKey="+commentModel.getAppKey()
|
||||
+"&sign="+commentModel.getAppId(),JSONObject.class);
|
||||
@ -754,7 +788,13 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
BigDecimal::add
|
||||
)
|
||||
));
|
||||
sxDataDao.updateStoreData(dataBaseInfo,map,productQuantityConsumptionDtoList,commentModel);
|
||||
Map<String,ProductQuantityConsumptionDto> productQuantityConsumptionDtoMap=new HashMap<>();
|
||||
|
||||
productQuantityConsumptionDtoList.forEach(productQuantityConsumptionDto -> {
|
||||
productQuantityConsumptionDtoMap.put(productQuantityConsumptionDto.getProductNumber(),productQuantityConsumptionDto);
|
||||
});
|
||||
|
||||
sxDataDao.updateStoreData(dataBaseInfo,map,productQuantityConsumptionDtoMap,productQuantityConsumptionDtoList,commentModel);
|
||||
}
|
||||
|
||||
}
|
||||
@ -812,6 +852,9 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
|
||||
dataBaseInfo.setWhere(where);
|
||||
total = sxDataDao.getTotalSpecShop(dataBaseInfo);
|
||||
if(total==0){
|
||||
HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_REFRESH
|
||||
+"?appKey="+commentModel.getAppKey()
|
||||
+"&sign="+commentModel.getAppId(), new JSONArray());
|
||||
log.info("暂无活动商品同步");
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user