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 deleteWrapper = new UpdateWrapper<>(worktype); worktypeMapper.delete(deleteWrapper); } @Override public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } worktypeMapper.deleteBatchIds(ids); } @Override public void updateById(Worktype worktype) { worktypeMapper.updateById(worktype); } @Override public void updateByIdInBatch(List 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 wrapper = new QueryWrapper<>(worktype); return worktypeMapper.selectOne(wrapper); } @Override public List findList(Worktype worktype) { worktype.setIsdeleted(Constants.ZERO); worktype.setStatus(Constants.ZERO); QueryWrapper wrapper = new QueryWrapper<>(worktype); return worktypeMapper.selectList(wrapper); } @Override public List findListByDTO(WorkTypeQueryDTO workTypeQueryDTO){ List list = worktypeMapper.selectList(new QueryWrapper().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 findPage(PageWrap pageWrap) { IPage page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); QueryWrapper 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 wrapper = new QueryWrapper<>(worktype); return worktypeMapper.selectCount(wrapper); } @Override public List importBatch(MultipartFile file ){ /* List 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 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 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 list) { if( list!=null && list.size()>0){ for(Worktype m : list){ if(StringUtils.equals(name,m.getName())){ return true; } } } return false; } }