admin
2024-10-15 6d313a4a6f9f9d7ea65ec50ab0d4491e595edb97
jcdm-main/src/main/java/com/jcdm/main/bs/formulaChild/controller/BsFormulaChildInfoController.java
@@ -1,12 +1,19 @@
package com.jcdm.main.bs.formulaChild.controller;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jcdm.main.bs.formulaChildInfoTemp.domain.BsFormulaChildInfoTemp;
import com.jcdm.main.bs.formulaChildInfoTemp.service.IBsFormulaChildInfoTempService;
import com.jcdm.main.constant.Constants;
import com.jcdm.main.om.productionOrde.domain.OmProductionOrdeInfo;
import com.jcdm.main.om.productionOrde.service.IOmProductionOrdeInfoService;
import com.kangaroohy.milo.model.ReadWriteEntity;
import com.kangaroohy.milo.service.MiloService;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -42,20 +49,95 @@
    private IBsFormulaChildInfoService bsFormulaChildInfoService;
    @Autowired
    private IOmProductionOrdeInfoService omProductionOrdeInfoService;
    @Autowired
    private MiloService miloService;
    @Autowired
    private IBsFormulaChildInfoTempService bsFormulaChildInfoTempService;
    /**
     * 扫码确认
     */
    @GetMapping("/inPlaceInspection")
    public AjaxResult inPlaceInspection(BsFormulaChildInfo bsFormulaChildInfo)
    {
        Integer recordDataDone = 0;
        try {
            Object orderNumberObject = miloService.readFromOpcUa("PACK."+bsFormulaChildInfo.getProcessesCode()+".RecordDataDone").getValue();
            if(ObjectUtil.isNotEmpty(orderNumberObject)){
                if(Integer.valueOf(orderNumberObject.toString()) == 11){
                    recordDataDone = 1;
                }
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return AjaxResult.success(recordDataDone);
    }
    /**
     * 扫码确认
     */
    @GetMapping("/unfinishedProcess")
    public AjaxResult unfinishedProcess(BsFormulaChildInfo bsFormulaChildInfo)
    {
        try {
            String str = "PACK."+bsFormulaChildInfo.getProcessesCode()+".RecordDataDone";
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(bsFormulaChildInfo.getRecordDataDone()).build());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return AjaxResult.success();
    }
    @GetMapping("/manualNgOffline")
    public AjaxResult manualNgOffline(BsFormulaChildInfo bsFormulaChildInfo)
    {
        Integer stepNumber = 31;
        try {
            logger.info("手动下线,写入ArtificialNgSignal为:{}",stepNumber);
            String str = "PACK."+bsFormulaChildInfo.getLocationCode()+".ArtificialNgSignal";
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(stepNumber).build());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        OmProductionOrdeInfo one = omProductionOrdeInfoService.getOne(new LambdaQueryWrapper<OmProductionOrdeInfo>()
                .eq(OmProductionOrdeInfo::getProductNum, bsFormulaChildInfo.getSfcBarcode())
        );
        one.setArtificialNgFlag("1");
        omProductionOrdeInfoService.saveOrUpdate(one);
        return AjaxResult.success(stepNumber);
    }
    /**
     * 扫码确认
     */
    @GetMapping("/fistSetpNumber")
    public void fistSetpNumber(BsFormulaChildInfo bsFormulaChildInfo)
    public AjaxResult fistSetpNumber(BsFormulaChildInfo bsFormulaChildInfo)
    {
        Integer stepNumber = 1;
        try {
            List<BsFormulaChildInfo> op260 = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>().eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode()));
            List<BsFormulaChildInfo> filteredList = op260.stream()
                    .filter(obj -> obj.getResults() != null && !obj.getResults().isEmpty())
                    .collect(Collectors.toList());
            if(filteredList.size() > 0){
                if("1".equals(bsFormulaChildInfo.getArtificialNgFlag())){
                    stepNumber = Integer.valueOf(filteredList.get(filteredList.size()-1).getStepSort());
                }else {
                    stepNumber = Integer.valueOf(filteredList.get(filteredList.size()-1).getStepSort())+1;
                }
            }
            String str = "PACK."+bsFormulaChildInfo.getProcessesCode()+".MStepNumber";
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(1).build());
            miloService.writeToOpcShort(ReadWriteEntity.builder().identifier(str).value(stepNumber).build());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return AjaxResult.success(stepNumber);
    }
    /**
@@ -64,20 +146,45 @@
    @GetMapping("/noPageListFormulaChild")
    public TableDataInfo noPageListFormulaChild(BsFormulaChildInfo bsFormulaChildInfo)
    {
        if("1".equals(bsFormulaChildInfo.getArtificialNgFlag())){
            List<BsFormulaChildInfoTemp> tempList = bsFormulaChildInfoTempService.list(new LambdaQueryWrapper<BsFormulaChildInfoTemp>()
                    .eq(BsFormulaChildInfoTemp::getProcessesCode, bsFormulaChildInfo.getProcessesCode())
                    .eq(BsFormulaChildInfoTemp::getProductCode, bsFormulaChildInfo.getProductCode())
                    .eq(BsFormulaChildInfoTemp::getSfcCode, bsFormulaChildInfo.getSfcBarcode()));
            List<Long> ids = new ArrayList<>();
            for (int i = 0; i < tempList.size(); i++) {
                BsFormulaChildInfoTemp childInfoTemp = tempList.get(i);
                LambdaUpdateWrapper <BsFormulaChildInfo> updateWrapper = new LambdaUpdateWrapper<>();
                updateWrapper.set( BsFormulaChildInfo::getResults, childInfoTemp.getResults());
                updateWrapper.set( BsFormulaChildInfo::getCollectData, childInfoTemp.getCollectData());
                updateWrapper.eq( BsFormulaChildInfo::getId, childInfoTemp.getChildId());
                bsFormulaChildInfoService.update(new BsFormulaChildInfo(),updateWrapper);
                if(i == tempList.size()-1){
                    LambdaUpdateWrapper<OmProductionOrdeInfo> orderInfoUpdateWrapper = new LambdaUpdateWrapper<>();
                    orderInfoUpdateWrapper.set(OmProductionOrdeInfo::getArtificialNgFlag, "");
                    orderInfoUpdateWrapper.eq(OmProductionOrdeInfo::getProductNum, childInfoTemp.getSfcCode());
                    boolean update = omProductionOrdeInfoService.update(new OmProductionOrdeInfo(), orderInfoUpdateWrapper);
                }
                ids.add(childInfoTemp.getId());
            }
            bsFormulaChildInfoTempService.removeByIds(ids);
        }
        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
                .eq(BsFormulaChildInfo::getProductCode,bsFormulaChildInfo.getProductCode())
                .eq(BsFormulaChildInfo::getProcessesCode,bsFormulaChildInfo.getProcessesCode()));
                .eq(BsFormulaChildInfo::getProcessesCode,bsFormulaChildInfo.getProcessesCode())
        );
        if (CollUtil.isNotEmpty(list)){
            List<BsFormulaChildInfo> collect1 = list.stream().filter(x -> Constants.OK.equals(x.getResults())).collect(Collectors.toList());
            List<BsFormulaChildInfo> collect2 = list.stream().filter(x -> !Constants.OK.equals(x.getResults())).collect(Collectors.toList());
            list = collect1;
            list.addAll(collect2);
        }
        for (BsFormulaChildInfo formulaChildInfo : list) {
//            formulaChildInfo.setSort(formulaChildInfo.getStepSort());
//            formulaChildInfo.setAddress(formulaChildInfo.getTechRequirement());
//            formulaChildInfo.setImg(formulaChildInfo.getOperationSteps());
            if(formulaChildInfo.getCollectData()!=null&& !"".equals(formulaChildInfo.getCollectData())){
                if(formulaChildInfo.getCollectData().contains("[")){
                    String data = formulaChildInfo.getCollectData();
@@ -87,8 +194,36 @@
                }
            }
        }
        return getDataTable(list);
    }
//    @GetMapping("/noPageListFormulaChild")
//    public TableDataInfo noPageListFormulaChild(BsFormulaChildInfo bsFormulaChildInfo)
//    {
//
//        List<BsFormulaChildInfo> list = bsFormulaChildInfoService.list(new LambdaQueryWrapper<BsFormulaChildInfo>()
//                        .eq(BsFormulaChildInfo::getProductCode,bsFormulaChildInfo.getProductCode())
//                        .eq(BsFormulaChildInfo::getProcessesCode,bsFormulaChildInfo.getProcessesCode())
//        );
//        if (CollUtil.isNotEmpty(list)){
//            List<BsFormulaChildInfo> collect1 = list.stream().filter(x -> Constants.OK.equals(x.getResults())).collect(Collectors.toList());
//            List<BsFormulaChildInfo> collect2 = list.stream().filter(x -> !Constants.OK.equals(x.getResults())).collect(Collectors.toList());
//            list = collect1;
//            list.addAll(collect2);
//        }
//        for (BsFormulaChildInfo formulaChildInfo : list) {
//            if(formulaChildInfo.getCollectData()!=null&& !"".equals(formulaChildInfo.getCollectData())){
//                if(formulaChildInfo.getCollectData().contains("[")){
//                    String data = formulaChildInfo.getCollectData();
//                    data = data.replace("[", "").replace("]", "").replace(" ", "");
//                    String[] tightenDataParts = data.split(",");
//                    formulaChildInfo.setCollectData("扭矩"+tightenDataParts[0]+"角度"+tightenDataParts[1]+"扭矩结果"+tightenDataParts[2]+"角度结果"+tightenDataParts[3]);
//                }
//            }
//        }
//        return getDataTable(list);
//    }
    /**
     * 查询配方配置子信息列表
@@ -164,6 +299,15 @@
    /**
     * 放行请空状态
     */
    @GetMapping("/checkMaterialCode")
    public AjaxResult checkMaterialCode(BsFormulaChildInfo bsFormulaChildInfo)
    {
        return bsFormulaChildInfoService.checkMaterialCode(bsFormulaChildInfo);
    }
    /**
     * 放行请空状态
     */
    @GetMapping("/clearWorkpieceRelease")
    public AjaxResult clearWorkpieceRelease(BsFormulaChildInfo bsFormulaChildInfo)
    {