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; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.jcdm.common.annotation.Log; import com.jcdm.common.core.controller.BaseController; import com.jcdm.common.core.domain.AjaxResult; import com.jcdm.common.enums.BusinessType; import com.jcdm.main.bs.formulaChild.domain.BsFormulaChildInfo; import com.jcdm.main.bs.formulaChild.service.IBsFormulaChildInfoService; import com.jcdm.common.utils.poi.ExcelUtil; import com.jcdm.common.core.page.TableDataInfo; /** * 配方配置子信息Controller * * @author ruimin * @date 2023-12-26 */ @RestController @RequestMapping("/bs/formulaChild") public class BsFormulaChildInfoController extends BaseController { @Autowired 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() .eq(OmProductionOrdeInfo::getProductNum, bsFormulaChildInfo.getSfcBarcode()) ); one.setArtificialNgFlag("1"); omProductionOrdeInfoService.saveOrUpdate(one); return AjaxResult.success(stepNumber); } /** * 扫码确认 */ @GetMapping("/fistSetpNumber") public AjaxResult fistSetpNumber(BsFormulaChildInfo bsFormulaChildInfo) { Integer stepNumber = 1; try { List op260 = bsFormulaChildInfoService.list(new LambdaQueryWrapper().eq(BsFormulaChildInfo::getProcessesCode, bsFormulaChildInfo.getProcessesCode())); List 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(stepNumber).build()); } catch (Exception e) { throw new RuntimeException(e); } return AjaxResult.success(stepNumber); } /** * 查询配方配置子信息列表 */ @GetMapping("/noPageListFormulaChild") public TableDataInfo noPageListFormulaChild(BsFormulaChildInfo bsFormulaChildInfo) { if("1".equals(bsFormulaChildInfo.getArtificialNgFlag())){ List tempList = bsFormulaChildInfoTempService.list(new LambdaQueryWrapper() .eq(BsFormulaChildInfoTemp::getProcessesCode, bsFormulaChildInfo.getProcessesCode()) .eq(BsFormulaChildInfoTemp::getProductCode, bsFormulaChildInfo.getProductCode()) .eq(BsFormulaChildInfoTemp::getSfcCode, bsFormulaChildInfo.getSfcBarcode())); List ids = new ArrayList<>(); for (int i = 0; i < tempList.size(); i++) { BsFormulaChildInfoTemp childInfoTemp = tempList.get(i); LambdaUpdateWrapper 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 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 list = bsFormulaChildInfoService.list(new LambdaQueryWrapper() .eq(BsFormulaChildInfo::getProductCode,bsFormulaChildInfo.getProductCode()) .eq(BsFormulaChildInfo::getProcessesCode,bsFormulaChildInfo.getProcessesCode()) ); if (CollUtil.isNotEmpty(list)){ List collect1 = list.stream().filter(x -> Constants.OK.equals(x.getResults())).collect(Collectors.toList()); List 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); } // @GetMapping("/noPageListFormulaChild") // public TableDataInfo noPageListFormulaChild(BsFormulaChildInfo bsFormulaChildInfo) // { // // List list = bsFormulaChildInfoService.list(new LambdaQueryWrapper() // .eq(BsFormulaChildInfo::getProductCode,bsFormulaChildInfo.getProductCode()) // .eq(BsFormulaChildInfo::getProcessesCode,bsFormulaChildInfo.getProcessesCode()) // ); // if (CollUtil.isNotEmpty(list)){ // List collect1 = list.stream().filter(x -> Constants.OK.equals(x.getResults())).collect(Collectors.toList()); // List 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); // } /** * 查询配方配置子信息列表 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:list')") @GetMapping("/list") public TableDataInfo list(BsFormulaChildInfo bsFormulaChildInfo) { startPage(); List list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo); 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(); data = data.replace("[", "").replace("]", "").replace(" ", ""); String[] tightenDataParts = data.split(","); formulaChildInfo.setCollectData("扭矩"+tightenDataParts[0]+"角度"+tightenDataParts[1]+"扭矩结果"+tightenDataParts[2]+"角度结果"+tightenDataParts[3]); } } } return getDataTable(list); } // /** // * 检查是否可以放行 // */ // @GetMapping("/releaseCheck") // public AjaxResult releaseCheck(BsFormulaChildInfo bsFormulaChildInfo) // { // List i = bsFormulaChildInfoService.releaseCheck(bsFormulaChildInfo); // return AjaxResult.success(i.size()); // } /** * 扫码确认 */ @GetMapping("/updateResults") public AjaxResult updateResults(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.updateResults(bsFormulaChildInfo); } /** * 扫码确认 */ @GetMapping("/jrmUpdateResults") public AjaxResult jrmUpdateResults(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.jrmUpdateResults(bsFormulaChildInfo); } /** * 扫码确认 */ @GetMapping("/yzUpdateResults") public AjaxResult yzUpdateResults(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.yzUpdateResults(bsFormulaChildInfo); } /** * 放行请空状态 */ @GetMapping("/workpieceRelease") public AjaxResult workpieceRelease(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.workpieceRelease(bsFormulaChildInfo); } /** * 放行请空状态 */ @GetMapping("/checkMaterialCode") public AjaxResult checkMaterialCode(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.checkMaterialCode(bsFormulaChildInfo); } /** * 放行请空状态 */ @GetMapping("/clearWorkpieceRelease") public AjaxResult clearWorkpieceRelease(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.clearWorkpieceRelease(bsFormulaChildInfo); } /** * 放行请空状态 */ @GetMapping("/jrmWorkpieceRelease") public AjaxResult jrmWorkpieceRelease(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.jrmWorkpieceRelease(bsFormulaChildInfo); } /** * 拧紧后更新对应数据 */ @GetMapping("/updateTighteningFormula") public AjaxResult updateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.updateTighteningFormula(bsFormulaChildInfo); } /** * 拧紧后更新对应数据 */ @GetMapping("/yzUpdateTighteningFormula") public AjaxResult yzUpdateTighteningFormula(BsFormulaChildInfo bsFormulaChildInfo) { return bsFormulaChildInfoService.yzUpdateTighteningFormula(bsFormulaChildInfo); } /** * 导出配方配置子信息列表 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:export')") @Log(title = "配方配置子信息", businessType = BusinessType.EXPORT) @PostMapping("/export") public void export(HttpServletResponse response, BsFormulaChildInfo bsFormulaChildInfo) { List list = bsFormulaChildInfoService.selectBsFormulaChildInfoList(bsFormulaChildInfo); ExcelUtil util = new ExcelUtil(BsFormulaChildInfo.class); util.exportExcel(response, list, "配方配置子信息数据"); } /** * 获取配方配置子信息详细信息 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return success(bsFormulaChildInfoService.selectBsFormulaChildInfoById(id)); } /** * 新增配方配置子信息 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:add')") @Log(title = "配方配置子信息", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BsFormulaChildInfo bsFormulaChildInfo) { return toAjax(bsFormulaChildInfoService.insertBsFormulaChildInfo(bsFormulaChildInfo)); } /** * 修改配方配置子信息 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:edit')") @Log(title = "配方配置子信息", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody BsFormulaChildInfo bsFormulaChildInfo) { return toAjax(bsFormulaChildInfoService.updateBsFormulaChildInfo(bsFormulaChildInfo)); } /** * 删除配方配置子信息 */ @PreAuthorize("@ss.hasPermi('bs:formulaChild:remove')") @Log(title = "配方配置子信息", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(bsFormulaChildInfoService.deleteBsFormulaChildInfoByIds(ids)); } }