package doumeemes.service.business.impl; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 
 | 
import com.baomidou.mybatisplus.core.metadata.IPage; 
 | 
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 
 | 
import doumeemes.core.model.ApiResponse; 
 | 
import doumeemes.core.model.LoginUserInfo; 
 | 
import doumeemes.core.model.PageData; 
 | 
import doumeemes.core.model.PageWrap; 
 | 
import doumeemes.core.utils.Constants; 
 | 
import doumeemes.core.utils.DateUtil; 
 | 
import doumeemes.core.utils.Utils; 
 | 
import doumeemes.dao.business.WorkorderCheckMapper; 
 | 
import doumeemes.dao.business.model.Appliances; 
 | 
import doumeemes.dao.business.model.Workorder; 
 | 
import doumeemes.dao.business.model.WorkorderCheck; 
 | 
import doumeemes.dao.business.model.WorkorderHistory; 
 | 
import doumeemes.dao.ext.WorkorderCheckExtMapper; 
 | 
import doumeemes.dao.ext.WorkorderExtMapper; 
 | 
import doumeemes.dao.ext.WorkorderHistoryExtMapper; 
 | 
import doumeemes.dao.ext.dto.QueryWorkorderCheckExtDTO; 
 | 
import doumeemes.dao.ext.vo.WorkorderCheckExtListVO; 
 | 
import doumeemes.dao.system.model.SystemDictData; 
 | 
import doumeemes.service.business.WorkorderCheckService; 
 | 
import doumeemes.service.ext.WorkorderCheckExtService; 
 | 
import doumeemes.service.ext.impl.WorkorderExtServiceImpl; 
 | 
import doumeemes.service.system.impl.SystemDictDataServiceImpl; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.apache.shiro.SecurityUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.transaction.annotation.Transactional; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 工单类-检验信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2022/04/20 09:37 
 | 
 */ 
 | 
@Service 
 | 
