|  |  |  | 
|---|
|  |  |  | package com.zy.asrs.task; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.baomidou.mybatisplus.mapper.EntityWrapper; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.plugins.Page; | 
|---|
|  |  |  | import com.core.common.Cools; | 
|---|
|  |  |  | import com.zy.asrs.entity.Order; | 
|---|
|  |  |  | import com.zy.asrs.service.ApiLogService; | 
|---|
|  |  |  | import com.zy.asrs.service.OrderService; | 
|---|
|  |  |  | 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.OrderSyncHandler; | 
|---|
|  |  |  | import com.zy.common.entity.Parameter; | 
|---|
|  |  |  | import lombok.extern.slf4j.Slf4j; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Async; | 
|---|
|  |  |  | import org.springframework.scheduling.annotation.Scheduled; | 
|---|
|  |  |  | import org.springframework.stereotype.Component; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | private OrderSyncHandler orderSyncHandler; | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderService orderService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderLogService orderLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlLogService orderDetlLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private ApiLogService apiLogService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvLocDetlService agvLocDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlService orderDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private OrderDetlMapper orderDetlMapper; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private DocTypeService docTypeService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AgvWrkDetlService agvWrkDetlService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Integer page = 1; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Integer size = 300; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Scheduled(cron = "0 0 1 * * ? ") | 
|---|
|  |  |  | public void clearApiLog(){ | 
|---|
|  |  |  | public void clearApiLog() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | apiLogService.clearWeekBefore(); | 
|---|
|  |  |  | } catch (Exception e) { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //@Scheduled(cron = "0/5 * * * * ? ") | 
|---|
|  |  |  | @Async("orderThreadPool") | 
|---|
|  |  |  | public void completeAndReport(){ | 
|---|
|  |  |  | //@Scheduled(fixedDelay = 600000) | 
|---|
|  |  |  | //@Async("orderThreadPool") | 
|---|
|  |  |  | public void completeAndReport() { | 
|---|
|  |  |  | String erpReport = Parameter.get().getErpReport(); | 
|---|
|  |  |  | if (!Cools.isEmpty(erpReport) && erpReport.equals("true")) { | 
|---|
|  |  |  | List<Order> orders = orderService.selectComplete(); | 
|---|
|  |  |  | for (Order order : orders) { | 
|---|
|  |  |  | //如果是调拨单则进行判断 | 
|---|
|  |  |  | if (order.getDocType() == 33) { | 
|---|
|  |  |  | //查询库存中是否存在该订单的物料信息,存在则不处理该订单 | 
|---|
|  |  |  | List<OrderDetl> orderDetlList = orderDetlService.selectByOrderId(order.getId()); | 
|---|
|  |  |  | Boolean flag = false; | 
|---|
|  |  |  | for (OrderDetl orderDetl : orderDetlList) { | 
|---|
|  |  |  | List<AgvLocDetl> agvLocDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("matnr", orderDetl.getMatnr()).eq("three_code", orderDetl.getThreeCode())); | 
|---|
|  |  |  | if (!Cools.isEmpty(agvLocDetls) ) { | 
|---|
|  |  |  | //只要有一项订单明细存在,则标识为true,跳过该订单 | 
|---|
|  |  |  | flag = true; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (flag) { | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ReturnT<String> result = orderSyncHandler.start(order); | 
|---|
|  |  |  | if (!result.isSuccess()) { | 
|---|
|  |  |  | log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); | 
|---|
|  |  |  | //log.error("单据[orderNo={}]上报erp失败", order.getOrderNo()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //@Scheduled(cron = "* 0/5 * * * ? ") | 
|---|
|  |  |  | //@Scheduled(cron = "0/30 * * * * ? ") | 
|---|
|  |  |  | //@Scheduled(fixedDelay = 30000) | 
|---|
|  |  |  | //@Async("orderThreadPool") | 
|---|
|  |  |  | public synchronized void reportOrder() { | 
|---|
|  |  |  | DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", "银座采购入库单")); | 
|---|
|  |  |  | if (docType != null) { | 
|---|
|  |  |  | List<String> reportDetl = orderDetlMapper.getReportDetl(docType.getDocId()); | 
|---|
|  |  |  | reportDetl.forEach(orderNo -> { | 
|---|
|  |  |  | orderSyncHandler.timelyStart(orderService.selectByNo(orderNo)); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /* | 
|---|
|  |  |  | 定时查询状态为2.作业中的单据,检查是否完成 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @Scheduled(cron = "0 */1 * * * ? ") | 
|---|
|  |  |  | public void completeOrder(){ | 
|---|
|  |  |  | List<Order> orderList = orderService.selectList(new EntityWrapper<Order>().eq("settle", 2)); | 
|---|
|  |  |  | orderList.forEach(order -> { | 
|---|
|  |  |  | orderService.checkComplete(order.getOrderNo()); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | //@Scheduled(cron = "0 */1 * * * ? ") | 
|---|
|  |  |  | @Scheduled(fixedDelay = 600000) | 
|---|
|  |  |  | public void completeOrder() { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | Page<Order> settle = orderService.selectPage(new Page<Order>(page, size), new EntityWrapper<Order>().eq("settle", 2)); | 
|---|
|  |  |  | if (settle != null) { | 
|---|
|  |  |  | List<Order> orderList = settle.getRecords(); | 
|---|
|  |  |  | if (orderList == null || orderList.isEmpty()) { | 
|---|
|  |  |  | log.info("轮询完毕,{},{}", page, settle.getTotal()); | 
|---|
|  |  |  | page = 1; | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | orderList.forEach(order -> { | 
|---|
|  |  |  | orderService.checkComplete2(order.getOrderNo()); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } finally { | 
|---|
|  |  |  | page++; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|