车间能级提升-智能设备管理系统
zhuguifei
5 天以前 453f63fd6cd6466222304df619e62b3a5667ca68
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsMaintStServiceImpl.java
@@ -4,6 +4,7 @@
import lombok.SneakyThrows;
import org.dromara.common.core.constant.DictConstants;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -12,10 +13,12 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.eims.domain.EimsEqu;
import org.dromara.eims.domain.EimsMaintOrder;
import org.dromara.eims.domain.EimsMaintSt;
import org.dromara.eims.domain.bo.EimsMaintStBo;
import org.dromara.eims.domain.bo.EimsMultipleMaintStBo;
import org.dromara.eims.domain.vo.EimsMaintOrderVo;
import org.dromara.eims.domain.vo.EimsMaintStVo;
import org.dromara.eims.mapper.EimsEquMapper;
@@ -57,7 +60,37 @@
     */
    @Override
    public EimsMaintStVo queryById(Long id) {
        return baseMapper.selectVoById(id);
        EimsMaintStVo stVo = baseMapper.selectVoById(id);
        if(stVo!=null){
            fillStDataSingle(stVo);
        }
        return stVo;
    }
    private void fillStDataSingle(EimsMaintStVo stVo) {
            //1.填充设备
            EimsEqu eimsEqu = equMapper.selectById(stVo.getEquId());
            stVo.setAssetNo(eimsEqu.getAssetNo());
            //2.统计数据
            LambdaQueryWrapper<EimsMaintOrder> orderLqw = Wrappers.lambdaQuery();
            orderLqw.eq(EimsMaintOrder::getEquId, stVo.getEquId());
            LocalDate planTime = stVo.getPlanTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            LocalDate startOfMonth = planTime.with(TemporalAdjusters.firstDayOfMonth());
            LocalDate endOfMonth = planTime.with(TemporalAdjusters.lastDayOfMonth());
            orderLqw.between(EimsMaintOrder::getPlanTime, startOfMonth, endOfMonth);
            // 执行查询
            List<EimsMaintOrderVo> orderList = orderMapper.selectVoList(orderLqw);
            // TODO 根据字典maint_order_status
            Map<String, Long> cMap = orderList.stream()
                .filter(order -> List.of("0", "1", "2").contains(order.getStatus()))
                .collect(Collectors.groupingBy(EimsMaintOrderVo::getStatus, Collectors.counting()));
            stVo.setOrderCount(orderList.size());
            stVo.setDbyCount(cMap.getOrDefault("0", 0L).intValue());
            stVo.setDyzCount(cMap.getOrDefault("1", 0L).intValue());
            stVo.setWcCount(cMap.getOrDefault("2", 0L).intValue());
    }
    /**
@@ -93,13 +126,12 @@
            List<EimsMaintOrderVo> orderList = orderMapper.selectVoList(orderLqw);
            // TODO 根据字典maint_order_status
            Map<String, Long> cMap = orderList.stream()
                .filter(order -> List.of("0", "1", "2", "3").contains(order.getStatus()))
                .filter(order -> List.of("0", "1", "2").contains(order.getStatus()))
                .collect(Collectors.groupingBy(EimsMaintOrderVo::getStatus, Collectors.counting()));
            stVo.setOrderCount(orderList.size());
            stVo.setDbyCount(cMap.getOrDefault("0", 0L).intValue());
            stVo.setByCount(cMap.getOrDefault("1", 0L).intValue());
            stVo.setDyzCount(cMap.getOrDefault("2", 0L).intValue());
            stVo.setWcCount(cMap.getOrDefault("3", 0L).intValue());
            stVo.setDyzCount(cMap.getOrDefault("1", 0L).intValue());
            stVo.setWcCount(cMap.getOrDefault("2", 0L).intValue());
        }
@@ -136,6 +168,12 @@
        qw.like(StringUtils.isNotBlank(bo.getAssetNo()), "equ.asset_no", bo.getAssetNo());
        qw.between(params.get("beginPlanTime") != null && params.get("endPlanTime") != null,
            "st.plan_time", params.get("beginPlanTime"), params.get("endPlanTime"));
        if (params.get("searchValue") != null && StringUtils.isNotBlank(params.get("searchValue").toString())) {
            qw.and( wq ->wq.like("st.title", params.get("searchValue"))
                .or().like("equ.equ_name", params.get("searchValue"))
                .or().like("equ.asset_no", params.get("searchValue"))
            );
        }
        qw.eq(bo.getMaintUser() != null, "st.maint_user", bo.getMaintUser());
        qw.eq(bo.getVerifyUser() != null, "st.verify_user", bo.getVerifyUser());
        qw.eq(bo.getStatus() != null, "st.status", bo.getStatus());
@@ -167,22 +205,78 @@
     * @return 是否修改成功
     */
    @Override
    @Transactional
    public Boolean updateByBo(EimsMaintStBo bo) {
        EimsMaintSt update = MapstructUtils.convert(bo, EimsMaintSt.class);
        if(bo.getVerifyUser()!=null){
            EimsMaintSt eimsMaintSt = baseMapper.selectById(bo.getId());
            String status = eimsMaintSt.getStatus();
            if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
                if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
                if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
            }
        }
