| | |
| | | private StaDeviceLast buildDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, String deviceNo) { |
| | | //组装数据 |
| | | StaDeviceLast record = new StaDeviceLast(); |
| | | //pr_assembly_plan input_number +1 投入数加1 |
| | | PrAssemblyPlan assemblyPlan = assemblyPlanDao.selectByPrimaryKey(workLast.planId); |
| | | //pr_assembly_plan input_number +1 投入数加1 根据deviceNo 找到对应任务 |
| | | PrAssemblyPlan assemblyPlan = queryPlanByDeviceNo(deviceNo); //PrAssemblyPlan assemblyPlan = assemblyPlanDao.selectByPrimaryKey(workLast.planId); |
| | | StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceNo); |
| | | if (preRecord != null) { |
| | | record.id = preRecord.id; |
| | |
| | | if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> isEnd ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); |
| | | case QrCodeConstant.MarkQualified -> isEnd ? DeviceStatus.COMPLETED.getCode() : DeviceStatus.ASSEMBLING.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceStatus.REPAIR.getCode(); |
| | | case QrCodeConstant.MarkWaste -> DeviceStatus.WASTE.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | |
| | | //测试 |
| | | }else if (WORK_TYPE_TEST.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.TEST_PASS.getCode(); |
| | | case QrCodeConstant.MarkQualified -> DeviceResult.TEST_PASS.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceResult.TEST_FAIL.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | | //品检 |
| | | }else if (WORK_TYPE_INSPECTION.equals(workType)) { |
| | | return switch (status) { |
| | | case QrCodeConstant.MarkOk -> DeviceResult.INSPECTION_PASS.getCode(); |
| | | case QrCodeConstant.MarkQualified -> DeviceResult.INSPECTION_PASS.getCode(); |
| | | case QrCodeConstant.MarkUnqualified -> DeviceResult.INSPECTION_FAIL.getCode(); |
| | | default -> throw new RuntimeException("状态错误"); |
| | | }; |
| | |
| | | } |
| | | throw new RuntimeException("状态错误,无效的节点类型: " + workType); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Transactional |
| | | public int repair(QueryVo vo) { |
| | | long workId = Long.parseLong(vo.workId); |
| | | StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); |
| | |
| | | return count; |
| | | } |
| | | |
| | | @Transactional |
| | | public int testing(QueryVo vo) { |
| | | long workId = Long.parseLong(vo.workId); |
| | | StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); |
| | |
| | | return count; |
| | | } |
| | | |
| | | @Transactional |
| | | public int inspectQuality(QueryVo vo) { |
| | | long workId = Long.parseLong(vo.workId); |
| | | StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); |
| | | if (workLast == null) { |
| | | throw new RuntimeException("系统中没有该条登录信息"); |
| | | } |
| | | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); |
| | | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : |
| | | deviceLastDao.updateByPrimaryKeySelective(deviceLast); |
| | | saveDeviceProductionLog(deviceLast); |
| | | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); |
| | | if (node.isRecord) { |
| | | saveDeviceLife(deviceLast); |
| | | } |
| | | return count; |
| | | } |
| | | //无任务计划中的其他 传workId ,手写工作内容 , 数量 |
| | | @Transactional |
| | | public int other(QueryVo vo) { |
| | | long workId = Long.parseLong(vo.workId); |
| | | StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId); |
| | | if (workLast == null) { |
| | | throw new RuntimeException("系统中没有该条登录信息"); |
| | | } |
| | | StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]); |
| | | int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) : |
| | | deviceLastDao.updateByPrimaryKeySelective(deviceLast); |
| | | saveDeviceProductionLog(deviceLast); |
| | | PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId); |
| | | if (node.isRecord) { |
| | | saveDeviceLife(deviceLast); |
| | | } |
| | | return count; |
| | | } |
| | | //根据节点查出节点作业指导书 |
| | | public PrProductionNode getSopByNodeId(String nodeId) { |
| | | if (com.alibaba.excel.util.StringUtils.isBlank(nodeId)) { |
| | |
| | | map.put("proName", ""); |
| | | map.put("proType", ""); |
| | | map.put("proId", ""); |
| | | map.put("proCode", ""); |
| | | //判断是不是是本厂物料 |
| | | if(CollectionUtils.isEmpty(productList)){ |
| | | productList = productDao.selectAll(null); |
| | |
| | | map.put("proType", product.getType()); |
| | | BigInteger proId = BigInteger.valueOf(product.getId()); |
| | | map.put("proId", proId.toString()); |
| | | map.put("proCode",product.getCode()); |
| | | } |
| | | return map; |
| | | } |
| | | |
| | | //查询产品所在的任务 |
| | | public PrAssemblyPlan queryPlanByDeviceNo(String deviceNo) { |
| | | String proCode = ""; |
| | | String lotCode = ""; |
| | | if (StringUtils.isNotEmpty(deviceNo) && deviceNo.length() == 22) { |
| | | proCode = deviceNo.substring(3,6); |
| | | lotCode = deviceNo.substring(6,15); |
| | | } |
| | | PrAssemblyPlan plan = assemblyPlanDao.selectByDeviceNo(proCode,lotCode); |
| | | if(plan != null){ |
| | | plan.setBatchNo(lotCode); |
| | | } |
| | | return plan; |
| | | } |
| | | public List<StaDeviceLife> queryLifeByDeviceNo(String deviceNo) { |
| | | return deviceLifeDao.selectByDeviceNo(deviceNo); |
| | | } |
| | |
| | | public List<StaDeviceProductionLog> queryLogByDeviceNo(String devoiceNo) { |
| | | return deviceProductionLogDao.selectByDeviceNo(devoiceNo); |
| | | } |
| | | |
| | | |
| | | } |