春风项目四线(合箱线、总装线)
wujian
2024-07-10 59e2283a10aee45e6a98e34b432ba345095116db
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,87 @@
    {
        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 = "";
        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);
                        }
                    }
                } else if ("372".equals(productType)){
                    for (int i = 1; i < 3; i++) {
                        int finalI = i;
                        int finalAxis = i+4;
                        List<DaTileMatchRules> collect = allMatchRuleList.stream().filter(x -> x.getAxisParameterNoPosition().equals(finalAxis + 1) &&
                                        x.getNeckParameterPosition().equals(finalI + 1) &&
                                        x.getAxisValue().equals(String.valueOf(boxCodeCharArray[finalAxis])) &&
                                        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);
            }
        }
        return R.ok(resultList);
    }
    @GetMapping("/getDetailData")
    public R getDetailData() throws Exception {
        ReceiveDataVO detailData = productNewPassStationService.getDetailData();
        return R.ok(detailData);
    }
}