| | |
| | | import com.doumee.core.exception.BusinessException; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.web.dto.CloseDTO; |
| | | import com.doumee.dao.web.dto.DCANoProblemDTO; |
| | | import com.doumee.service.business.WorkorderService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; |
| | |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.catalina.Manager; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.data.redis.core.RedisTemplate; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import java.util.Arrays; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | import javax.annotation.Resource; |
| | | import java.io.Serializable; |
| | | import java.util.*; |
| | | import java.util.concurrent.TimeUnit; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | @Autowired |
| | | private ManagersMapper managersMapper; |
| | | |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | |
| | | |
| | | @Override |
| | | public Integer create(Workorder workorder) { |
| | | this.isValidBaseParam(workorder); |
| | |
| | | workorder.setMemberId(workorder.getMemberId()); |
| | | workorder.setIsdeleted(Constants.ZERO); |
| | | workorder.setStatus(Constants.ZERO); |
| | | //跌绊滑事件上报 查询SHE负责人 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){ |
| | | List<Managers> managersList = managersMapper.selectList(new QueryWrapper<Managers>().lambda().eq(Managers::getIsdeleted,Constants.ZERO) |
| | | .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(managersList)){ |
| | | workorder.setQwnoticeMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(","))); |
| | | } |
| | | } |
| | | workorder.setCode(this.getNextCode(workorder.getType())); |
| | | //处理人员类信息 |
| | | this.dealNoticeData(workorder); |
| | | workorderMapper.insert(workorder); |
| | | //存储DCA 问题记录表 |
| | | this.saveProblemData(workorder); |
| | | //存储附件信息 |
| | | this.saveMutiFile(workorder); |
| | | //处理上报日志 |
| | | this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId()); |
| | | //TODO 发送通知 |
| | | |
| | | return workorder.getId(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 存储附件信息 |
| | | * @param workorder |
| | | */ |
| | | public void saveMutiFile(Workorder workorder){ |
| | | List<Multifile> multifileList = workorder.getMultifileList(); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ |
| | | for (Multifile multifile:multifileList) { |
| | | multifile.setObjId(workorder.getId()); |
| | | multifile.setCreateDate(new Date()); |
| | | //TODO 后续整理处理 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){//SHE事件上报图片 |
| | | multifile.setObjType(Constants.ZERO); |
| | | multifile.setObjType(Constants.multiFileType.sheUpload); |
| | | }else if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){//跌绊滑事件上报图片 |
| | | multifile.setObjType(Constants.ONE); |
| | | multifile.setObjType(Constants.multiFileType.dbhUpload); |
| | | }else if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){//DCA事件上报 |
| | | multifile.setObjType(Constants.multiFileType.dcaUpload); |
| | | } |
| | | } |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | //处理上报日志 |
| | | this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId()); |
| | | return workorder.getId(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 处理 DCA 提报 问题数据 |
| | | * @param workorder |
| | | */ |
| | | public void saveProblemData(Workorder workorder){ |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.TWO)){ |
| | | List<DCANoProblemDTO> dcaNoProblemDTOList = workorder.getDcaNoProblemDTOList(); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(dcaNoProblemDTOList)){ |
| | | for (DCANoProblemDTO dcaNoProblemDTO:dcaNoProblemDTOList) { |
| | | Category problem = categoryMapper.selectById(dcaNoProblemDTO.getProblemId()); |
| | | Workorder dcaWorkOrder = new Workorder(); |
| | | dcaWorkOrder.setCreateDate(new Date()); |
| | | dcaWorkOrder.setEditDate(new Date()); |
| | | dcaWorkOrder.setMemberId(workorder.getMemberId()); |
| | | dcaWorkOrder.setTypeId(dcaNoProblemDTO.getProblemId()); |
| | | dcaWorkOrder.setType(Constants.TWO); |
| | | dcaWorkOrder.setStatus(Constants.ZERO); |
| | | dcaWorkOrder.setIsdeleted(Constants.ZERO); |
| | | dcaWorkOrder.setProblemTitle(problem.getName()); |
| | | dcaWorkOrder.setProblemId(problem.getId()); |
| | | dcaWorkOrder.setProblemInfo(problem.getRemark()); |
| | | dcaWorkOrder.setDcaRecordId(workorder.getId()); |
| | | workorderMapper.insert(dcaWorkOrder); |
| | | List<Multifile> multifileList = dcaNoProblemDTO.getMultifileList(); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ |
| | | for (Multifile multifile:multifileList) { |
| | | multifile.setObjId(dcaWorkOrder.getId()); |
| | | multifile.setCreateDate(new Date()); |
| | | multifile.setObjType(Constants.multiFileType.dcaWorkOrder); |
| | | } |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 处理通知类人员信息 |
| | | * @param workorder |
| | | */ |
| | | public void dealNoticeData(Workorder workorder){ |
| | | //SHE上报 提交类型为同事 处理同事信息 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)&&Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)){ |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getQwId,workorder.getMemberQwids().split(","))); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){ |
| | | workorder.setMemberNames(memberList.stream().map(i->i.getName()).collect(Collectors.joining(","))); |
| | | } |
| | | } |
| | | //跌绊滑事件上报 查询SHE负责人 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.THREE) || Constants.equalsInteger(workorder.getType(),Constants.ONE)){ |
| | | List<Managers> managersList = managersMapper.selectJoinList(Managers.class,new MPJLambdaWrapper<Managers>().selectAll(Managers.class) |
| | | .selectAs(Member::getName,Managers::getMemberName) |
| | | .leftJoin(Member.class,Member::getId,Managers::getMemberId) |
| | | .eq(Managers::getIsdeleted,Constants.ZERO) |
| | | .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(managersList)){ |
| | | workorder.setQwnoticeMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(","))); |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | workorder.setEmialMemberIds(managersList.stream().map(i->i.getMemberId().toString()).collect(Collectors.joining(","))); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | || Objects.isNull(workorder.getSubmitDate()) |
| | | || Objects.isNull(workorder.getHappenTime()) |
| | | || Objects.isNull(workorder.getType()) |
| | | || !( Constants.equalsInteger(workorder.getType(),Constants.ZERO) || Constants.equalsInteger(workorder.getType(),Constants.ONE) |
| | | || Constants.equalsInteger(workorder.getType(),Constants.TWO) || Constants.equalsInteger(workorder.getType(),Constants.THREE) |
| | | || Objects.isNull(workorder.getTypeId()) |
| | | || Objects.isNull(workorder.getLocaltionId()) |
| | | || !( Constants.equalsInteger(workorder.getType(),Constants.ZERO) || Constants.equalsInteger(workorder.getType(),Constants.ONE) ||Constants.equalsInteger(workorder.getType(),Constants.THREE) |
| | | )){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | //SHE 事件上报 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | if(Objects.isNull(workorder.getMemberType()) |
| | | || Objects.isNull(workorder.getLocaltionId()) |
| | | || Objects.isNull(workorder.getOutJiuyi()) |
| | | || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Objects.isNull(workorder.getIsYiwushi())) |
| | | || (Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted())) |
| | | || Objects.isNull(workorder.getCategoryId()) |
| | | || Objects.isNull(workorder.getWorkRelated()) |
| | | || (Constants.equalsInteger(workorder.getMemberType(),Constants.TWO) && StringUtils.isEmpty(workorder.getMemberNames())) |
| | | || (Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO) && StringUtils.isEmpty(workorder.getMemberQwids())) |
| | | || (Constants.equalsInteger(workorder.getMemberType(),Constants.ONE) && StringUtils.isEmpty(workorder.getMemberQwids())) |
| | | || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | |
| | | } |
| | | //跌绊滑 事件上报 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){ |
| | | if(Objects.isNull(workorder.getTypeId()) |
| | | || Objects.isNull(workorder.getLocaltionId()) |
| | | || org.apache.commons.lang3.StringUtils.isBlank(workorder.getEventInfo()) |
| | | if(org.apache.commons.lang3.StringUtils.isBlank(workorder.getRiskInfo()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | } |
| | | //DCA 事件上报 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){ |
| | | if(Objects.isNull(workorder.getDcaYesNum()) |
| | | || Objects.isNull(workorder.getDcaNoNum()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | } |
| | | |
| | | |
| | | //数据库数据校验 |
| | | Category typeCategory = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.isNull(typeCategory)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Category locationCategory = categoryMapper.selectById(workorder.getLocaltionId()); |
| | | if(Objects.isNull(locationCategory)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | workorder.setLocationName(locationCategory.getNamePath()); |
| | | } |
| | | |
| | | @Override |
| | |
| | | Workorder workorder = workorderMapper.selectJoinOne(Workorder.class, |
| | | new MPJLambdaWrapper<Workorder>() |
| | | .selectAll(Workorder.class) |
| | | .selectAs(Member::getPhone,Workorder::getMemberPhone) |
| | | .selectAs(Member::getName,Workorder::getMemberName) |
| | | .selectAs(Company::getNamePath,Workorder::getCompanyName) |
| | | .select(" c1.name ",Workorder::getHurtTypeName) |
| | | .select(" c2.name ",Workorder::getLocationTypeName) |
| | | .selectAs(Workorder::getCompanyName,Workorder::getCompanyName) |
| | | .select(" c3.name ",Workorder::getTypeName) |
| | | .select(" c4.name ",Workorder::getProblemName) |
| | | .leftJoin(Member.class,Member::getId,Workorder::getMemberId) |
| | | .leftJoin(Company.class,Company::getId,Member::getCompanyId) |
| | | .leftJoin(" category c1 on t.CATEGORY_ID = c1.id ") //受伤类别 |
| | | .leftJoin(" category c2 on t.LOCALTION_ID = c2.id ") //发生地点 |
| | | .leftJoin(" category c3 on t.TYPE_ID = c3.id ") //风险类型 |
| | | .leftJoin(" category c4 on t.PROBLEM_ID = c4.id ") //DCA问题编码 |
| | | .eq(Workorder::getId,id) |
| | | .last(" limit 1 ") |
| | | ); |
| | | if(Objects.nonNull(workorder)){ |
| | | //如果是SHE事件上报 SHE涉及人员类型为同事信息 需要查询同事名称 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)&&Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)){ |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO).in(Member::getQwId, Arrays.asList(workorder.getMemberQwids().split(",")))); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)){ |
| | | workorder.setColleague(memberList.stream().map(i->i.getName()).collect(Collectors.joining(","))); |
| | | } |
| | | } |
| | | //查询附件信息 |
| | | List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjId,workorder).orderByAsc(Multifile::getId)); |
| | |
| | | workorder.setMultifileList(multifileList); |
| | | } |
| | | } |
| | | |
| | | |
| | | return workorder; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | |
| | | @Override |
| | | public PageData<Workorder> findPage(PageWrap<Workorder> pageWrap) { |
| | | IPage<Workorder> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); |
| | | QueryWrapper<Workorder> queryWrapper = new QueryWrapper<>(); |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | queryWrapper.lambda() |
| | | MPJLambdaWrapper<Workorder> queryWrapper = new MPJLambdaWrapper<>(); |
| | | pageWrap.getModel().setIsdeleted(Constants.ZERO); |
| | | queryWrapper |
| | | .selectAll(Workorder.class) |
| | | .selectAs(Member::getName,Workorder::getMemberName) |
| | | .selectAs(Member::getCompanyName,Workorder::getCompanyName) |
| | | .selectAs(Member::getPhone,Workorder::getMemberPhone) |
| | | .select(" c3.name ",Workorder::getTypeName) |
| | | .select(" c4.name ",Workorder::getProblemName) |
| | | .leftJoin(Member.class,Member::getId,Workorder::getMemberId) |
| | | .leftJoin(" category c3 on t.TYPE_ID = c3.id ") //风险类型 |
| | | .leftJoin(" category c4 on t.PROBLEM_ID = c4.id ") //DCA问题编码 |
| | | .eq(pageWrap.getModel().getId() != null, Workorder::getId, pageWrap.getModel().getId()) |
| | | .eq(pageWrap.getModel().getCreator() != null, Workorder::getCreator, pageWrap.getModel().getCreator()) |
| | | .ge(pageWrap.getModel().getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())) |
| | |
| | | .eq(pageWrap.getModel().getSubmitDate() != null, Workorder::getSubmitDate, pageWrap.getModel().getSubmitDate()) |
| | | .eq(pageWrap.getModel().getMemberType() != null, Workorder::getMemberType, pageWrap.getModel().getMemberType()) |
| | | .eq(pageWrap.getModel().getMemberQwids() != null, Workorder::getMemberQwids, pageWrap.getModel().getMemberQwids()) |
| | | .eq(pageWrap.getModel().getMemberNames() != null, Workorder::getMemberNames, pageWrap.getModel().getMemberNames()) |
| | | .like(pageWrap.getModel().getMemberNames() != null, Workorder::getMemberNames, pageWrap.getModel().getMemberNames()) |
| | | .eq(pageWrap.getModel().getLocaltionId() != null, Workorder::getLocaltionId, pageWrap.getModel().getLocaltionId()) |
| | | .eq(pageWrap.getModel().getOutJiuyi() != null, Workorder::getOutJiuyi, pageWrap.getModel().getOutJiuyi()) |
| | | .eq(pageWrap.getModel().getIsYiwushi() != null, Workorder::getIsYiwushi, pageWrap.getModel().getIsYiwushi()) |
| | |
| | | .eq(pageWrap.getModel().getEmialMemberIds() != null, Workorder::getEmialMemberIds, pageWrap.getModel().getEmialMemberIds()) |
| | | .eq(pageWrap.getModel().getQwnoticeMemberIds() != null, Workorder::getQwnoticeMemberIds, pageWrap.getModel().getQwnoticeMemberIds()) |
| | | .eq(pageWrap.getModel().getHappenTime() != null, Workorder::getHappenTime, pageWrap.getModel().getHappenTime()) |
| | | .ge(pageWrap.getModel().getTypeId() != null, Workorder::getTypeId, Utils.Date.getStart(pageWrap.getModel().getTypeId())) |
| | | .le(pageWrap.getModel().getTypeId() != null, Workorder::getTypeId, Utils.Date.getEnd(pageWrap.getModel().getTypeId())) |
| | | .eq(pageWrap.getModel().getTypeId() != null, Workorder::getTypeId, pageWrap.getModel().getTypeId()) |
| | | .eq(pageWrap.getModel().getRiskInfo() != null, Workorder::getRiskInfo, pageWrap.getModel().getRiskInfo()) |
| | | .eq(pageWrap.getModel().getManagerId() != null, Workorder::getManagerId, pageWrap.getModel().getManagerId()) |
| | | .eq(pageWrap.getModel().getDealerId() != null, Workorder::getDealerId, pageWrap.getModel().getDealerId()) |
| | |
| | | .eq(pageWrap.getModel().getDcaYesNum() != null, Workorder::getDcaYesNum, pageWrap.getModel().getDcaYesNum()) |
| | | .eq(pageWrap.getModel().getDcaNoNum() != null, Workorder::getDcaNoNum, pageWrap.getModel().getDcaNoNum()) |
| | | .eq(pageWrap.getModel().getDcaRecordId() != null, Workorder::getDcaRecordId, pageWrap.getModel().getDcaRecordId()) |
| | | .eq(pageWrap.getModel().getDcaCsIds() != null, Workorder::getDcaCsIds, pageWrap.getModel().getDcaCsIds()) |
| | | ; |
| | | for(PageWrap.SortData sortData: pageWrap.getSorts()) { |
| | | if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { |
| | | queryWrapper.orderByDesc(sortData.getProperty()); |
| | | } else { |
| | | queryWrapper.orderByAsc(sortData.getProperty()); |
| | | } |
| | | } |
| | | return PageData.from(workorderMapper.selectPage(page, queryWrapper)); |
| | | .eq(pageWrap.getModel().getDcaCsIds() != null, Workorder::getDcaCsIds, pageWrap.getModel().getDcaCsIds()) ; |
| | | queryWrapper.orderByDesc(Workorder::getCreateDate); |
| | | return PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | return workorderMapper.selectCount(wrapper); |
| | | } |
| | | |
| | | public String getNextCode(Integer type){ |
| | | String date = DateUtil.getFomartDate(new Date(),"yyyyMMddHHmmss"); |
| | | String key = "S"; |
| | | if(Constants.equalsInteger(type,Constants.ONE)){ |
| | | key = "D"; |
| | | }else if(Constants.equalsInteger(type,Constants.THREE)){ |
| | | key = "A"; |
| | | } |
| | | String code = redisTemplate.opsForValue().get(key+"_CODE").toString(); |
| | | if(StringUtils.isEmpty(code)){ |
| | | code = "01"; |
| | | } |
| | | redisTemplate.opsForValue().set(key+"_CODE",Integer.valueOf(code)+1); |
| | | return key + date + org.apache.commons.lang3.StringUtils.leftPad(code,2,"0"); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void initializationCode(){ |
| | | redisTemplate.opsForValue().set("A_CODE",1); |
| | | redisTemplate.opsForValue().set("S_CODE",1); |
| | | redisTemplate.opsForValue().set("D_CODE",1); |
| | | } |
| | | |
| | | |
| | | |
| | | public void closeWorkOrder(CloseDTO closeDTO){ |
| | | if(Objects.isNull(closeDTO) |
| | | || Objects.isNull(closeDTO.getWorkorderId()) |
| | | || org.apache.commons.lang3.StringUtils.isBlank(closeDTO.getInfo()) |
| | | || com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(closeDTO.getMultifileList())){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Workorder workorder = workorderMapper.selectById(closeDTO.getWorkorderId()); |
| | | if(Objects.isNull(workorder)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到工单数据"); |
| | | } |
| | | if(!(Constants.equalsInteger(workorder.getStatus(),Constants.ZERO) |
| | | || Constants.equalsInteger(workorder.getStatus(),Constants.ONE) |
| | | || Constants.equalsInteger(workorder.getStatus(),Constants.TWO))){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"工单状态已流转无法进行操作"); |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |