package com.uas.eis.task; import com.uas.eis.config.DonlimConfig; import com.uas.eis.dao.BaseDao; import com.uas.eis.dto.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; @Component public class SaleOutTask extends BaseTask{ @Autowired private DonlimConfig donlimConfig; @Autowired private BaseDao baseDao; private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void execute() { SaleOutReq req = new SaleOutReq(); 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_='SALEOUT'"); req.setQueryTime(querytime.toString()); List errsqls = new ArrayList(); try { HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); ResponseEntity resp = restTemplate.postForEntity(donlimConfig.getRoute()+"/wms/deliveryBill", configHttpEntity(req), SaleOutResp.class); assertOK(resp); logger.info("SaleOut code {} ,msg {} ",resp.getBody().getCode(),resp.getBody().getMsg()); List saleOutDTOS = resp.getBody().getData(); //记录对接日志 logger.info("SaleOut dataSize {}", saleOutDTOS.size()); //对接数据写入中间表 if(saleOutDTOS.size()>0){ List sqls = new ArrayList(); for(SaleOutDTO saleOut:saleOutDTOS){ int id = baseDao.getSeqId("DOCKING_XINBAO_SALEOUT_SEQ");// 获取主键序列 sqls.addAll(saleOut.toSqlString(id,req.getTimeStamp()));// 插入主记录 errsqls.add("insert into DOCKING_XINBAO_SALEOUT_ERR(timeStamp_,billNo) values('"+req.getTimeStamp()+"','"+saleOut.getBillNo()+"')"); logger.info("SaleOutDownLoad billNo: {}", saleOut.getBillNo()); } if(sqls.size()>0){ baseDao.execute(sqls); } baseDao.execute("update docking_xinbao_reccord set DONEDATE_='"+now+"' where type_='SALEOUT'"); } logger.info("SaleOutDownLoad insert into dockingTable", saleOutDTOS.size()); baseDao.execute("update DOCKING_XINBAO_SALEOUT set turnstatus=-2 where TIMESTAMP_='"+req.getTimeStamp()+"' and" + " exists(select 1 from prodinout where pi_class='出货单' and pi_sourcecode=billno and pi_sourcetype='对接新宝')"); logger.info("SaleDownLoad turnSaleOut begin"); //对接数据转入正式表 baseDao.procedure("dockingToSaleOut", new Object[] { req.getTimeStamp()}); logger.info("SaleDownLoad turnSaleOut end"); baseDao.execute("insert into dockinglog(id_,date_,type_,result_,Info_) values(dockinglog_seq.nextval,sysdate,'SALEOUT','SUCCEED','条数:'"+saleOutDTOS.size()+")"); } catch (Exception e) { if(errsqls.size()>0){ baseDao.execute(errsqls); } e.printStackTrace(); baseDao.execute("insert into dockinglog(id_,date_,type_,result_,Info_) " + " values(dockinglog_seq.nextval,sysdate,'SALEOUT','FAILED','"+ e.getMessage()+"')"); } } }