JavaSource/com/mandi/fendan/service/impl/ErpService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaSource/com/mandi/fendan/util/Contants.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaSource/com/mandi/fendan/util/ThreadPoolUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
JavaSource/com/mandi/webservice/service/impl/FdXSTDService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
JavaSource/com/mandi/fendan/service/impl/ErpService.java
@@ -380,7 +380,6 @@ mm.put("td_wfdsl", wt.getTd_wfdsl()); mm.put("td_wfdzl", BigDecimalfiter.addscal(0, wt.getTd_wfdzl(), Contants.scale)); } catch (Exception e) { // TODO: handle exception } rl.add(mm); } @@ -507,7 +506,6 @@ // mm.put("td_wfdzl",BigDecimalfiter.addscal(0, wt.getTd_wfdzl(), // Contants.scale)); // } catch (Exception e) { // // TODO: handle exception // } rl.add(mm); } @@ -939,7 +937,7 @@ this.fdvcper.del(vehicleId, lg.getDepartno(), fb.getSdepartNo()); // 发送NC系统删除分单信息 // 发送NC系统删除分单信息 todo 发送nc暂时取消掉,正式要恢复 if (tdl != null && tdl.size() > 0) { Fileoperation.AppendContentToFile(Fileoperation.gettestFileName(), "取消配车业务单 请求提单 ::" + Jacksonmethod.tojson(tdl, false)); JavaSource/com/mandi/fendan/util/Contants.java
@@ -47,11 +47,12 @@ public static String yr_scanCodeNoticeUrl = yktLocalAdd + "/routine/app/notice/scan.htm"; // 通知义瑞装车的接口 public static String yr_canDoScanUrl = yktLocalAdd + "/routine/app/notice/canDoScan.htm"; // 通知义瑞装车的接口 public static String ms_DoScanUrl = yktLocalAdd + "/routine/app/notice/msScan.htm"; // 通知明晟装车的接口 //有可能变动的变量,切记不要写成final了,否则常量值编译到文件里面了;遇到一个final的问题,替换配置文件无效,很郁闷,原来是这里导致的问题;聪明反被聪明误; public static String msLedServiceAddr= "http://10.22.12.104:8080/APPService.asmx"; // 明晟装车 ABC区LED webservice public static String yr_zcLedUrl = "http://10.4.12.97:8080/APPService.asmx"; // 义瑞LED 装车 webservice public static String kj_zcLedUrl = "http://10.3.5.55:8088/APPService.asmx"; // 义瑞LED 装车 webservice public static String yr_zcLedUrl = "http://10.4.12.187:8080/APPService.asmx"; // 义瑞LED 装车 webservice public static String kj_zcLedUrl = "http://10.3.5.55:8088/APPService.asmx"; // 科技LED 装车 webservice //分单回写nc系统测试地址 // public static String NCfdhx_url = "http://10.0.13.20:9090/api/Domain/mtcesb/servlet/PubAPIServlet"; JavaSource/com/mandi/fendan/util/ThreadPoolUtil.java
@@ -1,7 +1,7 @@ package com.mandi.fendan.util; import javax.validation.constraints.NotNull; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledThreadPoolExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; @@ -27,25 +27,27 @@ //存活时间 private long keepAliveTime = 1; private TimeUnit unit = TimeUnit.HOURS; private ThreadPoolExecutor executor; // private ThreadPoolExecutor executor; ScheduledThreadPoolExecutor executor; private ThreadPoolUtil() { //给corePoolSize赋值:当前设备可用处理器核心数*2 + 1,能够让cpu的效率得到最大程度执行(有研究论证的) corePoolSize = Runtime.getRuntime().availableProcessors() * 2 + 1; maxPoolSize = corePoolSize; executor = new ThreadPoolExecutor( //当某个核心任务执行完毕,会依次从缓冲队列中取出等待任务 corePoolSize, // 然后new LinkedBlockingQueue(),然后maximumPoolSize,但是它的数量是包含了corePoolSize的 maxPoolSize, //表示的是maximumPoolSize当中等待任务的存活时间 keepAliveTime, unit, //缓冲队列,用于存放等待任务,Linked的先进先出 new LinkedBlockingQueue(), new DefaultThreadFactory(Thread.NORM_PRIORITY, "thread-pool-"), new ThreadPoolExecutor.AbortPolicy() ); // executor = new ThreadPoolExecutor( // //当某个核心任务执行完毕,会依次从缓冲队列中取出等待任务 // corePoolSize, // // 然后new LinkedBlockingQueue(),然后maximumPoolSize,但是它的数量是包含了corePoolSize的 // maxPoolSize, // //表示的是maximumPoolSize当中等待任务的存活时间 // keepAliveTime, // unit, // //缓冲队列,用于存放等待任务,Linked的先进先出 // new LinkedBlockingQueue(), // new DefaultThreadFactory(Thread.NORM_PRIORITY, "thread-pool-"), // new ThreadPoolExecutor.AbortPolicy() // ); executor = new ScheduledThreadPoolExecutor(corePoolSize); } public static ThreadPoolUtil getInstance() { @@ -65,18 +67,36 @@ * @param runnable */ public void execute(Runnable runnable) { checkNull(); if (runnable != null) { executor.execute(runnable); } } void checkNull() { if (executor == null) { executor = new ThreadPoolExecutor( corePoolSize, maxPoolSize, keepAliveTime, TimeUnit.SECONDS, new LinkedBlockingQueue(), // executor = new ThreadPoolExecutor( // corePoolSize, // maxPoolSize, // keepAliveTime, // TimeUnit.SECONDS, // new LinkedBlockingQueue(), // new DefaultThreadFactory(Thread.NORM_PRIORITY, "thread-pool-"), // new ThreadPoolExecutor.AbortPolicy()); executor = new ScheduledThreadPoolExecutor(corePoolSize, new DefaultThreadFactory(Thread.NORM_PRIORITY, "thread-pool-"), new ThreadPoolExecutor.AbortPolicy()); } } /** * * @param runnable * @param delay 延迟执行,单位毫秒 */ public void execute(Runnable runnable,long delay) { checkNull(); if (runnable != null) { executor.execute(runnable); executor.schedule(runnable, delay, TimeUnit.MILLISECONDS); } } JavaSource/com/mandi/webservice/service/impl/FdXSTDService.java
@@ -437,10 +437,10 @@ return prr; } } catch (Exception e) { // TODO: handle exception } String currPch="";// 当前批次号 List<String> pchList = new ArrayList<>(); //第一次添加装卸记录发送装车信息 int sfzc=this.fbper.getbsitembyNo(fdb.getBsNo()); if(sfzc<=0) { @@ -582,6 +582,7 @@ remp.put("tdmx_tdfl",tdmx.getTdmx_tdfl()); relist.add(remp); currPch = tdmx.getTdmx_pch(); pchList.add(tdmx.getTdmx_pch()); } if(grossNum>0) { @@ -607,12 +608,25 @@ // 此处异步触发一下明晟发车 if("06".equals(fdb.getSdepartNo())) { final String cph = currPch; final String pch = currPch; final String finalVehicleId = vehicleId; ThreadPoolUtil.getInstance().execute(()->{ Map paramMap = new HashMap(); paramMap.put("vehicleId", finalVehicleId); paramMap.put("tdmxPchList", tdmxPchList); String jsonStr = Jacksonmethod.tojson(paramMap, false); JsonObject jsonObject = Wxhtmethod.postJsonStr(Contants.ms_DoScanUrl, jsonStr); if (jsonObject.get("code").getAsInt() != 0) { prr.setCode(1); prr.setErrmsg(jsonObject.get("errmsg").getAsString()); // return prr; } }); // 延迟1.5秒执行,保证数据执行完了 ThreadPoolUtil.getInstance().execute(()->{ synchronized (FdXSTDService.refreshMsLedLock) { if (FdXSTDService.refreshMsLedLock) { // 系统繁忙 log.info(finalVehicleId + "" + cph + "系统繁忙!"); log.info(finalVehicleId + "" + pch + "系统繁忙!"); return; } } @@ -620,7 +634,7 @@ synchronized (FdXSTDService.refreshMsLedLock) { FdXSTDService.refreshMsLedLock = true; } sendToMsLed(cph); sendToMsLed(pch); } catch (Exception e) { log.error("出现异常:"+ e.getMessage(),e); } finally { @@ -628,7 +642,7 @@ FdXSTDService.refreshMsLedLock = false; } } }); },1500); } if("08".equals(fdb.getSdepartNo())) { final String cph = currPch; @@ -680,13 +694,18 @@ } /** * * 挪到一卡通 * @param currPch 当前批次号 */ public void sendToMsLed(String currPch){ //A区 76-86 + 99-1 //B区 14-33 + 99-2 //C区 53-67 + 99-3 // 2024年改 //A区 73-88 + 99-1 + 40-45 //B区 14-27 + 99-2 + 46-49 //C区 50-65 + 99-3 //D区 28-39 + 69-72 + 89-98 log.info("LED-ABC当前扫码批次号:" + currPch); List<Map> totalList = tdmxper.getHwList("06"); // 获取明晟所有在办业务单的信息 log.info("LED-ABC获取信息条数:" + totalList.size()); @@ -710,16 +729,18 @@ Map speakParam = new HashMap(1); for (Map.Entry<String, List<Map>> entry : ywbhListMap.entrySet()) { // 遍历每个业务单的 // 当前装车A、B、C区 boolean currA = false,currB = false, currC = false; // 当前装车A、B、C区; D区只参与记录,不参与LED显示和语言播报 boolean currA = false,currB = false, currC = false, currD = false; boolean hasZcwc = false; // 保证已经完成了 String ywhb = entry.getKey(); List<Map> vehicleIdTotalList = entry.getValue(); Map<String, Integer> totalAbcMap = new HashMap(3); // 总计信息 // 总计信息 Map<String, Integer> totalAbcMap = new HashMap(3); totalAbcMap.put("A", 0); totalAbcMap.put("B", 0); totalAbcMap.put("C", 0); Map<String, Integer> abcMap = new HashMap(3); // 已装信息 /* 已装信息 */ Map<String, Integer> abcMap = new HashMap(3); abcMap.put("A", 0); abcMap.put("B", 0); abcMap.put("C", 0); @@ -732,32 +753,36 @@ String hh = hw.replaceAll("\\-.*",""); hh = hh.substring(hh.length()-2); // 取最后两位 int num = Integer.parseInt(hh); if (num >= 76 && num <= 86 || hw.lastIndexOf("99-1") >= 0) { // A区 if (num >= 73 && num <= 88 || hw.lastIndexOf("99-1") >= 0) { // A区 totalAbcMap.put("A",totalAbcMap.get("A") + 1); if (zcbz != null && zcbz == 1) { // 装车完成 abcMap.put("A", abcMap.get("A") + 1); hasZcwc = true; } if(pch.equals(currPch)) { currA = true; currB = false;currC =false; currA = true; currB = false;currC =false;currD=false; } } else if (num >= 14 && num <= 33 || hw.lastIndexOf("99-2") >= 0) { // B区 } else if (num >= 14 && num <= 27 || hw.lastIndexOf("99-2") >= 0) { // B区 totalAbcMap.put("B", totalAbcMap.get("B") + 1); if (zcbz != null && zcbz == 1) { abcMap.put("B", abcMap.get("B") + 1); hasZcwc = true; } if(pch.equals(currPch)) { currA = false; currB = true;currC =false; currA = false; currB = true;currC =false;currD=false; } } else if (num >= 53 && num <= 67 || hw.lastIndexOf("99-3") >= 0) { // C区 } else if (num >= 50 && num <= 65 || hw.lastIndexOf("99-3") >= 0) { // C区 totalAbcMap.put("C", totalAbcMap.get("C") + 1); if (zcbz != null && zcbz == 1) { abcMap.put("C", abcMap.get("C") + 1); hasZcwc = true; } if(pch.equals(currPch)) { currA = false; currB = false; currC =true; currA = false; currB = false; currC =true; currD=false; } } else if(num>=28 && num<=39 || (num>=69 && num<=72) || (num>=89 && num<=98)) { if(pch.equals(currPch)) { currA = false; currB = false;currC =false;currD=true; } } } @@ -815,7 +840,7 @@ } /** * 准备语音 * 准备语音 ,挪到一卡通 * @param cph 车牌号 * @param total 当前区总数 * @param abcMap A、B、C为key的区已装数目 @@ -996,7 +1021,6 @@ return orr; } } catch (Exception e) { // TODO: handle exception } // Fd_Bsheet nr=this.fbper.getbyVehicleId(vehicleId, Serviceenum.在办); // if(nr==null){