package com.doumee.service.business.impl; 
 | 
  
 | 
import com.doumee.core.annotation.excel.ExcelImporter; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.model.PageData; 
 | 
import com.doumee.core.model.PageWrap; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.dao.business.InsuranceMapper; 
 | 
import com.doumee.dao.business.WorktypeMapper; 
 | 
import com.doumee.dao.business.dto.WorkTypeQueryDTO; 
 | 
import com.doumee.dao.business.dto.WorktypeImport; 
 | 
import com.doumee.dao.business.model.DispatchUnit; 
 | 
import com.doumee.dao.business.model.Worktype; 
 | 
import com.doumee.service.business.WorktypeService; 
 | 
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.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Service; 
 | 
import org.springframework.util.CollectionUtils; 
 | 
import org.springframework.web.multipart.MultipartFile; 
 | 
  
 | 
import java.util.ArrayList; 
 | 
import java.util.List; 
 | 
import java.util.Objects; 
 | 
  
 | 
/** 
 | 
 * 工种信息表Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2024/01/16 10:03 
 | 
 */ 
 | 
@Service 
 | 
public class WorktypeServiceImpl implements WorktypeService { 
 | 
  
 | 
    @Autowired 
 | 
    private WorktypeMapper worktypeMapper; 
 | 
    @Autowired 
 | 
    private InsuranceMapper insuranceMapper; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(Worktype worktype) { 
 | 
        worktypeMapper.insert(worktype); 
 | 
        return worktype.getId(); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteById(Integer id) { 
 | 
        worktypeMapper.deleteById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void delete(Worktype worktype) { 
 | 
        UpdateWrapper<Worktype> deleteWrapper = new UpdateWrapper<>(worktype); 
 | 
        worktypeMapper.delete(deleteWrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void deleteByIdInBatch(List<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        worktypeMapper.deleteBatchIds(ids); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateById(Worktype worktype) { 
 | 
        worktypeMapper.updateById(worktype); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public void updateByIdInBatch(List<Worktype> worktypes) { 
 | 
        if (CollectionUtils.isEmpty(worktypes)) { 
 | 
            return; 
 | 
        } 
 | 
        for (Worktype worktype: worktypes) { 
 | 
            this.updateById(worktype); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Worktype findById(Integer id) { 
 | 
        return worktypeMapper.selectById(id); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public Worktype findOne(Worktype worktype) { 
 | 
        QueryWrapper<Worktype> wrapper = new QueryWrapper<>(worktype); 
 | 
        return worktypeMapper.selectOne(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<Worktype> findList(Worktype worktype) { 
 | 
        worktype.setIsdeleted(Constants.ZERO); 
 | 
        worktype.setStatus(Constants.ZERO); 
 | 
        QueryWrapper<Worktype> wrapper = new QueryWrapper<>(worktype); 
 | 
        return worktypeMapper.selectList(wrapper); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public List<Worktype> findListByDTO(WorkTypeQueryDTO workTypeQueryDTO){ 
 | 
        List<Worktype> list = worktypeMapper.selectList(new QueryWrapper<Worktype>().lambda() 
 | 
                .eq(Worktype::getIsdeleted,Constants.ZERO) 
 | 
                .eq(Worktype::getDataType,Constants.TWO) 
 | 
                .eq(Worktype::getStatus,Constants.ZERO) 
 | 
                .apply(workTypeQueryDTO.getQueryType().equals(Constants.ZERO), 
 | 
                        "id in ( select  sw.worktype_id from solution_worktype sw where sw.SOLUTION_ID = "+workTypeQueryDTO.getId()+" )") 
 | 
                .apply(workTypeQueryDTO.getQueryType().equals(Constants.ONE), 
 | 
                        "id in ( select  dw.work_type_id from du_worktype dw where dw.status = 1 and  dw.du_solution_id = "+workTypeQueryDTO.getId()+" )") 
 | 
                .apply(workTypeQueryDTO.getQueryType().equals(Constants.TWO), 
 | 
                        "id in ( select  dw.WORKTYPE_ID from apply_detail dw where dw.APPLY_ID = "+workTypeQueryDTO.getId()+" )") 
 | 
        ); 
 | 
        return list; 
 | 
    } 
 | 
   
 | 
    @Override 
 | 
    public PageData<Worktype> findPage(PageWrap<Worktype> pageWrap) { 
 | 
        IPage<Worktype> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); 
 | 
        QueryWrapper<Worktype> queryWrapper = new QueryWrapper<>(); 
 | 
        Utils.MP.blankToNull(pageWrap.getModel()); 
 | 
        if (pageWrap.getModel().getId() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getId, pageWrap.getModel().getId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreator() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getCreator, pageWrap.getModel().getCreator()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getCreateDate() != null) { 
 | 
            queryWrapper.lambda().ge(Worktype::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); 
 | 
            queryWrapper.lambda().le(Worktype::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditor() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getEditor, pageWrap.getModel().getEditor()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getEditDate() != null) { 
 | 
            queryWrapper.lambda().ge(Worktype::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); 
 | 
            queryWrapper.lambda().le(Worktype::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); 
 | 
        } 
 | 
        if (pageWrap.getModel().getIsdeleted() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getIsdeleted, pageWrap.getModel().getIsdeleted()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getName() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getName, pageWrap.getModel().getName()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getRemark() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getRemark, pageWrap.getModel().getRemark()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getStatus() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getStatus, pageWrap.getModel().getStatus()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getSortnum() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getSortnum, pageWrap.getModel().getSortnum()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getInsuranceId() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getInsuranceId, pageWrap.getModel().getInsuranceId()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getVersion() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getVersion, pageWrap.getModel().getVersion()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getDataType() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getDataType, pageWrap.getModel().getDataType()); 
 | 
        } 
 | 
        if (pageWrap.getModel().getBaseId() != null) { 
 | 
            queryWrapper.lambda().eq(Worktype::getBaseId, pageWrap.getModel().getBaseId()); 
 | 
        } 
 | 
        for(PageWrap.SortData sortData: pageWrap.getSorts()) { 
 | 
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { 
 | 
                queryWrapper.orderByDesc(sortData.getProperty()); 
 | 
            } else { 
 | 
                queryWrapper.orderByAsc(sortData.getProperty()); 
 | 
            } 
 | 
        } 
 | 
        return PageData.from(worktypeMapper.selectPage(page, queryWrapper)); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public long count(Worktype worktype) { 
 | 
        QueryWrapper<Worktype> wrapper = new QueryWrapper<>(worktype); 
 | 
        return worktypeMapper.selectCount(wrapper); 
 | 
    } 
 | 
    @Override 
 | 
    public List<String> importBatch(MultipartFile file ){ 
 | 
        /*  List<Worktype> list = new ArrayList<>(); 
 | 
      if(id!=null){ 
 | 
            Worktype param = new Worktype(); 
 | 
            param.setIsdeleted(Constants.ZERO); 
 | 
            param.setDataType(Constants.ZERO); 
 | 
            param.setInsuranceId(id); 
 | 
            list = findList(param); 
 | 
        }*/ 
 | 
        ExcelImporter ie = null; 
 | 
        List<WorktypeImport> dataList =null; 
 | 
        try { 
 | 
            ie = new ExcelImporter(file,1,0); 
 | 
            dataList = ie.getDataList(WorktypeImport.class,null); 
 | 
        }  catch (Exception e) { 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        if(dataList == null || dataList.size() ==0){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据为空!"); 
 | 
        } 
 | 
         List<String> result = new ArrayList<>(); 
 | 
        for(WorktypeImport model : dataList){ 
 | 
            if(StringUtils.isBlank(model.getName())){ 
 | 
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入数据存在异常"); 
 | 
            } 
 | 
//            if(StringUtils.isNotBlank(model.getName()) && !isNewWorkTypeByName(model.getName(),list)){ 
 | 
                result.add(model.getName()); 
 | 
//            } 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    private boolean isNewWorkTypeByName(String name, List<Worktype> list) { 
 | 
        if(  list!=null && list.size()>0){ 
 | 
            for(Worktype m : list){ 
 | 
                if(StringUtils.equals(name,m.getName())){ 
 | 
                    return true; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return  false; 
 | 
    } 
 | 
} 
 |