SnPartDetailServiceImpl.java 3.93 KB
package com.huaheng.pc.config.sn.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.huaheng.common.utils.security.ShiroUtils;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.address.service.AddressService;
import com.huaheng.pc.config.sn.domain.PartDomain;
import com.huaheng.pc.config.sn.domain.Sn;
import com.huaheng.pc.config.sn.domain.SnPartDetail;
import com.huaheng.pc.config.sn.domain.SnPartDomain;
import com.huaheng.pc.config.sn.mapper.SnPartDetailMapper;
import org.aspectj.weaver.loadtime.Aj;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;


@Service
public class SnPartDetailServiceImpl extends ServiceImpl<SnPartDetailMapper, SnPartDetail> implements SnPartDetailService {

    @Resource
    private SnService snService;

    public List<SnPartDetail> getSnPartByCode(String sn){
        LambdaQueryWrapper<SnPartDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(SnPartDetail::getSnCode, sn);
        List<SnPartDetail> m = this.list(lambdaQueryWrapper);
        return m;
    }
    public SnPartDetail getSnPart(String part,String sn){
        LambdaQueryWrapper<SnPartDetail> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(SnPartDetail::getSnCode, sn);
        lambdaQueryWrapper.eq(SnPartDetail::getPart, part);
        lambdaQueryWrapper.last("limit 1");
        SnPartDetail m = this.getOne(lambdaQueryWrapper);
        return m;
    }

    /**
     * sn绑定部件
     * @param snPartDomain
     * @return
     */
    @Transactional
    public AjaxResult bindSnPart(SnPartDomain snPartDomain){
        Sn sn=snService.getSn(snPartDomain.getSnCode());
        if(sn==null){
            sn=new Sn();
            sn.setSyncIot(0);
            sn.setCode(snPartDomain.getSnCode());
            sn.setCreatedBy(ShiroUtils.getLoginName());
            sn.setLastUpdatedBy(ShiroUtils.getLoginName());
            snService.save(sn);
        }else{
            Sn sn1=new Sn();
            sn1.setId(sn.getId());
            sn1.setSyncIot(0);
            snService.updateById(sn1);

        }
        List<SnPartDetail> details=new ArrayList<>();
        for (PartDomain snPart : snPartDomain.getPartList()) {
            SnPartDetail snPartDetail = this.getSnPart(snPart.getPart(),snPartDomain.getSnCode());
            if (snPartDetail!=null){
                continue;
            }
            snPartDetail = new SnPartDetail();
            snPartDetail.setSnId(sn.getId().toString());
            snPartDetail.setSnCode(snPartDomain.getSnCode());
            snPartDetail.setPart(snPart.getPart());
            snPartDetail.setCreatedBy(ShiroUtils.getLoginName());
            snPartDetail.setLastUpdatedBy(ShiroUtils.getLoginName());
            details.add(snPartDetail);
        }
        if(details.size()>0){
            this.saveBatch(details);
        }
        return AjaxResult.success("操作绑定SN成功");
    }
    /**
     * sn解绑部件
     * @param snPartDomain
     * @return
     */
    @Transactional
    public AjaxResult unbindSnPart(SnPartDomain snPartDomain){
        Sn sn=snService.getSn(snPartDomain.getSnCode());
        if(sn==null){
            return AjaxResult.error("sn解绑部件失败:sn不存在");
        }
        List<Integer> details=new ArrayList<>();
        for (PartDomain snPart : snPartDomain.getPartList()) {
            SnPartDetail snPartDetail = this.getSnPart(snPart.getPart(),snPartDomain.getSnCode());
            if (snPartDetail==null){
                continue;
            }
            details.add(snPartDetail.getId());
        }
        if(details.size()>0){
            this.removeByIds(details);
        }
        return AjaxResult.success("操作解绑SN成功");
    }

}