SaleOutTask.java 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package com.uas.eis.task;
  2. import com.uas.eis.config.DonlimConfig;
  3. import com.uas.eis.dao.BaseDao;
  4. import com.uas.eis.dto.*;
  5. import org.slf4j.Logger;
  6. import org.slf4j.LoggerFactory;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.http.HttpHeaders;
  9. import org.springframework.http.MediaType;
  10. import org.springframework.http.ResponseEntity;
  11. import org.springframework.stereotype.Component;
  12. import java.text.SimpleDateFormat;
  13. import java.util.ArrayList;
  14. import java.util.Date;
  15. import java.util.List;
  16. @Component
  17. public class SaleOutTask extends BaseTask{
  18. @Autowired
  19. private DonlimConfig donlimConfig;
  20. @Autowired
  21. private BaseDao baseDao;
  22. private final Logger logger = LoggerFactory.getLogger(this.getClass());
  23. public void execute() {
  24. SaleOutReq req = new SaleOutReq();
  25. req.setSupplyCode(donlimConfig.getSupplyCode());
  26. req.configSign();
  27. String now= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
  28. Object querytime=baseDao.getFieldDataByCondition("docking_xinbao_reccord","DONEDATE_","type_='SALEOUT'");
  29. req.setQueryTime(querytime.toString());
  30. List<String> errsqls = new ArrayList<String>();
  31. try {
  32. HttpHeaders headers = new HttpHeaders();
  33. headers.setContentType(MediaType.APPLICATION_JSON);
  34. ResponseEntity<SaleOutResp> resp = restTemplate.postForEntity(donlimConfig.getRoute()+"/wms/deliveryBill", configHttpEntity(req), SaleOutResp.class);
  35. assertOK(resp);
  36. logger.info("SaleOut code {} ,msg {} ",resp.getBody().getCode(),resp.getBody().getMsg());
  37. List<SaleOutDTO> saleOutDTOS = resp.getBody().getData();
  38. //记录对接日志
  39. logger.info("SaleOut dataSize {}", saleOutDTOS.size());
  40. //对接数据写入中间表
  41. if(saleOutDTOS.size()>0){
  42. List<String> sqls = new ArrayList<String>();
  43. for(SaleOutDTO saleOut:saleOutDTOS){
  44. int id = baseDao.getSeqId("DOCKING_XINBAO_SALEOUT_SEQ");// 获取主键序列
  45. sqls.addAll(saleOut.toSqlString(id,req.getTimeStamp()));// 插入主记录
  46. errsqls.add("insert into DOCKING_XINBAO_SALEOUT_ERR(timeStamp_,billNo) values('"+req.getTimeStamp()+"','"+saleOut.getBillNo()+"')");
  47. logger.info("SaleOutDownLoad billNo: {}", saleOut.getBillNo());
  48. }
  49. if(sqls.size()>0){
  50. baseDao.execute(sqls);
  51. }
  52. baseDao.execute("update docking_xinbao_reccord set DONEDATE_='"+now+"' where type_='SALEOUT'");
  53. }
  54. logger.info("SaleOutDownLoad insert into dockingTable", saleOutDTOS.size());
  55. baseDao.execute("update DOCKING_XINBAO_SALEOUT set turnstatus=-2 where TIMESTAMP_='"+req.getTimeStamp()+"' and" +
  56. " exists(select 1 from prodinout where pi_class='出货单' and pi_sourcecode=billno and pi_sourcetype='对接新宝')");
  57. logger.info("SaleDownLoad turnSaleOut begin");
  58. //对接数据转入正式表
  59. baseDao.procedure("dockingToSaleOut", new Object[] { req.getTimeStamp()});
  60. logger.info("SaleDownLoad turnSaleOut end");
  61. baseDao.execute("insert into dockinglog(id_,date_,type_,result_,Info_) values(dockinglog_seq.nextval,sysdate,'SALEOUT','SUCCEED','条数:'"+saleOutDTOS.size()+")");
  62. } catch (Exception e) {
  63. if(errsqls.size()>0){
  64. baseDao.execute(errsqls);
  65. }
  66. e.printStackTrace();
  67. baseDao.execute("insert into dockinglog(id_,date_,type_,result_,Info_) " +
  68. " values(dockinglog_seq.nextval,sysdate,'SALEOUT','FAILED','"+ e.getMessage()+"')");
  69. }
  70. }
  71. }