Fancy
2024-06-26 fdc18099b0df30e87923271bf8945de0ab2aa13b
pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
@@ -31,6 +31,7 @@
    private PrAssemblyPlanMapper assemblyPlanDao;
//    private PrProductionProcessMapper processDao;
    private PrProductionNodeMapper nodeDao;
    private StaRepairInfoMapper repairInfoDao;
    @Autowired
    public void setDeviceLastDao(StaDeviceLastMapper deviceLastDao) {
        this.deviceLastDao = deviceLastDao;
@@ -59,10 +60,14 @@
    public void setNodeDao(PrProductionNodeMapper nodeDao) {
        this.nodeDao = nodeDao;
    }
    @Autowired
    public void setRepairInfoDao(StaRepairInfoMapper repairInfoDao) {
        this.repairInfoDao = repairInfoDao;
    }
    public int save(QueryVo params) {
        long taskId = Long.parseLong(params.taskId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(taskId);
        long workId = Long.parseLong(params.workId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
        if (workLast == null) {
            throw new RuntimeException("工单不存在");
        }
@@ -88,7 +93,7 @@
            throw new RuntimeException("设备号有且只能有一个");
        }
        StaDeviceLast deviceLast = saveDeviceLast(params, workLast, deviceList);
        StaDeviceLast deviceLast = buildDeviceLast(params, workLast, deviceList.get(0));
        int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
                deviceLastDao.updateByPrimaryKeySelective(deviceLast);
@@ -117,22 +122,22 @@
        deviceLifeDao.insertSelective(life);
    }
    private StaDeviceLast saveDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, List<String> deviceList){
    private StaDeviceLast buildDeviceLast(QueryVo params, StaAssemblyWorkLast workLast, String deviceNo){
        //组装数据
        StaDeviceLast record = new StaDeviceLast();
        StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceList.get(0));
        StaDeviceLast preRecord = deviceLastDao.selectByDeviceNo(deviceNo);
        if(preRecord != null){
            record.id = preRecord.id;
            record.inTime = preRecord.outTime;
        }
        record.outTime = new Date();
        record.setPlanId(workLast.planId);
        record.setClaimId(Long.parseLong(params.taskId));
        record.setStationId(workLast.stationId);
        record.setEquipNo(deviceList.get(0));
        record.setCurrNode(workLast.nodeId);
        record.planId = workLast.planId;
        record.workId = Long.parseLong(params.workId);
        record.stationId = workLast.stationId;
        record.equipNo = deviceNo;
        record.currNode = workLast.nodeId;
//        record.setNextNode(getNextNode(params.status,workLast.nodeId));
        record.updatedBy = workLast.userId;
@@ -170,4 +175,42 @@
            default -> throw new RuntimeException("状态错误");
        };
    }
    public int repair(QueryVo vo) {
        long workId = Long.parseLong(vo.workId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
        if (workLast == null) {
            throw new RuntimeException("工单不存在");
        }
        StaDeviceLast preDeviceRecord = deviceLastDao.selectByDeviceNo(vo.deviceNo);
        StaRepairInfo repairInfo = new StaRepairInfo();
        repairInfo.workId = workId;
        repairInfo.equipNo = vo.deviceNo;
        repairInfo.repairTime = new Date();
        repairInfo.repairBy = workLast.userId;
        repairInfo.repairReason = vo.errorMsg;
        repairInfo.fromNode = preDeviceRecord.currNode;
        repairInfoDao.insertSelective(repairInfo);
        StaDeviceLast deviceLast = new StaDeviceLast();
        BeanUtils.copyProperties(preDeviceRecord, deviceLast);
        deviceLast.repairId = repairInfo.id;
        deviceLast.errorCode = vo.errorMsg;
        deviceLast.assistants = vo.assistants;
        //如果原节点是结束节点或之后的节点,是则更新为完成,否则更新为组装中(默认维修节点的状态只能为 确定或 报废)
        boolean isEndNode = nodeDao.isEndNode(preDeviceRecord.currNode);
        if(QrCodeConstant.MarkWaste.equals(vo.status)){
            deviceLast.status = STATUS_WASTE;
        }else{
            deviceLast.status = isEndNode? STATUS_COMPLETE:STATUS_OK;
        }
        int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
                deviceLastDao.updateByPrimaryKeySelective(deviceLast);
        saveDeviceProductionLog(deviceLast);
        if (isEndNode) {
            saveDeviceLife(deviceLast);
        }
        return count;
    }
}