Fancy
2024-11-01 4a35dea2b0976e7fdb0e2b1a0d7d9b8ac2af0fe4
pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/assemblyStep/AssemblyStepSv.java
@@ -7,18 +7,23 @@
import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper;
import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper;
import com.dy.pmsGlobal.daoSta.*;
import com.dy.pmsGlobal.daoTst.TstCommandMapper;
import com.dy.pmsGlobal.dyFile.FileOperate;
import com.dy.pmsGlobal.dyFile.FileRestVo;
import com.dy.pmsGlobal.pojoOth.OthFile;
import com.dy.pmsGlobal.pojoPlt.*;
import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan;
import com.dy.pmsGlobal.pojoPr.PrBillOfMaterial;
import com.dy.pmsGlobal.pojoPr.PrProductionNode;
import com.dy.pmsGlobal.pojoPr.PrWorkingInstruction;
import com.dy.pmsGlobal.pojoSta.*;
import com.dy.pmsGlobal.pojoTst.TstCommand;
import com.dy.pmsGlobal.util.DeviceResult;
import com.dy.pmsGlobal.util.DeviceStatus;
import com.dy.pmsGlobal.util.QrCodeConstant;
import com.dy.pmsGlobal.util.UserUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.common.utils.PojoUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
@@ -50,6 +55,7 @@
    private StaRepairInfoMapper repairInfoDao;
    private PltProductQualityInspectionItemsMapper qualityItemsDao;
    private PltProductTestInspectionItemsMapper testItemsDao;
    private TstCommandMapper tstCommandDao;
    private PltProductMapper productDao;
    private PltProParamsMapper paramsDao;
    private PltProductFileMapper productFileDao;
@@ -136,6 +142,11 @@
    @Autowired
    public void setDeviceLifeLastDao(StaDeviceLifeLastMapper deviceLifeLastDao) {
        this.deviceLifeLastDao = deviceLifeLastDao;
    }
    @Autowired
    public void setTstCommandDao(TstCommandMapper tstCommandDao) {
        this.tstCommandDao = tstCommandDao;
    }
    @Transactional
@@ -240,9 +251,15 @@
            if (record.outLineTime != null) {
                isEnd = true;
            }
            if(StringUtils.isNotBlank(params.getContent())){
                record.nodeContent = params.getContent();
            }
        } else {
            PrProductionNode node = nodeDao.selectByPrimaryKey(workLast.nodeId);
            record.nodeContent = node.content;
            PrProductionNode nextNode = nodeDao.selectNodeBySort(node.getProcessId() , (node.getSort() + 1));
            record.nextNodeContent = nextNode.content;
            record.nextNode = nextNode.id;
            if (node.isRecord) {
                record.deviceCycleContent = node.deviceCycleContent;
            }
@@ -284,7 +301,7 @@
     */
    private Integer getStatus(String status, boolean isEnd, String workType) {
        //组装   2024/07/17 目前组装workType 1 只有MarkOk     //测试    //品检
        if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)) {
        if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_TEST.equals(workType) || WORK_TYPE_INSPECTION.equals(workType) || WORK_TYPE_REPAIR.equals(workType)|| WORK_TYPE_OTHER.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();
@@ -304,8 +321,8 @@
     * @return 结果
     */
    private Integer getResult(String status, String workType) {
        //组装
        if (WORK_TYPE_ASSEMBLY.equals(workType)) {
        //组装  临时任务-其他
        if (WORK_TYPE_ASSEMBLY.equals(workType) || WORK_TYPE_OTHER.equals(workType)) {
            return switch (status) {
                case QrCodeConstant.MarkOk -> DeviceResult.PASS.getCode();
                default -> throw new RuntimeException("状态错误");
@@ -349,19 +366,19 @@
        repairInfo.repairTime = new Date();
        repairInfo.repairBy = workLast.userId;
        repairInfo.repairReason = vo.errorMsg;
        repairInfo.fromNode = preDeviceRecord.currNode;
        if (preDeviceRecord != null) {
            repairInfo.fromNode = preDeviceRecord.currNode;
        }
        repairInfoDao.insertSelective(repairInfo);
        StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]);
        deviceLast.setRepairId(repairInfo.getId());
        int count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
                deviceLastDao.updateByPrimaryKey(deviceLast);
        saveDeviceProductionLog(deviceLast);
        if(preDeviceRecord.currNode != null){
            boolean isEndNode = nodeDao.isEndNode(preDeviceRecord.currNode);
            if (isEndNode) {
                saveDeviceLife(deviceLast);
            }
        //只要经历过结束节点,就一直记录device life
        if (preDeviceRecord != null && preDeviceRecord.getOutLineTime() != null) {
            saveDeviceLife(deviceLast);
        }
        return count;
    }
@@ -410,22 +427,31 @@
        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);
        int count = 0;
        //保存工作记录 //如果有设备码
        if(vo.deviceNo != null && StringUtils.isNotBlank(vo.deviceNo[0])){
            StaDeviceLast deviceLast = buildDeviceLast(vo, workLast, vo.deviceNo[0]);
            count = deviceLast.id == null ? deviceLastDao.insertSelective(deviceLast) :
                    deviceLastDao.updateByPrimaryKey(deviceLast);
            saveDeviceProductionLog(deviceLast);
        }else{
            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());
            count = deviceProductionLogDao.insertSelective(log);
        }
        return count;
    }