//        if(bo.getVerifyUser()!=null){
//            EimsMaintSt eimsMaintSt = baseMapper.selectById(bo.getId());
//            String status = eimsMaintSt.getStatus();
//            if(status==null  || status.equals(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.N)){
//                if(update.getVerifyTime()==null) update.setStatus(DictConstants.MAINT_ORDER_ST_STATUS_DETAIL.Y);
//                if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
//            }
//        }
        if(update.getVerifyTime()==null) update.setVerifyTime(new Date());
        //工单汇总完成需同步更新st下子工单
            EimsMaintStVo st = baseMapper.selectVoById(bo.getId());
            Long equId =  st.getEquId();
            LambdaQueryWrapper<EimsMaintOrder> wrapper = Wrappers.lambdaQuery();
            wrapper.eq(EimsMaintOrder::getEquId,equId);
            wrapper.eq(EimsMaintOrder::getPlanTime,st.getPlanTime());
            List<EimsMaintOrder> eimsMaintOrderList = orderMapper.selectList(wrapper);
            // st下子工单所有状态设置为3-已完成
            eimsMaintOrderList.forEach(order -> {
                order.setStatus(bo.getStatus());
                if(order.getStatus().equals("1")){
                    order.setMaintUser(LoginHelper.getUserId());
                }else if(order.getStatus().equals("2")){
                    order.setVerifyUser(LoginHelper.getUserId());
                }
            });
            orderMapper.updateBatchById(eimsMaintOrderList);
        validEntityBeforeSave(update);
        return baseMapper.updateById(update) > 0;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Boolean updateBatchByBo(EimsMultipleMaintStBo bo) {
        List<EimsMaintStBo> maintStBoList = bo.getMultipleMaintStBoList();
        if(maintStBoList==null || maintStBoList.isEmpty())return  true;
        List<EimsMaintSt> maintStList = MapstructUtils.convert(maintStBoList, EimsMaintSt.class);
        baseMapper.updateBatchById(maintStList);
        // 更新汇总下子工单
        List<String> maintCodeList = maintStBoList.stream()
            .map(EimsMaintStBo::getMaintCode)
            .toList();
        for (int i = 0; i < maintCodeList.size(); i++) {
            String maintCode = maintCodeList.get(i);
            String[] split = maintCode.split("_");
            LambdaQueryWrapper<EimsMaintOrder> wrapper = Wrappers.lambdaQuery();
            wrapper.eq(EimsMaintOrder::getEquId,split[0]);
            wrapper.eq(EimsMaintOrder::getPlanTime,split[1]);
            List<EimsMaintOrder> eimsMaintOrderList = orderMapper.selectList(wrapper);
            // st下子工单所有状态设置为3-已完成
            eimsMaintOrderList.forEach(order -> {
                order.setStatus("2");
                order.setVerifyUser(LoginHelper.getUserId());
            });
            orderMapper.updateBatchById(eimsMaintOrderList);
        }
        return true;
    }
    /**
     * 保存前的数据校验
     */