| | |
| | | import com.doumee.core.utils.qiyeweixin.model.request.QywxTextCardMsgRequest; |
| | | 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.dao.web.dto.PassOnDTO; |
| | | import com.doumee.dao.web.dto.*; |
| | | import com.doumee.dao.web.vo.WorkOrderDataVO; |
| | | import com.doumee.service.business.WorkorderService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | @Autowired |
| | | private CategoryMapper categoryMapper; |
| | | |
| | | @Autowired |
| | | private NoticesMapper noticesMapper; |
| | | |
| | | @Resource(name="sessionRedisTemplate") |
| | | private RedisTemplate<Object, Serializable> redisTemplate; |
| | | |
| | |
| | | Constants.WorkOrderStatus workOrderStatus = Constants.equalsInteger(workorder.getType(),Constants.ZERO)?Constants.WorkOrderStatus.close:Constants.WorkOrderStatus.waitConfirm; |
| | | workorder.setStatus(workOrderStatus.getKey()); |
| | | workorderMapper.insert(workorder); |
| | | |
| | | //存储DCA 问题记录表 |
| | | this.saveProblemData(workorder); |
| | | //存储附件信息 |
| | | this.saveMutiFile(workorder); |
| | | //存储日志 |
| | | this.dealLogData(workorder,workOrderStatus); |
| | | // 发送企微通知 |
| | | QywxSendMsgRequest qywxSendMsgRequest = new QywxSendMsgRequest(); |
| | | qywxSendMsgRequest.setTouser(workorder.getQwnoticeMemberIds().replace(",","|")); |
| | | qywxSendMsgRequest.setMsgtype("text"); |
| | | qywxSendMsgRequest.setAgentid(null); |
| | | QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest(); |
| | | textCard.setTitle(workOrderStatus.getLogTitle()); |
| | | |
| | | qywxSendMsgRequest.setTextcard(textCard); |
| | | QywxUtil.sendMsg(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(), |
| | | qywxSendMsgRequest); |
| | | |
| | | Member member = memberMapper.selectById(workorder.getMemberId()); |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.nonNull(member)&&Objects.nonNull(category)){ |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder,workorder.getQwnoticeMemberIds(),member,category.getName(),Constants.ZERO,null); |
| | | } |
| | | //存储待办人员信息 |
| | | this.saveNotice(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")),workorder.getId(),Constants.ZERO,Constants.ZERO); |
| | | return workorder.getId(); |
| | | } |
| | | |
| | | |
| | | public void sendQwMsg(Workorder workorder){ |
| | | /** |
| | | * 发送通知 |
| | | * @param workorder |
| | | * @param qwIds 消息接收人 |
| | | * @param member 操作人名称 |
| | | * @param categoryName |
| | | * @param contentType 0=正常通知;1=催促;2=抄送 3=已处理一项/任务已处理 |
| | | * @param csInfo 抄送信息 |
| | | */ |
| | | public void sendQwMsg(Workorder workorder,String qwIds,Member member,String categoryName,Integer contentType,String csInfo){ |
| | | QywxSendMsgRequest qywxSendMsgRequest = new QywxSendMsgRequest(); |
| | | QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest(); |
| | | qywxSendMsgRequest.setMsgtype("text"); |
| | | qywxSendMsgRequest.setAgentid(null); |
| | | textCard.setBtntxt("详情"); |
| | | //新提交 |
| | | if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){ |
| | | qywxSendMsgRequest.setTouser(workorder.getQwnoticeMemberIds().replace(",","|")); |
| | | textCard.setUrl(null); |
| | | //SHE 提交 |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | Category category = categoryMapper.selectById(workorder.getType()); |
| | | textCard.setTitle("【SHE事件上报】"); |
| | | String message = ""; |
| | | if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){ |
| | | message = "本人"; |
| | | }else { |
| | | message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"同事":"供应商"; |
| | | } |
| | | message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + category.getName(); |
| | | textCard.setDescription(" <div class=\"normal\">"+message+"</div>"); |
| | | }else{ |
| | | |
| | | qywxSendMsgRequest.setTouser(qwIds.replace(",","|")); |
| | | qywxSendMsgRequest.setAgentid(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_AGENTID).getCode()); |
| | | String sendUser = ""; |
| | | if(Objects.nonNull(member)){ |
| | | if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getName())){ |
| | | sendUser = member.getName(); |
| | | } |
| | | if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getCompanyName())){ |
| | | sendUser = member.getCompanyName()+"/" + sendUser ; |
| | | } |
| | | } |
| | | QywxTextCardMsgRequest textCard = this.dealMessageContent(workorder,sendUser,categoryName,contentType,csInfo); |
| | | qywxSendMsgRequest.setTextcard(textCard); |
| | | QywxUtil.sendMsg(systemDictDataBiz.queryByCode(Constants.QYWX,Constants.QYWX_TOKEN).getCode(), |
| | | qywxSendMsgRequest); |
| | | } |
| | | |
| | | |
| | | // public QywxTextCardMsgRequest dealMessageContent(Workorder workorder,Integer type){ |
| | | // QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest(); |
| | | // String message = ""; |
| | | // if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | // Category category = categoryMapper.selectById(workorder.getType()); |
| | | // textCard.setTitle("【SHE事件上报】"); |
| | | // if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){ |
| | | // message = "本人"; |
| | | // }else { |
| | | // message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"同事":"供应商"; |
| | | // } |
| | | // message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + category.getName(); |
| | | // textCard.setDescription(" <div class=\"normal\">"+message+"</div>"); |
| | | // }else{ |
| | | // textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"【DCA上报】":"跌绊滑风险上报"); |
| | | // if(Constants.equalsInteger(workorder.getType(),Con)){ |
| | | // |
| | | // } |
| | | // |
| | | // |
| | | // |
| | | // } |
| | | // |
| | | // } |
| | | private static final String [] qwDetailUrls = {"/pages/details_she/details_she","/pages/workOrder_dca/workOrder_dca","","/pages/workOrder_she/workOrder_she"}; |
| | | |
| | | /** |
| | | * 通知文案整理 |
| | | * @param workorder |
| | | * @param userName 操作人名称 部门+名称 |
| | | * @param categoryName |
| | | * @param contentType 0=正常通知;1=催促(跌绊滑/DCA);2=抄送(DCA) 3=已处理一项/任务已处理 |
| | | * @param csInfo 抄送信息 |
| | | * @return |
| | | */ |
| | | public QywxTextCardMsgRequest dealMessageContent(Workorder workorder,String userName ,String categoryName,Integer contentType,String csInfo){ |
| | | QywxTextCardMsgRequest textCard = new QywxTextCardMsgRequest(); |
| | | String message = ""; |
| | | textCard.setUrl(qwDetailUrls[workorder.getType()]+"?id="+workorder.getId()); |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | textCard.setTitle("【SHE事件上报】"); |
| | | if(Constants.equalsInteger(workorder.getMemberType(),Constants.ZERO)){ |
| | | message = "本人"; |
| | | }else { |
| | | message = Constants.equalsInteger(workorder.getMemberType(),Constants.ONE)?"同事":"供应商"; |
| | | } |
| | | message = message + "-" + workorder.getMemberNames() + " " + DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") + workorder.getLocationName() + categoryName; |
| | | textCard.setDescription(" <div class=\"normal\">"+message+"</div>"); |
| | | }else{ |
| | | textCard.setTitle(Constants.equalsInteger(workorder.getType(),Constants.ONE)?"【DCA上报】":"跌绊滑风险上报"); |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.THREE)){ |
| | | message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":"任务已处理")) +"</div>"; |
| | | message = message + " <div class=\"normal\">"+ DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") +"/"+ workorder.getLocationName() +"/"+ categoryName+"</div>"; |
| | | }else{ |
| | | message = message + " <div class=\"normal\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"系统") + (Constants.equalsInteger(contentType,Constants.ZERO)?"任务分配给你":(Constants.equalsInteger(contentType,Constants.ONE)?"对该工单进行了催促,请尽快处理":((Constants.equalsInteger(contentType,Constants.TWO)?"抄送给你":"已处理一项")))) +"</div>"; |
| | | message = message + " <div class=\"normal\">观察主题"+ categoryName +"</div>"; |
| | | message = message + " <div class=\"normal\">符合:"+ workorder.getDcaYesNum() +" 不符合:"+workorder.getDcaNoNum()+"</div>"; |
| | | if(Constants.equalsInteger(contentType,Constants.TWO)){ |
| | | message = message + " <div class=\"normal\">说明:"+ csInfo +"</div>"; |
| | | } |
| | | } |
| | | textCard.setDescription(message); |
| | | } |
| | | return textCard; |
| | | } |
| | | |
| | | |
| | | |
| | |
| | | dcaWorkOrder.setCreateDate(new Date()); |
| | | dcaWorkOrder.setEditDate(new Date()); |
| | | dcaWorkOrder.setMemberId(workorder.getMemberId()); |
| | | dcaWorkOrder.setTypeId(dcaNoProblemDTO.getProblemId()); |
| | | dcaWorkOrder.setTypeId(workorder.getTypeId()); |
| | | dcaWorkOrder.setCategoryId(Integer.toString(problem.getParentId())); |
| | | dcaWorkOrder.setType(Constants.TWO); |
| | | dcaWorkOrder.setStatus(workOrderStatus.getKey()); |
| | | dcaWorkOrder.setIsdeleted(Constants.ZERO); |
| | |
| | | .eq(Managers::getIsdeleted,Constants.ZERO) |
| | | .eq(Managers::getType,Constants.ZERO).orderByAsc(Managers::getSortnum) |
| | | ); |
| | | if(Objects.isNull(managersList)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到SHE处理抄送人员"); |
| | | } |
| | | 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)){ |
| | |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ONE)){ |
| | | if(Objects.isNull(workorder.getDcaYesNum()) |
| | | || Objects.isNull(workorder.getDcaNoNum()) |
| | | || Objects.isNull(workorder.getCategoryId()) |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Workorder getDetail(Integer id){ |
| | | public Workorder getDetail(Integer id,Member member){ |
| | | Workorder workorder = workorderMapper.selectJoinOne(Workorder.class, |
| | | new MPJLambdaWrapper<Workorder>() |
| | | .selectAll(Workorder.class) |
| | |
| | | .selectAs(Member::getName,Workorder::getMemberName) |
| | | .selectAs(Member::getCompanyName,Workorder::getCompanyName) |
| | | .select(" c3.name ",Workorder::getTypeName) |
| | | .select(" c4.name ",Workorder::getProblemName) |
| | | .select(" c4.name ",Workorder::getCategoryName) |
| | | .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问题编码 |
| | | .leftJoin(" category c4 on t.CATEGORY_ID = c4.id ") //DCA问题编码 |
| | | .eq(Workorder::getId,id) |
| | | .last(" limit 1 ") |
| | | ); |
| | | if(Objects.nonNull(workorder)){ |
| | | this.dealButton(workorder,member); |
| | | //查询附件信息 |
| | | List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda().eq(Multifile::getIsdeleted,Constants.ZERO) |
| | | .eq(Multifile::getObjId,workorder.getId()).orderByAsc(Multifile::getId)); |
| | |
| | | return workorder; |
| | | } |
| | | |
| | | public void dealButton(Workorder workorder,Member member){ |
| | | workorder.setPassOnButton(Constants.ZERO); |
| | | workorder.setCloseButton(Constants.ZERO); |
| | | if(org.apache.commons.lang3.StringUtils.isNotBlank(member.getQwId())){ |
| | | List<String> closeUserList = new ArrayList<>(); |
| | | closeUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(","))); |
| | | closeUserList.add(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getManagerId())?workorder.getManagerId():null); |
| | | closeUserList.add(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getDealerId())?workorder.getDealerId():null); |
| | | workorder.setCloseButton(closeUserList.stream().filter(i->i.equals(member.getQwId())).collect(Collectors.toList()).size()>Constants.ZERO?Constants.ONE:Constants.ZERO); |
| | | List<String> passOnUserList = new ArrayList<>(); |
| | | //待分配状态 处理转交按钮 |
| | | if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){ |
| | | passOnUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(","))); |
| | | }else if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())){ |
| | | closeUserList.add(workorder.getManagerId()); |
| | | } |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(passOnUserList)){ |
| | | workorder.setPassOnButton(passOnUserList.stream().filter(i->i.equals(member.getQwId())).collect(Collectors.toList()).size()>Constants.ZERO?Constants.ONE:Constants.ZERO); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public List<WorkorderLog> getLogList(Integer orderId){ |
| | | List<WorkorderLog> logList = workorderLogMapper.selectJoinList(WorkorderLog.class, |
| | |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(logList)){ |
| | | String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() |
| | | +systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_FILE_PATH).getCode(); |
| | | +systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_LOG_FILE_PATH).getCode(); |
| | | for (WorkorderLog workorderLog:logList) { |
| | | //查询附件信息 |
| | | List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda() |
| | |
| | | Utils.MP.blankToNull(pageWrap.getModel()); |
| | | pageWrap.getModel().setIsdeleted(Constants.ZERO); |
| | | MPJLambdaWrapper<Workorder> queryWrapper = getJoinQueryMapper(pageWrap.getModel()); |
| | | queryWrapper |
| | | .selectAll(Workorder.class) |
| | | .selectAs(Member::getName,Workorder::getMemberName) |
| | | .selectAs(Member::getCompanyName,Workorder::getCompanyName) |
| | | .selectAs(Member::getPhone,Workorder::getMemberPhone) |
| | | .select(" c2.name ",Workorder::getCategoryName) |
| | | .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问题编码 |
| | | .leftJoin(" category c2 on t.CATEGORY_ID = c2.id ") //DCA问题编码 |
| | | .apply(Objects.nonNull(pageWrap.getModel().getMyWorkOrder())&& org.apache.commons.lang3.StringUtils.isNotBlank(pageWrap.getModel().getQwId()) |
| | | &&Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getMyWorkOrder()), |
| | | " ( t.id in ( select OBJ_ID from notices where param1 = '"+pageWrap.getModel().getQwId()+"' )) ") |
| | | .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())) |
| | | .le(pageWrap.getModel().getCreateDate() != null, Workorder::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())) |
| | | .eq(pageWrap.getModel().getEditor() != null, Workorder::getEditor, pageWrap.getModel().getEditor()) |
| | | .ge(pageWrap.getModel().getEditDate() != null, Workorder::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())) |
| | | .le(pageWrap.getModel().getEditDate() != null, Workorder::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())) |
| | | .eq(pageWrap.getModel().getIsdeleted() != null, Workorder::getIsdeleted, pageWrap.getModel().getIsdeleted()) |
| | | .eq(pageWrap.getModel().getCategoryId() != null, Workorder::getCategoryId, pageWrap.getModel().getCategoryId()) |
| | | .eq(pageWrap.getModel().getRemark() != null, Workorder::getRemark, pageWrap.getModel().getRemark()) |
| | | .eq(pageWrap.getModel().getStatus() != null, Workorder::getStatus, pageWrap.getModel().getStatus()) |
| | | .eq(pageWrap.getModel().getSortnum() != null, Workorder::getSortnum, pageWrap.getModel().getSortnum()) |
| | | .eq(pageWrap.getModel().getType() != null, Workorder::getType, pageWrap.getModel().getType()) |
| | | .eq(pageWrap.getModel().getMemberId() != null, Workorder::getMemberId, pageWrap.getModel().getMemberId()) |
| | | .eq(pageWrap.getModel().getCompanyId() != null, Workorder::getCompanyId, pageWrap.getModel().getCompanyId()) |
| | | .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()) |
| | | .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().getIsHurted() != null, Workorder::getIsHurted, pageWrap.getModel().getIsHurted()) |
| | | .eq(pageWrap.getModel().getWorkRelated() != null, Workorder::getWorkRelated, pageWrap.getModel().getWorkRelated()) |
| | | .eq(pageWrap.getModel().getEventInfo() != null, Workorder::getEventInfo, pageWrap.getModel().getEventInfo()) |
| | | .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()) |
| | | .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()) |
| | | .ge(pageWrap.getModel().getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getStart(pageWrap.getModel().getDispatchTime())) |
| | | .le(pageWrap.getModel().getDispatchTime() != null, Workorder::getDispatchTime, Utils.Date.getEnd(pageWrap.getModel().getDispatchTime())) |
| | | .eq(pageWrap.getModel().getDispatchInfo() != null, Workorder::getDispatchInfo, pageWrap.getModel().getDispatchInfo()) |
| | | .ge(pageWrap.getModel().getDealTime() != null, Workorder::getDealTime, Utils.Date.getStart(pageWrap.getModel().getDealTime())) |
| | | .le(pageWrap.getModel().getDealTime() != null, Workorder::getDealTime, Utils.Date.getEnd(pageWrap.getModel().getDealTime())) |
| | | .eq(pageWrap.getModel().getDealInfo() != null, Workorder::getDealInfo, pageWrap.getModel().getDealInfo()) |
| | | .eq(pageWrap.getModel().getProblemTitle() != null, Workorder::getProblemTitle, pageWrap.getModel().getProblemTitle()) |
| | | .eq(pageWrap.getModel().getProblemId() != null, Workorder::getProblemId, pageWrap.getModel().getProblemId()) |
| | | .eq(pageWrap.getModel().getProblemInfo() != null, Workorder::getProblemInfo, pageWrap.getModel().getProblemInfo()) |
| | | .eq(pageWrap.getModel().getLocationName() != null, Workorder::getLocationName, pageWrap.getModel().getLocationName()) |
| | | .like(pageWrap.getModel().getCode() != null, Workorder::getCode, pageWrap.getModel().getCode()) |
| | | .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()) ; |
| | | if (pageWrap.getModel().getMemberName() != null) { |
| | | queryWrapper.and( ms->ms.like(Member::getName,pageWrap.getModel().getMemberName()) |
| | | .or().like(Member::getPhone,pageWrap.getModel().getMemberName()) ); |
| | | } |
| | | queryWrapper.orderByDesc(Workorder::getCreateDate); |
| | | return PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper)); |
| | | } |
| | | |
| | |
| | | if(Objects.isNull(workorder)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到工单数据"); |
| | | } |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"SHE工单无法进行该操作"); |
| | | if(Constants.equalsInteger(workorder.getType(),Constants.ZERO)||Constants.equalsInteger(workorder.getType(),Constants.ONE)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"SHE、DCA工单无法进行该操作"); |
| | | } |
| | | if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.sheClose.getKey())||Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.wtsClose.getKey())||Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.close.getKey())){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"工单状态已流转"); |
| | | } |
| | | //企微通知人 企微主键 |
| | | List<String> qwIds = new ArrayList<>(); |
| | | //提交后的 待确认/待初审状态 如果去关闭 只有工单里绑定的SHE人员可以关闭 |
| | | if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){ |
| | | //判断SHE人员内是否有当前登录账号 |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理"); |
| | | } |
| | | workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey()); |
| | | qwIds = Arrays.asList(workorder.getQwnoticeMemberIds()); |
| | | qwIds.remove(closeDTO.getMember().getQwId()); |
| | | }else if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())){ |
| | | //判断SHE人员内是否有当前登录账号 |
| | | if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO && !workorder.getManagerId().equals(closeDTO.getMember().getQwId())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理"); |
| | | } |
| | | workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey()); |
| | | qwIds = Arrays.asList(workorder.getQwnoticeMemberIds()); |
| | | qwIds.add(workorder.getManagerId()); |
| | | qwIds.remove(closeDTO.getMember().getQwId()); |
| | | }else if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey())){ |
| | | //判断SHE人员内是否有当前登录账号 |
| | | if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO && !workorder.getManagerId().equals(closeDTO.getMember().getQwId()) |
| | |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,当前工单非您的工单,无法进行处理"); |
| | | } |
| | | workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey()); |
| | | qwIds = Arrays.asList(workorder.getQwnoticeMemberIds()); |
| | | qwIds.add(workorder.getDealerId()); |
| | | qwIds.remove(closeDTO.getMember().getQwId()); |
| | | }else{ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"工单状态已流转"); |
| | | } |
| | |
| | | } |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | //发送企微通知 |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(qwIds)){ |
| | | Set<String> qwIdSet = new HashSet<>(qwIds); |
| | | String qwIdStr = String.join(",", qwIdSet); |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.nonNull(closeDTO.getMember())&&Objects.nonNull(category)&& org.apache.commons.lang3.StringUtils.isNotBlank(qwIdStr)){ |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder,qwIdStr,closeDTO.getMember(),category.getName(),Constants.THREE,null); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){ |
| | | for (Multifile multifile:multifileList) { |
| | | multifile.setObjId(logId); |
| | | multifile.setIsdeleted(Constants.ZERO); |
| | | multifile.setCreateDate(new Date()); |
| | | multifile.setObjType(Constants.multiFileType.passOn); |
| | | } |
| | | multifileMapper.insert(multifileList); |
| | | } |
| | | //TODO 企业微信通知 |
| | | //企业微信通知 |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.nonNull(passOnDTO.getMember())&&Objects.nonNull(category)){ |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder,member.getQwId(),passOnDTO.getMember(),category.getName(),Constants.ZERO,null); |
| | | } |
| | | //存储待办人员信息 |
| | | this.saveNotice(Arrays.asList(passOnDTO.getMember().getQwId().split(",")),workorder.getId(),Constants.ZERO,Constants.TWO); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void sendCopy(SendCopyDTO sendCopyDTO) { |
| | | if (Objects.isNull(sendCopyDTO) |
| | | || Objects.isNull(sendCopyDTO.getWorkorderId()) |
| | | || StringUtils.isEmpty(sendCopyDTO.getUserIds())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | Workorder workorder = workorderMapper.selectById(sendCopyDTO.getWorkorderId()); |
| | | if (Objects.isNull(workorder)) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted, Constants.ZERO) |
| | | .isNotNull(Member::getQwId) |
| | | .in(Member::getId, sendCopyDTO.getUserIds().split(","))); |
| | | if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(memberList)) { |
| | | List<String> qwIdList = memberList.stream().map(i -> i.getQwId()).collect(Collectors.toList()); |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if (Objects.nonNull(category)) { |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder, String.join(",", qwIdList), sendCopyDTO.getMember(), category.getName(), Constants.ONE, null); |
| | | } |
| | | //存储待办信息 |
| | | this.saveNotice(qwIdList, workorder.getId(), Constants.ONE, Constants.ONE); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | |
| | | this.saveLog(null,workorder, |
| | | Constants.ONE |
| | | ,member.getId(),"催促","已催促 "+urgeUser.getCompanyName() + "/" + urgeUser.getName()); |
| | | //TODO 发送企微通知 |
| | | //发送企微通知 |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.nonNull(category)){ |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder,urgeUser.getQwId(),null,category.getName(),Constants.ONE,null); |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | }else{ |
| | | return; |
| | | } |
| | | //TODO 发送企微通知 |
| | | //发送企微通知 |
| | | Category category = categoryMapper.selectById(workorder.getTypeId()); |
| | | if(Objects.nonNull(category)){ |
| | | // 发送企微通知 |
| | | this.sendQwMsg(workorder,urgeUser.getQwId(),null,category.getName(),Constants.ONE,null); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void saveNotice(List<String> qwIdList ,Integer workorderId,Integer isSendCopy,Integer type){ |
| | | List<Notices> noticesList = new ArrayList<>(); |
| | | for (String qwId:qwIdList) { |
| | | //存储抄送记录 |
| | | Notices notices = new Notices(); |
| | | notices.setCreateDate(new Date()); |
| | | notices.setIsdeleted(Constants.ZERO); |
| | | notices.setObjId(workorderId); |
| | | notices.setObjType(Constants.ZERO+""); |
| | | notices.setStatus(Constants.ZERO); |
| | | notices.setSendacopy(isSendCopy); |
| | | notices.setParam1(qwId); |
| | | notices.setType(Integer.toString(type)); |
| | | noticesList.add(notices); |
| | | } |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(noticesList)){ |
| | | noticesMapper.insert(noticesList); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 数据报表 |
| | | * @param queryType 0=按照月份;1=按照季度;2=按照年份(暂不处理) |
| | | * SHE / 跌绊滑报表 |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @Override |
| | | public List<WorkOrderDataVO> getWorkOrderData(Integer queryType) throws Exception { |
| | | public List<WorkOrderDataVO> getWorkOrderData(OrderDataDTO orderDataDTO) throws Exception { |
| | | if (Objects.isNull(orderDataDTO.getQueryType())||Objects.isNull(orderDataDTO.getOrderType())) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | String year = DateUtil.getNowYear(); |
| | | Integer nowMonth = DateUtil.getNowMonth(); |
| | | Integer quarter = (nowMonth - 1) / 3 + 1; |
| | | List<WorkOrderDataVO> workOrderDataVOList = new ArrayList<>(); |
| | | //查询今年所有的数据 |
| | | List<Workorder> workorderList = workorderMapper.selectList(new QueryWrapper<Workorder>().lambda().like(Workorder::getCreateDate,year) |
| | | List<Workorder> workorderList = workorderMapper.selectJoinList(Workorder.class,new MPJLambdaWrapper<Workorder>() |
| | | .selectAll(Workorder.class) |
| | | .leftJoin(" category c1 on c1.id = t.type_id " ) |
| | | .leftJoin(" category c2 on c2.id = t.localtion_id " ) |
| | | .apply(Objects.nonNull(orderDataDTO.getTypeId())," find_in_set("+orderDataDTO.getTypeId()+", REPLACE(c1.ID_PATH,'/',',') ) ") |
| | | .apply(Objects.nonNull(orderDataDTO.getLocationId())," find_in_set("+orderDataDTO.getLocationId()+", REPLACE(c2.ID_PATH,'/',',') ) ") |
| | | .like(Workorder::getCreateDate,year) |
| | | .eq(Workorder::getType,orderDataDTO.getOrderType()) |
| | | .eq(Workorder::getIsdeleted,Constants.ZERO)); |
| | | if(Constants.equalsInteger(queryType,Constants.ZERO)){ |
| | | if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ZERO)){ |
| | | for (int i = 1 ; i <= nowMonth; i++) { |
| | | WorkOrderDataVO workOrderDataVO = new WorkOrderDataVO(); |
| | | String monthDay = year + "-" + org.apache.commons.lang3.StringUtils.leftPad(nowMonth.toString(),2,"0"); |
| | |
| | | } |
| | | workOrderDataVOList.add(workOrderDataVO); |
| | | } |
| | | }else if(Constants.equalsInteger(queryType,Constants.ONE)){ |
| | | }else if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ONE)){ |
| | | //按照季度查询 |
| | | for (int i = 1 ; i <= quarter; i++) { |
| | | List<Workorder> dataList = new ArrayList<>(); |