package doumeemes.service.business.impl; 
 | 
  
 | 
import doumeemes.core.constants.ResponseStatus; 
 | 
import doumeemes.core.exception.BusinessException; 
 | 
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.Utils; 
 | 
import doumeemes.dao.business.WorkorderCheckAttrMapper; 
 | 
import doumeemes.dao.business.dto.CreateCheckAttrDTO; 
 | 
import doumeemes.dao.business.model.CheckAttr; 
 | 
import doumeemes.dao.business.model.Workorder; 
 | 
import doumeemes.dao.business.model.WorkorderCheckAttr; 
 | 
import doumeemes.dao.ext.CheckAttrExtMapper; 
 | 
import doumeemes.dao.ext.WorkorderCheckAttrExtMapper; 
 | 
import doumeemes.dao.ext.WorkorderExtMapper; 
 | 
import doumeemes.dao.ext.dto.QueryWorkorderCheckAttrExtDTO; 
 | 
import doumeemes.dao.ext.vo.WorkorderCheckAttrExtListVO; 
 | 
import doumeemes.service.business.WorkorderCheckAttrService; 
 | 
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 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.Date; 
 | 
import java.util.List; 
 | 
  
 | 
/** 
 | 
 * 工单类-检点属性关联表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @since 2022/06/06 15:08 
 | 
 */ 
 | 
@Service 
 | 
