| 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); | 
|     } | 
| } |