hjg
2024-02-05 301115d5e96b56cd093eee3fcff2d60a15184162
明晟装车记录
已修改4个文件
133 ■■■■■ 文件已修改
JavaSource/com/mandi/fendan/service/impl/ErpService.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
JavaSource/com/mandi/fendan/util/Contants.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JavaSource/com/mandi/fendan/util/ThreadPoolUtil.java 64 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
JavaSource/com/mandi/webservice/service/impl/FdXSTDService.java 60 ●●●● 补丁 | 查看 | 原始文档 | 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){