package com.jcdm.quartz.task; import cn.hutool.core.collection.CollUtil; import com.jcdm.main.bs.orderScheduling.domain.BsOrderScheduling; import com.jcdm.main.bs.orderScheduling.service.IBsOrderSchedulingService; import com.jcdm.main.da.passingStationCollection.service.IDaPassingStationCollectionService; import com.jcdm.main.da.passingStationCollection.service.impl.DaPassingStationCollectionServiceImpl; import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo; import com.jcdm.main.om.productionOrde.service.impl.OmProductionOrdeInfoServiceImpl; import com.jcdm.main.webservice.service.ReceivingServices; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.jcdm.common.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.annotation.Resource; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 定时任务调度测试 * * @author jc */ @Component("ryTask") public class RyTask { @Autowired private DaPassingStationCollectionServiceImpl passingStationCollectionServiceImpl; @Autowired private IBsOrderSchedulingService bsOrderSchedulingService; @Resource private OmProductionOrdeInfoServiceImpl omProductionOrdeInfoService; private static final Logger logger = LoggerFactory.getLogger("sys-user"); public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i) { System.out.println(StringUtils.format("执行多参方法: 字符串类型{},布尔类型{},长整型{},浮点型{},整形{}", s, b, l, d, i)); } public void ryParams(String params) { System.out.println("执行有参方法:" + params); } public void ryNoParams() { logger.info("执行定时任务开始"); String a=passingStationCollectionServiceImpl.SelectSN("88","OP010"); BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); bsOrderScheduling.setRemarks("1"); List bsOrderSchedulingList = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); if (CollUtil.isNotEmpty(bsOrderSchedulingList)){ Map> map = bsOrderSchedulingList.stream().collect(Collectors.groupingBy(BsOrderScheduling::getOrderNo)); OmProductionOrdeInfo omProductionOrdeInfo = new OmProductionOrdeInfo(); for (String s : map.keySet()) { List bsOrderSchedulings = map.get(s); if (CollUtil.isNotEmpty(bsOrderSchedulings)){ BsOrderScheduling scheduling = bsOrderSchedulings.get(0); int size = bsOrderSchedulings.size(); omProductionOrdeInfo.setPlanQty((long)size); omProductionOrdeInfo.setActualQty((long)0); omProductionOrdeInfo.setWorkOrderNo(s); omProductionOrdeInfo.setProductCode(scheduling.getModel()); omProductionOrdeInfo.setOrderStatus("2"); omProductionOrdeInfo.setTypeZ(scheduling.getModel()); omProductionOrdeInfoService.insertOmProductionOrdeInfo(omProductionOrdeInfo); logger.info("插入工单,{}",s); } } for (BsOrderScheduling scheduling : bsOrderSchedulingList) { scheduling.setRemarks("0"); bsOrderSchedulingService.updateBsOrderScheduling(scheduling); } } System.out.println("执行过程返回:" + a); logger.info("定时任务执行结束"); } String url = "http://podqapp.cfmoto.com.cn:50100/XISOAPAdapter/MessageServlet?senderParty=&senderService=BC_MES&receiverParty=&receiverService=&interface=SI_ZPP_CF_BC_001_SYN_OUT&interfaceNamespace=http://cfmoto.com/xi/MES"; public void workReportingTasks(){ report10(); report20(); } public void report10(){ BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); bsOrderScheduling.setReport10("0"); List bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); String status=""; String ev_meassage=""; for (BsOrderScheduling orderScheduling : bsOrderSchedulings) { try { String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0010")); ev_meassage=ReceivingServices.xmlToJSON1(xmlResult); status = ReceivingServices.xmlToJSON3(xmlResult); } catch (Exception e) { status="3"; } if(status.equals("1")) { orderScheduling.setReport10("1"); int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); logger.info("{}合箱报工成功",orderScheduling.getOrderNo()); }else { if(StringUtils.isEmpty(orderScheduling.getSpareField1())){ orderScheduling.setSpareField1("1"); bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); }else{ if(Integer.valueOf(orderScheduling.getSpareField1())+1>=3) { //累计报工异常超过3次 orderScheduling.setReport10("3"); orderScheduling.setSpareField1(String.valueOf(Integer.valueOf(orderScheduling.getSpareField1()) + 1)); }else { orderScheduling.setSpareField1(String.valueOf(Integer.valueOf(orderScheduling.getSpareField1()) + 1)); } bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); } if(status.equals("3")) logger.info("{}合箱报工因为网络原因,报工失败!",orderScheduling.getOrderNo()); else logger.info("{}合箱报工失败,原因:{}",orderScheduling.getOrderNo(),ev_meassage); } } } public void report20(){ BsOrderScheduling bsOrderScheduling = new BsOrderScheduling(); bsOrderScheduling.setReport20("0"); List bsOrderSchedulings = bsOrderSchedulingService.selectBsOrderSchedulingList(bsOrderScheduling); String status=""; String ev_meassage=""; for (BsOrderScheduling orderScheduling : bsOrderSchedulings) { try { String xmlResult = ReceivingServices.getInterfaceInformationXml(url, getProductionPlanInformationXml(orderScheduling.getOrderNo(), "0020")); ev_meassage=ReceivingServices.xmlToJSON1(xmlResult); status = ReceivingServices.xmlToJSON3(xmlResult); } catch (Exception e) { status="3"; } if(status.equals("1")){ orderScheduling.setReport20("1"); int i = bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); logger.info("{}总装报工成功",orderScheduling.getOrderNo()); }else { if(StringUtils.isEmpty(orderScheduling.getSpareField2())){ orderScheduling.setSpareField2("1"); bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); }else{ if(Integer.valueOf(orderScheduling.getSpareField2())+1>=3) { //累计报工异常超过3次 orderScheduling.setReport20("3"); orderScheduling.setSpareField2(String.valueOf(Integer.valueOf(orderScheduling.getSpareField2()) + 1)); }else{ orderScheduling.setSpareField2(String.valueOf(Integer.valueOf(orderScheduling.getSpareField2()) + 1)); } bsOrderSchedulingService.updateBsOrderScheduling(orderScheduling); if(status.equals("3")) logger.info("{}总装报工因为网络原因,报工失败!",orderScheduling.getOrderNo()); else logger.info("{}总装报工失败,原因:{}",orderScheduling.getOrderNo(),ev_meassage); } } } } public static String getProductionPlanInformationXml(String orderNo,String location){ String content = "\n" + " \n" + " \n" + " \n" + " "+orderNo+"\n" + " "+location+"\n" + " 1\n" + " 0 \n" + " 1 \n" + " \n" + " \n" + ""; //logger.info("{}",content); return content; } }