public class WorkorderCheckAttrServiceImpl implements WorkorderCheckAttrService { 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderCheckAttrMapper workorderCheckAttrMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderExtMapper workorderExtMapper; 
 | 
    @Autowired 
 | 
    private CheckAttrExtMapper checkAttrExtMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private WorkorderCheckAttrExtMapper workorderCheckAttrExtMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        workorderCheckAttrMapper.insert(workorderCheckAttr); 
 | 
        return workorderCheckAttr.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public ApiResponse deleteById(Integer id) { 
 | 
        QueryWorkorderCheckAttrExtDTO query=new QueryWorkorderCheckAttrExtDTO(); 
 | 
        query.setId(id); 
 | 
        List<WorkorderCheckAttrExtListVO> result = workorderCheckAttrExtMapper.findallList(query); 
 | 
        if(result.size()>0){ 
 | 
            WorkorderCheckAttrExtListVO 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{ 
 | 
                WorkorderCheckAttr workorderCheckAttr=workorderCheckAttrMapper.selectById(wca.getId()); 
 | 
                workorderCheckAttr.setDeleted(Constants.ONE); 
 | 
                workorderCheckAttrMapper.updateById(workorderCheckAttr); 
 | 
                return ApiResponse.success(null); 
 | 
            } 
 | 
  
 | 
        }else{ 
 | 
            return ApiResponse.failed("数据不存在!"); 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        UpdateWrapper<WorkorderCheckAttr> deleteWrapper = new UpdateWrapper<>(workorderCheckAttr); 
 | 
        workorderCheckAttrMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        workorderCheckAttrMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        workorderCheckAttrMapper.updateById(workorderCheckAttr); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<WorkorderCheckAttr> workorderCheckAttrs) { 
 | 
        if (CollectionUtils.isEmpty(workorderCheckAttrs)) { 
 | 
            return; 
 | 
        } 
 | 
        for (WorkorderCheckAttr workorderCheckAttr: workorderCheckAttrs) { 
 | 
            this.updateById(workorderCheckAttr); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public WorkorderCheckAttr findById(Integer id) { 
 | 
        return workorderCheckAttrMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public WorkorderCheckAttr findOne(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        QueryWrapper<WorkorderCheckAttr> wrapper = new QueryWrapper<>(workorderCheckAttr); 
 | 
        return workorderCheckAttrMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<WorkorderCheckAttr> findList(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        QueryWrapper<WorkorderCheckAttr> wrapper = new QueryWrapper<>(workorderCheckAttr); 
 | 
        return workorderCheckAttrMapper.selectList(wrapper); 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<WorkorderCheckAttr> findPage(PageWrap<WorkorderCheckAttr> pageWrap) { 
 | 
        IPage<WorkorderCheckAttr> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<WorkorderCheckAttr> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        queryWrapper.lambda() 
 | 
                .eq(pageWrap.getModel().getId() != null, WorkorderCheckAttr::getId, pageWrap.getModel().getId()) 
 | 
                .eq(pageWrap.getModel().getDeleted() != null, WorkorderCheckAttr::getDeleted, pageWrap.getModel().getDeleted()) 
 | 
                .eq(pageWrap.getModel().getCreateUser() != null, WorkorderCheckAttr::getCreateUser, pageWrap.getModel().getCreateUser()) 
 | 
                .ge(pageWrap.getModel().getCreateTime() != null, WorkorderCheckAttr::getCreateTime, Utils.Date.getStart(pageWrap.getModel().getCreateTime())) 
 | 
                .le(pageWrap.getModel().getCreateTime() != null, WorkorderCheckAttr::getCreateTime, Utils.Date.getEnd(pageWrap.getModel().getCreateTime())) 
 | 
                .eq(pageWrap.getModel().getUpdateUser() != null, WorkorderCheckAttr::getUpdateUser, pageWrap.getModel().getUpdateUser()) 
 | 
                .ge(pageWrap.getModel().getUpdateTime() != null, WorkorderCheckAttr::getUpdateTime, Utils.Date.getStart(pageWrap.getModel().getUpdateTime())) 
 | 
                .le(pageWrap.getModel().getUpdateTime() != null, WorkorderCheckAttr::getUpdateTime, Utils.Date.getEnd(pageWrap.getModel().getUpdateTime())) 
 | 
                .eq(pageWrap.getModel().getRemark() != null, WorkorderCheckAttr::getRemark, pageWrap.getModel().getRemark()) 
 | 
                .eq(pageWrap.getModel().getRootDepartId() != null, WorkorderCheckAttr::getRootDepartId, pageWrap.getModel().getRootDepartId()) 
 | 
                .eq(pageWrap.getModel().getDepartId() != null, WorkorderCheckAttr::getDepartId, pageWrap.getModel().getDepartId()) 
 | 
                .eq(pageWrap.getModel().getPlanId() != null, WorkorderCheckAttr::getPlanId, pageWrap.getModel().getPlanId()) 
 | 
                .eq(pageWrap.getModel().getWorkorderId() != null, WorkorderCheckAttr::getWorkorderId, pageWrap.getModel().getWorkorderId()) 
 | 
                .eq(pageWrap.getModel().getAttrId() != null, WorkorderCheckAttr::getAttrId, pageWrap.getModel().getAttrId()) 
 | 
                .eq(pageWrap.getModel().getVal() != null, WorkorderCheckAttr::getVal, pageWrap.getModel().getVal()) 
 | 
        ; 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(workorderCheckAttrMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(WorkorderCheckAttr workorderCheckAttr) { 
 | 
        QueryWrapper<WorkorderCheckAttr> wrapper = new QueryWrapper<>(workorderCheckAttr); 
 | 
        return workorderCheckAttrMapper.selectCount(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public ApiResponse insertData(CreateCheckAttrDTO param) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        List<WorkorderCheckAttr> attrList = param.getAttrList(); 
 | 
        if(param.getId() == null || attrList == null || attrList.size() ==0){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请求参数不正确!"); 
 | 
        } 
 | 
        Workorder mp = new Workorder(); 
 | 
        mp.setDeleted(Constants.ZERO); 
 | 
        mp.setId(param.getId()); 
 | 
        mp.setRootDepartId(user.getRootDepartment().getId()); 
 | 
        mp = workorderExtMapper.selectOne(mp); 
 | 
        if(mp== null){ 
 | 
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,工单记录不存在!"); 
 | 
        } 
 | 
        for(int i=0;i<attrList.size();i++){ 
 | 
            WorkorderCheckAttr wa=attrList.get(i); 
 | 
            CheckAttr attr =  checkAttrExtMapper.selectById(wa.getAttrId()) ; 
 | 
            if(attr == null || !Constants.equalsInteger(attr.getRootDepartId(),mp.getRootDepartId())|| !Constants.equalsInteger(attr.getProcedureId(),mp.getProcedureId())){ 
 | 
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,请选择正确的检点属性!"); 
 | 
            } 
 | 
            if( Constants.equalsInteger(attr.getIsRequired(),Constants.ONE) && StringUtils.isBlank(wa.getVal())){ 
 | 
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,请按要求完成必填项输入"); 
 | 
            } 
 | 
            wa.setWorkorderId(param.getId()); 
 | 
            wa.setDeleted(Constants.ZERO); 
 | 
            wa.setCreateTime(new Date()); 
 | 
            wa.setCreateUser(user.getId()); 
 | 
            wa.setRootDepartId(user.getRootDepartment().getId()); 
 | 
            wa.setDepartId(user.getCurComDepartment().getId()); 
 | 
            wa.setPlanId(mp.getPlanId()); 
 | 
            workorderCheckAttrMapper.insert(wa); 
 | 
        } 
 | 
        return ApiResponse.success(null); 
 | 
    } 
 | 
} 
 |