| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- 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<String> errsqls = new ArrayList<String>();
- try {
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.APPLICATION_JSON);
- ResponseEntity<SaleOutResp> 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<SaleOutDTO> saleOutDTOS = resp.getBody().getData();
- //记录对接日志
- logger.info("SaleOut dataSize {}", saleOutDTOS.size());
- //对接数据写入中间表
- if(saleOutDTOS.size()>0){
- List<String> sqls = new ArrayList<String>();
- 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()+"')");
- }
- }
- }
|