Commit 921d1dd0 authored by Quxl's avatar Quxl

x

parent e789a796
package com.egolm.sso.distributors.SI_011_ACTUAL_SALES_SyncOutService; package com.egolm.sso.distributors.SI_011_ACTUAL_SALES_SyncOutService;
import java.io.File; import java.io.File;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
...@@ -10,8 +14,12 @@ import org.springframework.boot.system.ApplicationHome; ...@@ -10,8 +14,12 @@ import org.springframework.boot.system.ApplicationHome;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSONObject;
import com.egolm.sso.distributors.ServiceFactory; import com.egolm.sso.distributors.ServiceFactory;
import com.egolm.sso.services.CommonService; import com.egolm.sso.services.CommonService;
import com.egolm.sso.services.CommonService.Page;
import com.egolm.sso.util.CollectionUtil;
import com.egolm.sso.util.StringUtil;
@Component @Component
public class SI011ACTUALSALESSyncOutServiceTask { public class SI011ACTUALSALESSyncOutServiceTask {
...@@ -44,7 +52,58 @@ public class SI011ACTUALSALESSyncOutServiceTask { ...@@ -44,7 +52,58 @@ public class SI011ACTUALSALESSyncOutServiceTask {
} }
private void sendData(SI011ACTUALSALESSyncOut SI011ACTUALSALESSyncOut) { private void sendData(SI011ACTUALSALESSyncOut SI011ACTUALSALESSyncOut) {
Page page = new Page(1L, 1000L, new String[] {"DIS_CODE", "SALES_NO"});
String sql = "SELECT * FROM t_dis_sales WHERE SEND_STATUS = 'N'";
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
List<Map<String, Object>> tmp = null;
do {
String limitSql = common.limitByMysql(sql, page);
tmp = jdbcTemplate.queryForList(limitSql);
list.addAll(tmp);
page.toNextPage();
} while(tmp != null && tmp.size() > 0);
Map<String, List<Map<String, Object>>> datas = CollectionUtil.toGroupList(list, "DIS_CODE", "SALES_NO");
for(List<Map<String, Object>> vList : datas.values()) {
ZDTSD011ACTUALSALESSENDING mt011ACTUALSALES = new ZDTSD011ACTUALSALESSENDING();
ZDTSD011ACTUALSALESSENDING.RECORD RECORD = new ZDTSD011ACTUALSALESSENDING.RECORD();
mt011ACTUALSALES.setRECORD(RECORD);
ZDTSD011ACTUALSALESSENDING.RECORD.HEADER header = new ZDTSD011ACTUALSALESSENDING.RECORD.HEADER();
List<ZDTSD011ACTUALSALESSENDING.RECORD.ITEM> itemList = RECORD.getITEM();
JSONObject headerObject = new JSONObject(vList.get(0));
header.setAUBEL(headerObject.getString("SALES_NO"));
header.setFXSNA(headerObject.getString("DIS_NAME"));
header.setFXSNO(headerObject.getString("DIS_CODE"));
header.setSDATE(headerObject.getString("SALES_DATE"));
RECORD.setHEADER(header);
List<BigInteger> idList = new ArrayList<BigInteger>();
for(Map<String, Object> itemMap : vList) {
JSONObject itemObject = new JSONObject(itemMap);
idList.add(itemObject.getBigInteger("ID"));
ZDTSD011ACTUALSALESSENDING.RECORD.ITEM item = new ZDTSD011ACTUALSALESSENDING.RECORD.ITEM();
item.setCUSNA(itemObject.getString("DIS_STORE_NAME"));
item.setCUSNO(itemObject.getString("DIS_STORE_CODE"));
item.setCUSTY(itemObject.getString("DIS_STORE_TYPE"));
item.setFAMOU(itemObject.getString("DIS_TAX_AMOUNT"));
item.setFCITY(itemObject.getString("DIS_STORE_CITY"));
item.setFDNO(itemObject.getString("SALES_LINE"));
item.setFITEM(itemObject.getString("DIS_GOODS_CODE"));
item.setFPRIC(itemObject.getString("DIS_TAX_PRICE"));
item.setFPROV(itemObject.getString("DIS_STORE_PROV"));
item.setFQTY(itemObject.getString("DIS_QTY"));
item.setFSNDP(itemObject.getString("PURCHASING_PRICE"));
item.setMPG(itemObject.getString("MPG"));
item.setYLZD1(itemObject.getString("YLZD1"));
item.setYLZD2(itemObject.getString("YLZD2"));
item.setYLZD3(itemObject.getString("YLZD3"));
itemList.add(item);
}
SI011ACTUALSALESSyncOut.si011ACTUALSALESSyncOut(mt011ACTUALSALES);
String updateSql = "UPDATE t_dis_sales SET SEND_STATUS = 'Y', SEND_TIME = NOW() WHERE ID IN (" + StringUtil.join("?", ", ", idList.size(), "", "") + ")";
jdbcTemplate.update(updateSql, idList.toArray());
}
} }
} }
package com.egolm.sso.services; package com.egolm.sso.services;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import org.bouncycastle.util.encoders.Base64; import org.bouncycastle.util.encoders.Base64;
...@@ -94,6 +97,13 @@ public class CommonService { ...@@ -94,6 +97,13 @@ public class CommonService {
return dateString + "-" + this.getNextval(sName); return dateString + "-" + this.getNextval(sName);
} }
public String limitByMysql(String sql, Page page) {
long start = (page.getIndex() - 1) * page.getLimit();
long limit = page.getLimit();
String limitKeys = StringUtil.join(", as_limit.", " order by as_limit.", "", "", page.getLimitKey());
return "select as_limit.* from (" + sql + ") as_limit" + limitKeys + " limit " + start + ", " + limit;
}
@Transactional(propagation=Propagation.NOT_SUPPORTED) @Transactional(propagation=Propagation.NOT_SUPPORTED)
public void saveApiAccessLog(String METHOD, String ADDRESS, String RESULT) { public void saveApiAccessLog(String METHOD, String ADDRESS, String RESULT) {
Date now = new Date(); Date now = new Date();
...@@ -169,4 +179,143 @@ public class CommonService { ...@@ -169,4 +179,143 @@ public class CommonService {
String string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlSWRzIjpbIjM1YmY2NmI4LWQ2NzQtNDNkNy1iNjc3LTc0N2QwMWJhNDZiMyJdLCJ1c2VyX25hbWUiOiJ0cmFuY2UiLCJzY29wZSI6WyJDTElFTlQiXSwiZXhwaXJhdGlvbiI6MTU2NTAwODQ2ODA2NCwiZXhwIjoxNTY1MDA4NDY4LCJhdXRob3JpdGllcyI6WyJ0cmFuY2UiXSwianRpIjoiNGFmMjlhZTItZWJhYy00ZTg5LWExZDAtODUyYWEwZDhkNWM2IiwiY2xpZW50X2lkIjoicGMifQ.cCaEDqpB-yZQp-zmjYAv2igS1IdsjZVd-OT0EOfvdt4"; String string = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlSWRzIjpbIjM1YmY2NmI4LWQ2NzQtNDNkNy1iNjc3LTc0N2QwMWJhNDZiMyJdLCJ1c2VyX25hbWUiOiJ0cmFuY2UiLCJzY29wZSI6WyJDTElFTlQiXSwiZXhwaXJhdGlvbiI6MTU2NTAwODQ2ODA2NCwiZXhwIjoxNTY1MDA4NDY4LCJhdXRob3JpdGllcyI6WyJ0cmFuY2UiXSwianRpIjoiNGFmMjlhZTItZWJhYy00ZTg5LWExZDAtODUyYWEwZDhkNWM2IiwiY2xpZW50X2lkIjoicGMifQ.cCaEDqpB-yZQp-zmjYAv2igS1IdsjZVd-OT0EOfvdt4";
System.out.println(new String(Base64.decode(string))); System.out.println(new String(Base64.decode(string)));
} }
public static class Page implements java.io.Serializable{
private static final long serialVersionUID = 1L;
/**
* 分页页数
*/
protected Long index = 1L;
/**
* 分页大小,即每页数据显示条数
*/
protected Long limit = 50L;
/**
* 数据总条数
*/
protected Long total = 0L;
protected String[] limitKey;
public Page() {}
public Page(String... limitKey) {
this.limitKey = limitKey;
}
/**
* 构造函数
* @param index 分页查询的页索引
* @param limit 每页显示的条数
*/
public Page(Long index, Long limit) {
this.index = index;
this.limit = limit;
}
public Page(Long index, Long limit, String... limitKey) {
this.index = index;
this.limit = limit;
this.limitKey = limitKey;
}
public Long getIndex() {
Long pageTotal = getPageTotal();
if (index > pageTotal && pageTotal != null && pageTotal != 0) {
index = pageTotal + 1;
}
return index;
}
public Page toNextPage() {
this.index += 1;
return this;
}
public void setIndex(Long index) {
this.index = index;
}
public Long getLimit() {
return limit;
}
public void setLimit(Long limit) {
this.limit = limit;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
/**
* 计算总分页页数
* @return
*/
public Long getPageTotal() {
return total%limit == 0 ? (total/limit) : (total/limit + 1);
}
/**
* 计算分页查询开始行的行标
* @return 分页查询开始行标
*/
public Long getFirstRowNumber() {
return ((index - 1) * limit) + 1;
}
/**
* 计算分页查询结束行的行标
* @return 分页查询结束行标
*/
public Long getLastRowNumber() {
return index * limit;
}
public Long[] getPageIndexs() {
Long lastIndex = this.getPageTotal();
List<Long> list = new ArrayList<Long>();
list.add(index);
Long i = 1L;
Long prefPage = index;
Long nextPage = index;
do{
prefPage = index - i;
nextPage = index + i;
if(prefPage >= 1) {
list.add(0, prefPage);
}
if(nextPage <= lastIndex) {
list.add(nextPage);
}
i++;
} while(list.size() < 6 && (prefPage >= 1 || nextPage <= lastIndex));
return list.toArray(new Long[list.size()]);
}
public String[] getLimitKey() {
return limitKey;
}
public void setLimitKey(String... limitKey) {
if(this.limitKey == null) {
this.limitKey = limitKey;
} else {
List<String> strs = new ArrayList<String>();
strs.addAll(Arrays.asList(this.limitKey));
strs.addAll(Arrays.asList(limitKey));
this.limitKey = strs.toArray(new String[strs.size()]);
}
}
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment