package com.zy.third.erp.task; import com.zy.common.service.erp.ErpSqlServer; import com.zy.third.erp.entity.InDetTB; import com.zy.third.erp.entity.InHedTB; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; import java.util.List; /** * 入库单据 */ @Slf4j @Component public class ERPInHedTBScheduler { @Value("${erp.enabled}") private Boolean erpEnabled; @Autowired private ERPInOrOutService inMS; @Autowired private ErpSqlServer erpSqlServer; @Transactional(rollbackFor = Throwable.class) @Scheduled(cron = "${erp.refreshtime}") public void InHedTBScheduler() { //log.info("InHedTBScheduler开始了"); if (!erpEnabled) return; String sqlInHed = "select * from erp_InHedTB where LKName='中扬二期'"; List inHeds = erpSqlServer.select(sqlInHed, InHedTB.class); if (!inHeds.isEmpty()) { for (InHedTB inHed : inHeds) { System.out.println(inHed); HashMap condition = new HashMap<>(); condition.put("BillNo", "'" + inHed.getBillNo() + "'"); List inDetTBS = erpSqlServer.selectList(InDetTB.class, condition); HashMap hedAndDet = new HashMap<>(); hedAndDet.put("hed", inHed); hedAndDet.put("det", inDetTBS); boolean result = inMS.createInOrder(inHed, inDetTBS); if (result) { move(hedAndDet); } else { String sql = "UPDATE erp_InHedTB SET Temp3 = ‘fault’ WHERE BillNo = '" + inHed.getBillNo() + "'"; erpSqlServer.update(sql); } } } } @Transactional(rollbackFor = Throwable.class) public void move(HashMap hedAndDet) { InHedTB hed = (InHedTB) hedAndDet.get("hed"); ArrayList dets = (ArrayList) hedAndDet.get("det"); HashMap condition = new HashMap<>(); condition.put("BillNo", "'" + hed.getBillNo() + "'"); erpSqlServer.delete(InHedTB.class, condition); for (InDetTB det : dets) { HashMap condition2 = new HashMap<>(); condition2.put("BillNo", "'" + det.getBillNo() + "'"); condition2.put("iNo", String.valueOf(det.getINO())); erpSqlServer.delete(InDetTB.class, condition2); } } }