Fancy
2024-07-30 54b274998a6e839227a86a3f39ff2a9f69f32fcc
pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
@@ -36,6 +36,7 @@
    private static final String WORK_TYPE_TEST = "2";
    private static final String WORK_TYPE_INSPECTION = "3";
    private static final String WORK_TYPE_REPAIR = "4";
    private static final String WORK_TYPE_OTHER = "5";
    private StaDeviceLastMapper deviceLastDao;
    private StaDeviceLifeMapper deviceLifeDao;
@@ -237,6 +238,7 @@
        Boolean isEnd = false;//是否经历过结束节点
        PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId);
        //
        record.nodeContent = node.content;
        if (node.isRecord) {
            record.deviceCycleContent = node.deviceCycleContent;
@@ -281,6 +283,7 @@
        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("状态错误");
@@ -304,14 +307,14 @@
            //测试
        }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("状态错误");
            };
@@ -325,6 +328,7 @@
        }
        throw new RuntimeException("状态错误,无效的节点类型: " + workType);
    }
    @Transactional
    public int repair(QueryVo vo) {
        long workId = Long.parseLong(vo.workId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
@@ -353,6 +357,7 @@
        return count;
    }
    @Transactional
    public int testing(QueryVo vo) {
        long workId = Long.parseLong(vo.workId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
@@ -370,6 +375,49 @@
        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 otherWork(QueryVo vo) {
        long workId = Long.parseLong(vo.workId);
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(workId);
        if (workLast == null) {
            throw new RuntimeException("系统中没有该条登录信息");
        }
        //保存工作记录
        StaDeviceProductionLog log = new StaDeviceProductionLog();
        log.setId(null); // 设备生产日志ID设为null,表示新增
        log.setDeviceNo("");  //RepairId  planId  currNode deviceCycleContent  memo
        log.setWorkId(workId);
        log.setStationId(workLast.getStationId());
        log.setNodeContent(vo.getContent());
        log.setStatus(DeviceStatus.COMPLETED.getCode());//完成状态
        log.setResult(DeviceResult.PASS.getCode());//通过
        log.setErrorMsg(vo.getErrorMsg());
        log.setAssistants(workLast.getAssistants());
        log.setInTime(new Date());
        log.setOutTime(new Date());
        log.setUpdatedBy(workLast.getUserId());
        log.setNumber(vo.getNumber());
        int count = deviceProductionLogDao.insertSelective(log);
        return count;
    }
    //根据节点查出节点作业指导书
    public PrProductionNode getSopByNodeId(String nodeId) {
        if (com.alibaba.excel.util.StringUtils.isBlank(nodeId)) {
@@ -525,4 +573,6 @@
    public List<StaDeviceProductionLog> queryLogByDeviceNo(String devoiceNo) {
        return deviceProductionLogDao.selectByDeviceNo(devoiceNo);
    }
}