@@ -440,6 +466,9 @@
        }
        if (node.instruction != null) {
            addUrl(node.instruction);
        }
        if (node.bill != null) {
            addBillUrl(node.bill);
        }
        return node;
    }
@@ -465,7 +494,7 @@
                return;
            }
            FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash);
            doc.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + doc.fileId;
            doc.webUrl = fileRestVo.fileWebDownloadPath + doc.fileId;
            doc.orgName = file.orgName;
            doc.extName = file.extName;
        });
@@ -507,32 +536,32 @@
            return;
        }
        FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash);
        ins.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + ins.fileId;
        ins.webUrl = fileRestVo.fileWebDownloadPath + ins.fileId;
        ins.orgName = file.orgName;
        ins.extName = file.extName;
    }
    private PltProduct addWebUrl(PltProduct pro) {
        if (pro != null) {
            if (pro.image != null) {
                String filePathWithWebUrl = getFilePathWithWebUrl(pro.image);
                pro.imageWebPath = filePathWithWebUrl;
                pro.imageWebPathZip = fileOperate.getImgFileZipPath(filePathWithWebUrl);
            }
            pro.proFiles.stream().forEach(doc -> {
                OthFile file = othFileMapper.selectByPrimaryKey(doc.fileId);
                if (file == null) {
                    return;
                }
                FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash);
                doc.webUrl = fileRestVo.fileSysRestUrl + fileRestVo.fileWebDownloadPath + doc.fileId;
                doc.orgName = file.orgName;
                doc.extName = file.extName;
            });
        }
        return pro;
    }
//    private PltProduct addWebUrl(PltProduct pro) {
//        if (pro != null) {
//            if (pro.image != null) {
//                String filePathWithWebUrl = getFilePathWithWebUrl(pro.image);
//                pro.imageWebPath = filePathWithWebUrl;
//                pro.imageWebPathZip = fileOperate.getImgFileZipPath(filePathWithWebUrl);
//            }
//
//            pro.proFiles.stream().forEach(doc -> {
//                OthFile file = othFileMapper.selectByPrimaryKey(doc.fileId);
//                if (file == null) {
//                    return;
//                }
//                FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash);
//                doc.webUrl = fileRestVo.fileWebDownloadPath + doc.fileId;
//                doc.orgName = file.orgName;
//                doc.extName = file.extName;
//            });
//        }
//        return pro;
//    }
    private String getFilePathWithWebUrl(Long fileId) {
        OthFile file = othFileMapper.selectByPrimaryKey(fileId);
@@ -589,5 +618,27 @@
        return deviceProductionLogDao.selectByDeviceNo(devoiceNo);
    }
    private void addBillUrl(PrBillOfMaterial bill) {
        if (bill == null || bill.fileId == null) {
            return;
        }
        OthFile file = othFileMapper.selectByPrimaryKey(bill.fileId);
        if (file == null) {
            return;
        }
        FileRestVo fileRestVo = fileOperate.parseHashcode(fmUrl, file.hash);
        bill.webUrl = fileRestVo.fileWebDownloadPath + bill.fileId;
        bill.orgName = file.orgName;
        bill.extName = file.extName;
    }
    public List<TstCommand> getCommand(String proId, int type) {
        Map<String, Object> params = new HashMap<>();
        params.put("proId", proId);
        params.put("type", type);
        return tstCommandDao.selectSome(params);
    }
    public List<PltProduct> selectAll(QueryVo queryVo) {
        Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(queryVo);
        return productDao.selectAll(params);
    }
}