| | |
| | | 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 |
| | |
| | | .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 |
| | |
| | | .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().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()) |
| | |
| | | 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(),"å·¥åç¶æå·²æµè½¬æ æ³è¿è¡æä½"); |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |