Fancy
2024-06-26 5ad8d7ffce0bf9c76da40628363f1ca494fa5043
pms-parent/pms-web-station/src/main/java/com/dy/pmsStation/workOrder/WorkOrderSv.java
@@ -1,22 +1,22 @@
package com.dy.pmsStation.workOrder;
import com.alibaba.excel.util.StringUtils;
import com.dy.common.webUtil.BaseResponseUtils;
import com.dy.pmsGlobal.daoBa.BaUserMapper;
import com.dy.pmsGlobal.daoOth.OthFileMapper;
import com.dy.pmsGlobal.daoPlt.PltStationMapper;
import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper;
import com.dy.pmsGlobal.daoPr.PrProductionNodeMapper;
import com.dy.pmsGlobal.daoPr.PrProductionProcessMapper;
import com.dy.pmsGlobal.daoPr.PrWorkingInstructionMapper;
import com.dy.pmsGlobal.daoSta.StaAssemblyWorkHistoryMapper;
import com.dy.pmsGlobal.daoSta.StaAssemblyWorkLastMapper;
import com.dy.pmsGlobal.dyFile.FileOperate;
import com.dy.pmsGlobal.dyFile.FileRestVo;
import com.dy.pmsGlobal.pojoBa.BaUser;
import com.dy.pmsGlobal.pojoOth.OthFile;
import com.dy.pmsGlobal.pojoPlt.PltProductionLine;
import com.dy.pmsGlobal.pojoPlt.PltStation;
import com.dy.pmsGlobal.pojoPr.PrAssemblyPlan;
import com.dy.pmsGlobal.pojoPr.PrProductionNode;
import com.dy.pmsGlobal.pojoPr.PrWorkingInstruction;
import com.dy.pmsGlobal.pojoSta.StaAssemblyWorkHistory;
import com.dy.pmsGlobal.pojoSta.StaAssemblyWorkLast;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
@@ -27,6 +27,7 @@
import java.util.Date;
import java.util.List;
import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors;
@Slf4j
@@ -36,6 +37,7 @@
    private BaUserMapper baUserDao;
    private PltStationMapper pltStationDao;
    private StaAssemblyWorkLastMapper assemblyWorkLastDao;
    private StaAssemblyWorkHistoryMapper assemblyWorkHistoryDao;
    private FileOperate fileOperate;
    private OthFileMapper othFileMapper;
    @Value("${dy.webFile.fmUrl}")
@@ -51,6 +53,10 @@
    @Autowired
    private void setPltStationDao(PltStationMapper pltStationDao){
        this.pltStationDao = pltStationDao;
    }
    @Autowired
    private void setStaAssemblyWorkHistoryDao(StaAssemblyWorkHistoryMapper assemblyWorkHistoryDao){
        this.assemblyWorkHistoryDao = assemblyWorkHistoryDao;
    }
    @Autowired
    private void setStaAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao){
@@ -84,8 +90,8 @@
        }
        return userInfo;
    }
    public PltStation getStationInfo(String id){
        //仅检查工站信息以及工站占用情况
        Long stationId = null;
        if(StringUtils.isBlank(id)){
            throw new RuntimeException("工站编码不能为空");
@@ -104,7 +110,30 @@
        }
        return stationInfo;
    }
    public StaAssemblyWorkLast checkStationUsed(QueryVo last){
    public StaAssemblyWorkLast checkStationUsed(String id){
        StaAssemblyWorkLast result = new StaAssemblyWorkLast();
        PltStation stationInfo = null;
        if(StringUtils.isBlank(id)){
            throw new RuntimeException("工站编码不能为空,请检查");
        }
        stationInfo = getStationInfo(id);
        //检查表中stationId是否已经存在
        StaAssemblyWorkLast param = new StaAssemblyWorkLast();
        param.setStationId(stationInfo.getId());
        param.setStatus(1);
        List<StaAssemblyWorkLast> workLasts = assemblyWorkLastDao.selectList(param);
        if(workLasts.size() > 0){
            BeanUtils.copyProperties(workLasts.get(0),result);
        }else{
            result.setStationId(stationInfo.getId());
            result.setStationName(stationInfo.getName());
            result.setLineId(stationInfo.getLineId());
            result.setLineName(stationInfo.getLineName());
        }
        return result;
    }
    public StaAssemblyWorkLast checkUserAndStationUsed(QueryVo last){
        StaAssemblyWorkLast result = new StaAssemblyWorkLast();
        PltStation stationInfo = null;
        BaUser userInfo = null;
@@ -143,6 +172,8 @@
                BeanUtils.copyProperties(userStationList.get(0),result);
            }
        }else{
            result.setUserId(userInfo.getId());
            result.setUserName(userInfo.getName());
            result.setStationId(stationInfo.getId());
            result.setStationName(stationInfo.getName());
            result.setLineId(stationInfo.getLineId());
@@ -150,18 +181,21 @@
        return result;
    }
    @Transactional
    public int save(QueryVo last) {
    public StaAssemblyWorkLast save(QueryVo last) {
        //先check
        StaAssemblyWorkLast checkResult = checkStationUsed(last);
        StaAssemblyWorkLast checkResult = checkUserAndStationUsed(last);
        //校验planId processId nodeId
        PrAssemblyPlan params = new PrAssemblyPlan();
        params.setStatus(1);
        params.setId(last.getPlanId());
        params.setProcessId(last.getProcessId());
        List<PrAssemblyPlan> planList = selectAssyPlanList(params);
        planList.stream().forEach(process -> {
            process.nodes.stream().filter(node -> node.id == last.getNodeId());
        });
        boolean hasNodeId= planList.stream()
                .flatMap(process -> process.nodes.stream())
                .anyMatch(node -> node.id.equals(last.getNodeId()));
        if(!hasNodeId){
            throw new RuntimeException("节点信息有误或被其他人员修改,请重新选择节点信息");
        }
        last.setLineId(checkResult.getLineId());
        StaAssemblyWorkLast staLast = new StaAssemblyWorkLast();
        BeanUtils.copyProperties(last,staLast);
@@ -176,6 +210,7 @@
            staLast.setStartTime(new Date());
            count = assemblyWorkLastDao.insertSelective(staLast);
        }else{
            //保存一条history?
            BeanUtils.copyProperties(checkResult,staLast);
            staLast.setPlanId(last.getPlanId());
            staLast.setProcessId(last.getProcessId());
@@ -184,6 +219,29 @@
            staLast.setStartTime(new Date());
            count = assemblyWorkLastDao.updateByPrimaryKeySelective(staLast);
        }
        if (count <= 0) {
            throw new RuntimeException("数据库存储失败");
        }
        StaAssemblyWorkLast result = assemblyWorkLastDao.selectByPrimaryKey(staLast.getId());
        return result;
    }
    @Transactional
    public int logout(String id) {
        //找到登录记录
        StaAssemblyWorkLast workLast = assemblyWorkLastDao.selectByPrimaryKey(Long.parseLong(id));
        if(workLast == null){
            throw new RuntimeException("系统中没有该条登录信息");
        }
        //更新登录记录
        workLast.setStatus(2);
        workLast.setEndTime(new Date());
        // 保存history
        StaAssemblyWorkHistory history = new StaAssemblyWorkHistory();
        BeanUtils.copyProperties(workLast,history);
        history.setId(null);
        int count = assemblyWorkHistoryDao.insertSelective(history);
        //删除last
        assemblyWorkLastDao.deleteByPrimaryKey(Long.parseLong(id));
        return count;
    }
    public List<PrAssemblyPlan> selectAssyPlanList(PrAssemblyPlan params){
@@ -210,5 +268,4 @@
        ins.orgName = file.orgName;
        ins.extName = file.extName;
    }
}