package com.zy.asrs.task; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.mapper.OrderDetlMapper; import com.zy.asrs.service.*; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WorkLogHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Slf4j @Component public class WorkLogScheduler { @Autowired private WorkLogHandler workLogHandler; @Autowired private WrkMastService wrkMastService; @Autowired private OrderService orderService; @Autowired private WrkDetlService wrkDetlService; @Autowired private OrderDetlMapper orderDetlMapper; @Autowired private WrkDetlLogService wrkDetlLogService; @Autowired private MatService matService; @Scheduled(cron = "0/3 * * * * ? ") // @Transactional(rollbackFor = Exception.class) private void replenishColor() { List wrkDetlLogs = wrkDetlLogService.selectList(new EntityWrapper().isNull("color")); for (WrkDetlLog wrkDetlLog : wrkDetlLogs) { Mat mat = matService.selectByMatnr(wrkDetlLog.getMatnr()); if(null==mat){ wrkDetlLog.setColor("未知"); }else { wrkDetlLog.setColor(mat.getColor()); } boolean update = wrkDetlLogService.update(wrkDetlLog, new EntityWrapper() .eq("wrk_no", wrkDetlLog.getWrkNo()) .eq("matnr", wrkDetlLog.getMatnr()) .eq(!Cools.isEmpty(wrkDetlLog.getIoTime()),"io_time", wrkDetlLog.getIoTime())); if (!update) { throw new CoolException("状态为空,更新历史档失败"); } } } @Scheduled(cron = "0/3 * * * * ? ") private void execute() { List wrkMasts = wrkMastService.selectToBeHistoryData(); if (wrkMasts.isEmpty()) { return; } for (WrkMast wrkMast : wrkMasts) { ReturnT result = workLogHandler.start(wrkMast); if (!result.isSuccess()) { log.error("工作档[workNo={}]历史档处理失败", wrkMast.getWrkNo()); } } } @Scheduled(cron = "0/3 * * * * ? ") private void execute2() { List orders = orderService.selectWork(); for (Order order : orders) { List wrkDetls = wrkDetlService.selectByOrderNo(order.getOrderNo()); if (wrkDetls != null) { return; } List orderDetls = orderDetlMapper.selectList(new EntityWrapper().eq("order_id", order.getId())); boolean complete = true; for (OrderDetl orderDetl : orderDetls) { if (orderDetl.getAnfme() > orderDetl.getQty()) { complete = false; break; } } if (complete) { if (!orderService.updateSettle(order.getId(), 4L, null)) { throw new CoolException("修改订单【orderNo = " + order.getOrderNo() + "】状态为已完成失败"); } } } } }