public class WorkorderCheckServiceImpl implements WorkorderCheckService { 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderExtMapper workorderExtMapper; 
 | 
    @Autowired 
 | 
    private WorkorderHistoryExtMapper workorderHistoryExtMapper; 
 | 
    @Autowired 
 | 
    private WorkorderCheckMapper workorderCheckMapper; 
 | 
    @Autowired 
 | 
    private WorkorderCheckExtService workorderCheckExtService; 
 | 
    @Autowired 
 | 
    private AppliancesServiceImpl appliancesServiceImpl; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataServiceImpl systemDictDataServiceimpl; 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderCheckExtMapper workorderCheckExtMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(WorkorderCheck workorderCheck) { 
 | 
        workorderCheckMapper.insert(workorderCheck); 
 | 
        return workorderCheck.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public ApiResponse deleteById(Integer id) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        QueryWorkorderCheckExtDTO qwc=new QueryWorkorderCheckExtDTO(); 
 | 
        qwc.setId(id); 
 | 
        qwc.setCreateUser(user.getId()); 
 | 
        List<WorkorderCheckExtListVO> result = workorderCheckExtMapper.selectListNew(qwc); 
 | 
        if(result!=null&&result.size()>0){ 
 | 
            WorkorderCheckExtListVO wca=result.get(0); 
 | 
  
 | 
            if(wca!=null&&(Constants.equalsInteger(Constants.WORKORDER_STATUS.done,wca.getWorkorderstatus())||Constants.equalsInteger(Constants.WORKORDER_STATUS.baogong,wca.getWorkorderstatus()))){ 
 | 
                return ApiResponse.failed("工单已完工/已报工状态下不允许删除!"); 
 | 
            }else{ 
 | 
                WorkorderCheck find=workorderCheckMapper.selectById(wca.getId()); 
 | 
                find.setDeleted(Constants.ONE); 
 | 
                workorderCheckMapper.updateById(find); 
 | 
               return  ApiResponse.success(null); 
 | 
            } 
 | 
  
 | 
        }else{ 
 | 
           return ApiResponse.failed("只能删除自己创建的检验记录!"); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(WorkorderCheck workorderCheck) { 
 | 
        UpdateWrapper<WorkorderCheck> deleteWrapper = new UpdateWrapper<>(workorderCheck); 
 | 
        workorderCheckMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        workorderCheckMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(WorkorderCheck workorderCheck) { 
 | 
        workorderCheckMapper.updateById(workorderCheck); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<WorkorderCheck> workorderChecks) { 
 | 
        if (CollectionUtils.isEmpty(workorderChecks)) { 
 | 
            return; 
 | 
        } 
 | 
        for (WorkorderCheck workorderCheck: workorderChecks) { 
 | 
            this.updateById(workorderCheck); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public WorkorderCheck findById(Integer id) { 
 | 
        return workorderCheckMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public WorkorderCheck findOne(WorkorderCheck workorderCheck) { 
 | 
        QueryWrapper<WorkorderCheck> wrapper = new QueryWrapper<>(workorderCheck); 
 | 
        return workorderCheckMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<WorkorderCheck> findList(WorkorderCheck workorderCheck) { 
 | 
        QueryWrapper<WorkorderCheck> wrapper = new QueryWrapper<>(workorderCheck); 
 | 
        return workorderCheckMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<WorkorderCheck> findPage(PageWrap<WorkorderCheck> pageWrap) { 
 | 
        IPage<WorkorderCheck> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<WorkorderCheck> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDeleted() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getDeleted, pageWrap.getModel().getDeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateUser() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getCreateUser, pageWrap.getModel().getCreateUser()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateTime() != null) { 
 | 
            queryWrapper.lambda().ge(WorkorderCheck::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())); 
 | 
            queryWrapper.lambda().le(WorkorderCheck::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUpdateUser() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getUpdateUser, pageWrap.getModel().getUpdateUser()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUpdateTime() != null) { 
 | 
            queryWrapper.lambda().ge(WorkorderCheck::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())); 
 | 
            queryWrapper.lambda().le(WorkorderCheck::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRootDepartId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getRootDepartId, pageWrap.getModel().getRootDepartId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDepartId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getDepartId, pageWrap.getModel().getDepartId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getPlanId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getPlanId, pageWrap.getModel().getPlanId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getWorkorderId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getWorkorderId, pageWrap.getModel().getWorkorderId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBatch() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getBatch, pageWrap.getModel().getBatch()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getFactoryId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getFactoryId, pageWrap.getModel().getFactoryId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProcedureId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getProcedureId, pageWrap.getModel().getProcedureId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProDeviceId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getProDeviceId, pageWrap.getModel().getProDeviceId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getAppliancesId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getAppliancesId, pageWrap.getModel().getAppliancesId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProDate() != null) { 
 | 
            queryWrapper.lambda().ge(WorkorderCheck::getProDate, Utils.Date.getStart(pageWrap.getModel().getProDate())); 
 | 
            queryWrapper.lambda().le(WorkorderCheck::getProDate, Utils.Date.getEnd(pageWrap.getModel().getProDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getType() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getType, pageWrap.getModel().getType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getNum() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getNum, pageWrap.getModel().getNum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDoneType() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getDoneType, pageWrap.getModel().getDoneType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getMaterialId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getMaterialId, pageWrap.getModel().getMaterialId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUnitId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getUnitId, pageWrap.getModel().getUnitId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getMaterialBatch() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getMaterialBatch, pageWrap.getModel().getMaterialBatch()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckWay() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getCheckWay, pageWrap.getModel().getCheckWay()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckUserId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getCheckUserId, pageWrap.getModel().getCheckUserId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getQualifiedNum() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getQualifiedNum, pageWrap.getModel().getQualifiedNum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getUnqualifiedNum() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getUnqualifiedNum, pageWrap.getModel().getUnqualifiedNum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckScope() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getCheckScope, pageWrap.getModel().getCheckScope()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckDate() != null) { 
 | 
            queryWrapper.lambda().ge(WorkorderCheck::getCheckDate, Utils.Date.getStart(pageWrap.getModel().getCheckDate())); 
 | 
            queryWrapper.lambda().le(WorkorderCheck::getCheckDate, Utils.Date.getEnd(pageWrap.getModel().getCheckDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCheckInfo() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getCheckInfo, pageWrap.getModel().getCheckInfo()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getQualifiedApplianceId() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getQualifiedApplianceId, pageWrap.getModel().getQualifiedApplianceId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getProUserids() != null) { 
 | 
            queryWrapper.lambda().eq(WorkorderCheck::getProUserids, pageWrap.getModel().getProUserids()); 
 | 
        } 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(workorderCheckMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(WorkorderCheck workorderCheck) { 
 | 
        QueryWrapper<WorkorderCheck> wrapper = new QueryWrapper<>(workorderCheck); 
 | 
        return workorderCheckMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public ApiResponse insertData(WorkorderCheck wc) { 
 | 
        if(wc.getWorkorderId()==null){ 
 | 
            return ApiResponse.failed("工单id不能为空"); 
 | 
        } 
 | 
        if(wc.getAppliancesId()==null){ 
 | 
            return ApiResponse.failed("工装id不能为空"); 
 | 
        } 
 | 
        if(wc.getCheckType()==null){ 
 | 
            return ApiResponse.failed("检验类型不能为空!"); 
 | 
        } 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
  
 | 
        //工单对象 
 | 
        Workorder workorder=workorderExtMapper.selectById(wc.getWorkorderId()); 
 | 
        if(workorder==null 
 | 
                || workorder.getStatus()==Constants.WORKORDER_STATUS.done 
 | 
                ||workorder.getStatus()==Constants.WORKORDER_STATUS.baogong 
 | 
                ||workorder.getStatus()==Constants.WORKORDER_STATUS.instock 
 | 
                ||workorder.getStatus()==Constants.WORKORDER_STATUS.cancel){ 
 | 
            return ApiResponse.failed("工单不允许检验"); 
 | 
        } 
 | 
        if(workorder.getPlanNum()!=null){ 
 | 
            Integer unqualifiedNum=wc.getUnqualifiedNum()!=null?wc.getUnqualifiedNum():0; 
 | 
            Integer qualifiedNum=wc.getQualifiedNum()!=null?wc.getQualifiedNum():0; 
 | 
            Integer num=unqualifiedNum+qualifiedNum; 
 | 
            if(num>workorder.getPlanNum()){ 
 | 
                return ApiResponse.failed("合格数量加不良数量不能大于计划数量"); 
 | 
            } 
 | 
  
 | 
        }else{ 
 | 
            return ApiResponse.failed("计划数量无数据"); 
 | 
        } 
 | 
     /*   Appliances checkappliance= appliancesServiceImpl.findById(Integer.valueOf(wc.getAppliancesId()));// 
 | 
        if(checkappliance!=null&&checkappliance.getNum()!=null){ 
 | 
            Integer unqualifiedNum1=wc.getUnqualifiedNum(); 
 | 
            Integer qualifiedNum1=wc.getQualifiedNum(); 
 | 
            Integer num=unqualifiedNum1+qualifiedNum1; 
 | 
            if(num>checkappliance.getNum().intValue()){ 
 | 
                return ApiResponse.failed("合格数量加不良数量不能大于篮筐中物料的数量"); 
 | 
            } 
 | 
        }else{ 
 | 
            return ApiResponse.failed("工装不存在"); 
 | 
        }*/ 
 | 
  
 | 
        if (Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.done)){ 
 | 
          //完工检验时先判断 是否存在巡线或者巡检记录不存在不允许完工检验 
 | 
            WorkorderCheck cd=new WorkorderCheck(); 
 | 
            cd.setDeleted(Constants.ZERO); 
 | 
            cd.setWorkorderId(wc.getWorkorderId()); 
 | 
            cd.setRootDepartId(workorder.getRootDepartId()); 
 | 
            cd.setDepartId(workorder.getDepartId()); 
 | 
            List<WorkorderCheck> listcd=this.findList(cd); 
 | 
            if(listcd==null || listcd.size() ==0){ 
 | 
                return ApiResponse.failed("巡线或者巡检检验记录不存在,不允许完工检验"); 
 | 
            } 
 | 
        } 
 | 
        wc.setMaterialBatch(workorder.getBatch()); 
 | 
        wc.setMaterialId(workorder.getMaterialId()); 
 | 
        wc.setDeleted(Constants.ZERO); 
 | 
        wc.setCreateTime(new Date()); 
 | 
        wc.setCreateUser(user.getId()); 
 | 
        wc.setRootDepartId(workorder.getRootDepartId()); 
 | 
        wc.setDepartId(workorder.getDepartId()); 
 | 
        wc.setPlanId(workorder.getPlanId()); 
 | 
       // wc.setWorkorderId(); 
 | 
        wc.setBatch(workorder.getBatch()); 
 | 
        wc.setFactoryId(workorder.getFactoryId()); 
 | 
        wc.setProcedureId(workorder.getProcedureId()); 
 | 
        wc.setProDeviceId(workorder.getProGroupId()); 
 | 
        //wc.setAppliancesId(null); 
 | 
        wc.setProDate(workorder.getPlanDate()); 
 | 
  
 | 
        // wc.setType(); 
 | 
        wc.setNum(workorder.getPlanNum()); 
 | 
        //工装对象 
 | 
        if(wc.getQualifiedApplianceId()!=null){ 
 | 
            Appliances appliances= appliancesServiceImpl.findById(Integer.valueOf(wc.getQualifiedApplianceId()));// 
 | 
            wc.setDoneType(appliances.getType()); 
 | 
            if(wc.getUnqualifiedNum()>0&&workorder.getType()==1||workorder.getType()==2){ 
 | 
                SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType()); 
 | 
                if(!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){ 
 | 
                    return ApiResponse.failed("当前工单为返工返修--只能选择报废工装"); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
      //  wc.setMaterialId(workorder.getMaterialId()); 
 | 
        wc.setUnitId(workorder.getUnitId()); 
 | 
        wc.setCheckWay(1); 
 | 
        wc.setCheckScope(1); 
 | 
        wc.setCheckDate(new Date()); 
 | 
        wc.setCheckUserId(user.getId()); 
 | 
        if(workorder.getProUserId()!=null){ 
 | 
            wc.setProUserids("["+workorder.getProUserId()+"]"); 
 | 
        } 
 | 
        workorder.setUpdateTime(new Date()); 
 | 
        //插入编码 
 | 
        wc.setCode(workorderCheckExtService.getNextCode(user.getCompany().getId())); 
 | 
        workorderCheckMapper.insert(wc); 
 | 
        List<WorkorderHistory> whList = new ArrayList<>(); 
 | 
        Workorder order = new Workorder(); 
 | 
        order.setUpdateTime(DateUtil.getCurrentDate()); 
 | 
        order.setUpdateUser(user.getId()); 
 | 
        order.setId(workorder.getId()); 
 | 
        order.setRootDepartId(workorder.getRootDepartId()); 
 | 
        order.setDepartId(workorder.getDepartId()); 
 | 
        if(Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.done)){ 
 | 
            //已完工 
 | 
            order.setStatus(Constants.WORKORDER_STATUS.done); 
 | 
            //工单历史数据 
 | 
            whList.add(WorkorderExtServiceImpl.initHistoryByModel(order,user.getId(),Constants.WORKORDER_HISTORY_STATUS.done)); 
 | 
        }else  if(Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.check)){ 
 | 
            //已检验 
 | 
            order.setStatus(Constants.WORKORDER_STATUS.check); 
 | 
            whList.add(WorkorderExtServiceImpl.initHistoryByModel(order,user.getId(),Constants.WORKORDER_HISTORY_STATUS.check)); 
 | 
        } 
 | 
        workorderExtMapper.updateById(order); 
 | 
        if(whList.size()>0){ 
 | 
            workorderHistoryExtMapper.insertBatch(whList); 
 | 
        } 
 | 
        return ApiResponse.success(wc.getId()); 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public ApiResponse insertDataStandard(WorkorderCheck wc) { 
 | 
        if(wc.getWorkorderId()==null){ 
 | 
            return ApiResponse.failed("工单id不能为空"); 
 | 
        } 
 | 
        if(wc.getCheckType()==null){ 
 | 
            return ApiResponse.failed("检验类型不能为空!"); 
 | 
        } 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
  
 | 
        //工单对象 
 | 
        Workorder workorder=workorderExtMapper.selectById(wc.getWorkorderId()); 
 | 
        if(workorder==null || workorder.getStatus()==Constants.WORKORDER_STATUS.done || workorder.getStatus()==Constants.WORKORDER_STATUS.done||workorder.getStatus()==Constants.WORKORDER_STATUS.baogong 
 | 
                ||workorder.getStatus()==Constants.WORKORDER_STATUS.instock ||workorder.getStatus()==Constants.WORKORDER_STATUS.cancel){ 
 | 
            return ApiResponse.failed("工单不允许检验"); 
 | 
        } 
 | 
        if(workorder.getPlanNum()!=null){ 
 | 
            Integer unqualifiedNum=wc.getUnqualifiedNum()!=null?wc.getUnqualifiedNum():0; 
 | 
            Integer qualifiedNum=wc.getQualifiedNum()!=null?wc.getQualifiedNum():0; 
 | 
            Integer num=unqualifiedNum+qualifiedNum; 
 | 
            if(num>workorder.getPlanNum()){ 
 | 
                return ApiResponse.failed("合格数量加不良数量不能大于计划数量"); 
 | 
            } 
 | 
  
 | 
        }else{ 
 | 
            return ApiResponse.failed("计划数量无数据"); 
 | 
        } 
 | 
     /*   Appliances checkappliance= appliancesServiceImpl.findById(Integer.valueOf(wc.getAppliancesId()));// 
 | 
        if(checkappliance!=null&&checkappliance.getNum()!=null){ 
 | 
            Integer unqualifiedNum1=wc.getUnqualifiedNum(); 
 | 
            Integer qualifiedNum1=wc.getQualifiedNum(); 
 | 
            Integer num=unqualifiedNum1+qualifiedNum1; 
 | 
            if(num>checkappliance.getNum().intValue()){ 
 | 
                return ApiResponse.failed("合格数量加不良数量不能大于篮筐中物料的数量"); 
 | 
            } 
 | 
        }else{ 
 | 
            return ApiResponse.failed("工装不存在"); 
 | 
        }*/ 
 | 
  
 | 
        if (Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.done)){ 
 | 
            //完工检验时先判断 是否存在巡线或者巡检记录不存在不允许完工检验 
 | 
            WorkorderCheck cd=new WorkorderCheck(); 
 | 
            cd.setDeleted(Constants.ZERO); 
 | 
            cd.setWorkorderId(wc.getWorkorderId()); 
 | 
            cd.setRootDepartId(workorder.getRootDepartId()); 
 | 
            cd.setDepartId(workorder.getDepartId()); 
 | 
            List<WorkorderCheck> listcd=this.findList(cd); 
 | 
            if(listcd==null || listcd.size() ==0){ 
 | 
                return ApiResponse.failed("巡线或者巡检检验记录不存在,不允许完工检验"); 
 | 
            } 
 | 
        } 
 | 
        wc.setMaterialBatch(workorder.getBatch()); 
 | 
        wc.setMaterialId(workorder.getMaterialId()); 
 | 
        wc.setDeleted(Constants.ZERO); 
 | 
        wc.setCreateTime(new Date()); 
 | 
        wc.setCreateUser(user.getId()); 
 | 
        wc.setRootDepartId(workorder.getRootDepartId()); 
 | 
        wc.setDepartId(workorder.getDepartId()); 
 | 
        wc.setPlanId(workorder.getPlanId()); 
 | 
        // wc.setWorkorderId(); 
 | 
        wc.setBatch(workorder.getBatch()); 
 | 
        wc.setFactoryId(workorder.getFactoryId()); 
 | 
        wc.setProcedureId(workorder.getProcedureId()); 
 | 
        wc.setProDeviceId(workorder.getProGroupId()); 
 | 
        //wc.setAppliancesId(null); 
 | 
        wc.setProDate(workorder.getPlanDate()); 
 | 
  
 | 
        // wc.setType(); 
 | 
        wc.setNum(workorder.getPlanNum()); 
 | 
        //工装对象 
 | 
        if(wc.getQualifiedApplianceId()!=null){ 
 | 
            Appliances appliances= appliancesServiceImpl.findById(Integer.valueOf(wc.getQualifiedApplianceId()));// 
 | 
            wc.setDoneType(appliances.getType()); 
 | 
            if(wc.getUnqualifiedNum()>0&&workorder.getType()==1||workorder.getType()==2){ 
 | 
                SystemDictData systemDictData=systemDictDataServiceimpl.findById(appliances.getType()); 
 | 
                if(!StringUtils.equals(Constants.APPLIANCES_TYPE_LABLE.scrap,systemDictData.getLabel()) ){ 
 | 
                    return ApiResponse.failed("当前工单为返工返修--只能选择报废工装"); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        //  wc.setMaterialId(workorder.getMaterialId()); 
 | 
        wc.setUnitId(workorder.getUnitId()); 
 | 
        wc.setCheckWay(1); 
 | 
        wc.setCheckScope(1); 
 | 
        wc.setCheckDate(new Date()); 
 | 
        wc.setCheckUserId(user.getId()); 
 | 
        if(workorder.getProUserId()!=null){ 
 | 
            wc.setProUserids("["+workorder.getProUserId()+"]"); 
 | 
        } 
 | 
        workorder.setUpdateTime(new Date()); 
 | 
        //插入编码 
 | 
        wc.setCode(workorderCheckExtService.getNextCode(user.getCompany().getId())); 
 | 
        workorderCheckMapper.insert(wc); 
 | 
        List<WorkorderHistory> whList = new ArrayList<>(); 
 | 
        Workorder order = new Workorder(); 
 | 
        order.setUpdateTime(DateUtil.getCurrentDate()); 
 | 
        order.setUpdateUser(user.getId()); 
 | 
        order.setId(workorder.getId()); 
 | 
        order.setRootDepartId(workorder.getRootDepartId()); 
 | 
        order.setDepartId(workorder.getDepartId()); 
 | 
        if(Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.done)){ 
 | 
            //已完工 
 | 
            order.setStatus(Constants.WORKORDER_STATUS.done); 
 | 
            //工单历史数据 
 | 
            whList.add(WorkorderExtServiceImpl.initHistoryByModel(order,user.getId(),Constants.WORKORDER_HISTORY_STATUS.done)); 
 | 
        }else  if(Constants.equalsInteger(wc.getCheckType() ,Constants.WORKORDER_CHECKTYPE.check)){ 
 | 
            //已检验 
 | 
            order.setStatus(Constants.WORKORDER_STATUS.check); 
 | 
            whList.add(WorkorderExtServiceImpl.initHistoryByModel(order,user.getId(),Constants.WORKORDER_HISTORY_STATUS.check)); 
 | 
        } 
 | 
        workorderExtMapper.updateById(order); 
 | 
        if(whList.size()>0){ 
 | 
            workorderHistoryExtMapper.insertBatch(whList); 
 | 
        } 
 | 
        return ApiResponse.success(wc.getId()); 
 | 
    } 
 | 
} 
 |