| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- package com.uas.eis.task;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.serializer.SerializerFeature;
- import com.uas.eis.config.PNSConfig;
- import com.uas.eis.dao.BaseDao;
- import com.uas.eis.entity.PNSSendData;
- import com.uas.eis.entity.PNSSendResp;
- import com.uas.eis.utils.FlexJsonUtil;
- import com.uas.eis.utils.HttpUtil;
- import com.uas.eis.utils.StringUtil;
- import net.sf.json.JSONObject;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.dao.EmptyResultDataAccessException;
- import org.springframework.http.HttpStatus;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Component;
- import org.springframework.util.StringUtils;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- @Component
- public class PnsDataSyncTask {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private int pageSize = 50;
- @Autowired
- private PNSConfig pnsConfig;
- @Autowired
- private BaseDao baseDao;
- /**
- * 第一商品营业部 1453
- * 第二商品营业部 733
- * */
- @Scheduled(cron = "0 0/5 * * * ?")
- public void UploadSaleData(){
- logger.info("Sale Upload Start---");
- List<PNSSendData> saleUploads = getSaleDataUpload();
- if(saleUploads.size() < 1 ) {
- return;
- }
- //分页上传
- int a = saleUploads.size() / pageSize;
- int b = saleUploads.size() % pageSize;
- int pages = a + (b>0?1:0);
- HashMap<String, String> reqHeader = new HashMap<>();
- reqHeader.put("fromsys","ISP");
- JSONObject pageReq = new JSONObject();
- pageReq.put("if_name","ISPP-PSI-UPLOAD");
- pageReq.put("if_key" , pnsConfig.getIf_key());
- pageReq.put("total_page", String.valueOf(pages));
- pageReq.put("total_data_count", String.valueOf(saleUploads.size()));
- logger.info("Sale Upload totalSize {}", pages);
- int flag = 0;
- for(int i = 0 ; i < pages; i++) {
- pageReq.put("current_page", String.valueOf(i+1));
- if((i+1)*pageSize > saleUploads.size()) {
- pageReq.put("current_data_count", String.valueOf(b));
- pageReq.put("detail", JSONArray.toJSONString(saleUploads.subList(i*pageSize, i*pageSize+b), SerializerFeature.WriteMapNullValue));
- }else {
- pageReq.put("current_data_count", String.valueOf(pageSize));
- pageReq.put("detail", JSONArray.toJSONString(saleUploads.subList(i*pageSize, (i+1)*pageSize),SerializerFeature.WriteMapNullValue));
- }
- try {
- logger.info("上传数据{}",pageReq.toString());
- HttpUtil.Response response = HttpUtil.sendPostRequest(pnsConfig.getRoute(), reqHeader, pageReq.toString());
- logger.info("{}, statusCode{},{}",response.getResponseText(), response.getStatusCode(), response.getStatusCode() == HttpStatus.OK.value());
- if (response.getStatusCode() == HttpStatus.OK.value()) {
- String data = response.getResponseText();
- logger.info("{}", StringUtils.hasText(data));
- if (StringUtils.hasText(data)) {
- PNSSendResp resp = FlexJsonUtil.fromJson(String.valueOf(FlexJsonUtil.fromJson(data).get("result")), PNSSendResp.class);
- if(resp.getSuccess()) {
- logger.info("Sale Upload success Size {}", i);
- pageReq.put("if_batch_no",resp.getIf_batch_no());
- }
- }
- }else {
- flag= 1;
- }
- } catch (Exception e) {
- flag= 1;
- logger.info(e.getMessage());
- e.printStackTrace();
- }
- }
- if(flag == 0 ) {
- baseDao.execute("UPDATE PNS_SENDDATADETAIL SET UPLOAD=-1 WHERE NVL(CONFIRM_STATUS,'已确认')='已确认' AND UPLOAD=0");
- baseDao.execute("UPDATE PNS_SENDDATAMAIN SET LAST_SENDDATE=SYSDATE,SENDSTATUS_='已发送' WHERE NVL(SENDSTATUS_,' ')='待发送'");
- }
- }
- public List<PNSSendData> getSaleDataUpload() {
- try {
- List<PNSSendData> sendSales = baseDao
- .getJdbcTemplate()
- .query(" SELECT SUBSTR(YEAR_MONTH,1,4)||'-'||SUBSTR(YEAR_MONTH,5,2) ymonth,MODEL_NO_CUST,MODEL_NO_ISP,(CASE WHEN FINAL_BUYER_ISP IS NOT NULL THEN FINAL_BUYER_ISP ELSE FINAL_BUYER_CUST END ) FINAL_BUYER_CUST,FINAL_BUYER_ISP,FINAL_BUYER_NAME,CONFIRM_DATE,DATA_TYPE,DIVISION_NO,ROUND(SUM(QUANTITY),0) QUANTITY,CUST_ID,CUST_NAME FROM PNS_SENDDATADETAIL LEFT JOIN PNS_SENDDATAMAIN ON PNS_SENDDATADETAIL.MM_ID=PNS_SENDDATAMAIN.MAIN_ID " +
- " WHERE NVL(SENDSTATUS_,' ')='待发送' AND NVL(CONFIRM_STATUS,'已确认')='已确认' GROUP BY YEAR_MONTH,MODEL_NO_CUST,MODEL_NO_ISP,FINAL_BUYER_CUST,FINAL_BUYER_ISP,FINAL_BUYER_NAME,CONFIRM_DATE,DATA_TYPE,DIVISION_NO,CUST_ID,CUST_NAME ORDER BY DATA_TYPE DESC,CONFIRM_DATE ASC,MODEL_NO_ISP ASC", new BeanPropertyRowMapper<PNSSendData>(PNSSendData.class));
- int num = 0;
- for(PNSSendData sendSale : sendSales) {
- num ++;
- if(num > pageSize) {
- num = 1;
- }
- sendSale.setRow_number(num); //分页处理序号问题
- /*sendSale.setCust_id(pnsConfig.getCust_id());
- sendSale.setCust_name("华商龙商务互联");
- sendSale.setYmonth("2023-04");*/
- }
- return sendSales;
- } catch (EmptyResultDataAccessException e) {
- return null;
- }
- };
- }
|