package com.uas.eis.task; import com.uas.api.b2c_erp.seller.model.OrderDetail; import com.uas.eis.config.DonlimConfig; import com.uas.eis.dao.BaseDao; import com.uas.eis.dto.SaleDownLoadDTO; import com.uas.eis.dto.SaleDownLoadReq; import com.uas.eis.dto.SaleDownLoadResp; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class SaleDownLoadTask extends BaseTask { @Autowired private DonlimConfig donlimConfig; @Autowired private BaseDao baseDao; private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void execute() { SaleDownLoadReq req = new SaleDownLoadReq(); req.setSupplyCode(donlimConfig.getSupplyCode()); req.configSign(); String now= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); Object querytime=baseDao.getFieldDataByCondition("docking_xinbao_reccord","DONEDATE_","type_='SALE'"); req.setQueryTime(querytime.toString()); List errsqls = new ArrayList(); try { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); ResponseEntity resp = restTemplate.postForEntity(donlimConfig.getRoute()+"/order/orderList", configHttpEntity(req), SaleDownLoadResp.class); assertOK(resp); //记录对接日志 logger.info("SaleDownLoad code {} ,msg {} ",resp.getBody().getCode(),resp.getBody().getMsg()); List downLoadDTOS = resp.getBody().getData(); logger.info("SaleDownLoad dataSize {}", downLoadDTOS.size()); //对接数据写入中间表 if(downLoadDTOS.size()>0){ List sqls = new ArrayList(); for(SaleDownLoadDTO sale:downLoadDTOS){ int id = baseDao.getSeqId("DOCKING_XINBAO_SALE_SEQ");// 获取主键序列 sqls.addAll(sale.toSqlString(id,req.getTimeStamp()));// 插入主记录 errsqls.add("insert into DOCKING_XINBAO_SALE_ERR(timeStamp_,pono) values('"+req.getTimeStamp()+"','"+sale.getPoNo()+"')"); logger.info("SaleDownLoad PONO: {}", sale.getPoNo()); } if(sqls.size()>0){ baseDao.execute(sqls); } baseDao.execute("update docking_xinbao_reccord set DONEDATE_='"+now+"' where type_='SALE'"); } logger.info("SaleDownLoad insert into dockingTable", downLoadDTOS.size()); baseDao.execute("update DOCKING_XINBAO_SALE set turnstatus=-2 where TIMESTAMP_='"+req.getTimeStamp()+"' and exists(select 1 from sale where sa_pocode=PONO and sa_sourcetype='对接新宝')"); logger.info("SaleDownLoad turnSale begin"); //对接数据转入正式表 baseDao.procedure("dockingToSale", new Object[] { req.getTimeStamp()}); logger.info("SaleDownLoad turnSale end"); } catch (Exception e) { if(errsqls.size()>0){ baseDao.execute(errsqls); } e.printStackTrace(); } } }