春风项目四线(合箱线、总装线)
吴健
9 天以前 8b43954926db6b4df6a61ab6e04d6cb11189069d
jcdm-main/src/main/java/com/jcdm/main/da/tileMatchCollection/controller/DaTileMatchCollectionController.java
@@ -1,7 +1,23 @@
package com.jcdm.main.da.tileMatchCollection.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.jcdm.common.core.domain.R;
import com.jcdm.main.da.paramCollection.service.IDaParamCollectionService;
import com.jcdm.main.da.passingStationCollection.domain.ProductNewPassStation;
import com.jcdm.main.da.passingStationCollection.mapper.ProductNewPassStationMapper;
import com.jcdm.main.da.passingStationCollection.service.ProductNewPassStationService;
import com.jcdm.main.da.tileMatchCollection.domain.ReceiveDataVO;
import com.jcdm.main.da.tileMatchRules.domain.DaTileMatchRules;
import com.jcdm.main.da.tileMatchRules.service.IDaTileMatchRulesService;
import com.kangaroohy.milo.model.ReadWriteEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@@ -21,6 +37,8 @@
import com.jcdm.common.utils.poi.ExcelUtil;
import com.jcdm.common.core.page.TableDataInfo;
import static com.jcdm.main.plcserver.sub.OPCUaSubscription.miloService;
/**
 * 条码采集Controller
 * 
@@ -33,6 +51,18 @@
{
    @Autowired
    private IDaTileMatchCollectionService daTileMatchCollectionService;
    @Autowired
    private IDaTileMatchRulesService daTileMatchRulesService;
    @Autowired
    private IDaParamCollectionService daParamCollectionService;
    @Resource
    private ProductNewPassStationMapper productNewPassStationMapper;
    @Resource
    private ProductNewPassStationService productNewPassStationService;
    /**
     * 查询条码采集列表
@@ -101,4 +131,80 @@
    {
        return toAjax(daTileMatchCollectionService.deleteDaTileMatchCollectionByIds(ids));
    }
    @GetMapping("/getBalanceData")
    public R getBalanceData(String boxCode, String balanceCode, String productType) throws Exception {
        List<DaTileMatchRules> resultList = new ArrayList<>();
        if (StrUtil.isBlank(boxCode)){
            return R.fail("箱体码不能为空");
        }
        if (StrUtil.isBlank(balanceCode)){
            return R.fail("平衡轴码不能为空");
        }
        if (StrUtil.isBlank(productType)){
            return R.fail("产品类型不能为空");
        }
        String balanceSplit = "";
        String boxCodeSplit = "";
        if ("380".equals(productType)){
            //        ArrayList<String> xtList = ListUtil.toList(boxCode.split(";"));
            ArrayList<String> xtList = ListUtil.toList(boxCode.split(","));
            ArrayList<String> czList = ListUtil.toList(balanceCode.split(";"));
            if (CollUtil.isNotEmpty(xtList) && xtList.size()>1 &&
                    CollUtil.isNotEmpty(czList) && czList.size()>3){
                boxCodeSplit = xtList.get(1);
                balanceSplit = czList.get(2);
            }
            DaTileMatchRules daTileMatchRules = new DaTileMatchRules();
            daTileMatchRules.setScanObject1("箱体");
            daTileMatchRules.setScanObject2("平衡轴");
            daTileMatchRules.setProductSeries(productType);
            List<DaTileMatchRules> allMatchRuleList = daTileMatchRulesService.selectDaTileMatchRulesList(daTileMatchRules);
            if (CollUtil.isNotEmpty(allMatchRuleList)){
                char[] boxCodeCharArray = boxCodeSplit.toCharArray();
                char[] balanceCodeCharArray = balanceSplit.toCharArray();
                if (boxCodeCharArray.length>6 && balanceCodeCharArray.length>2){
                    if ("380".equals(productType)){
                        for (int i = 1; i < 3; i++) {
                            int finalI = i;
                            List<DaTileMatchRules> collect = allMatchRuleList.stream().filter(x -> x.getAxisParameterNoPosition().equals(finalI + 5) &&
                                            x.getNeckParameterPosition().equals(finalI + 1) &&
                                            x.getAxisValue().equals(String.valueOf(boxCodeCharArray[finalI + 4])) &&
                                            x.getNeckValue().equals(String.valueOf(balanceCodeCharArray[finalI])))
                                    .collect(Collectors.toList());
                            if (CollUtil.isNotEmpty(collect)){
                                DaTileMatchRules rules = collect.get(0);
                                resultList.add(rules);
                            }
                        }
                    }
                }
            }
            if (CollUtil.isEmpty(resultList)){
                return R.fail("未匹配到平衡轴瓦");
            } else {
                ReadWriteEntity entity6 = new ReadWriteEntity("CFL4HX.OP040.CodeComplete", 1);
                miloService.writeToOpcByte(entity6);
                ProductNewPassStation passStation = new ProductNewPassStation();
                passStation.setProductType(productType);
                passStation.setBoxCode(boxCode);
                List<ProductNewPassStation> productPassStationList = productNewPassStationService.getProductPassStationList(passStation);
                if (CollUtil.isNotEmpty(productPassStationList)){
                    ProductNewPassStation newPassStation = productPassStationList.get(0);
                    productNewPassStationMapper.updatePassStationBalanceCode(newPassStation.getSfcCode(),balanceCode);
                }
            }
        } else if ("196".equals(productType)) {
//            ReadWriteEntity entity6 = new ReadWriteEntity("CFL4HX.OP040.CodeComplete", 1);
//            miloService.writeToOpcByte(entity6);
        }
        return R.ok(resultList);
    }
    @GetMapping("/getDetailData")
    public R getDetailData() throws Exception {
        ReceiveDataVO detailData = productNewPassStationService.getDetailData();
        return R.ok(detailData);
    }
}