From 4d4394311a96e15ea204e2cae03dda00750d0fdd Mon Sep 17 00:00:00 2001 From: k94314517 <8417338+k94314517@user.noreply.gitee.com> Date: 星期五, 11 四月 2025 17:37:39 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java | 360 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 283 insertions(+), 77 deletions(-) diff --git a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java index d94a076..782492f 100644 --- a/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java +++ b/server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java @@ -14,9 +14,7 @@ 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; @@ -67,6 +65,9 @@ @Autowired private CategoryMapper categoryMapper; + @Autowired + private NoticesMapper noticesMapper; + @Resource(name="sessionRedisTemplate") private RedisTemplate<Object, Serializable> redisTemplate; @@ -85,84 +86,96 @@ 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=姝e父閫氱煡锛�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("銆怱HE浜嬩欢涓婃姤銆�"); - 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("銆怱HE浜嬩欢涓婃姤銆�"); -// 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)?"銆怐CA涓婃姤銆�":"璺岀粖婊戦闄╀笂鎶�"); -// 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=姝e父閫氱煡锛�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("銆怱HE浜嬩欢涓婃姤銆�"); + 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)?"銆怐CA涓婃姤銆�":"璺岀粖婊戦闄╀笂鎶�"); + 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; + } @@ -207,7 +220,8 @@ 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); @@ -256,6 +270,9 @@ .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)){ @@ -332,6 +349,7 @@ 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); } @@ -350,7 +368,7 @@ } @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) @@ -358,14 +376,15 @@ .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)); @@ -390,6 +409,29 @@ 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, @@ -403,7 +445,7 @@ ); 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() @@ -550,6 +592,73 @@ 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)); } @@ -599,12 +708,14 @@ 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銆丏CA宸ュ崟鏃犳硶杩涜璇ユ搷浣�"); } 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浜哄憳鍐呮槸鍚︽湁褰撳墠鐧诲綍璐﹀彿 @@ -612,12 +723,17 @@ 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()) @@ -625,6 +741,9 @@ 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(),"宸ュ崟鐘舵�佸凡娴佽浆"); } @@ -643,6 +762,17 @@ } 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); + } + } + } @@ -691,15 +821,49 @@ 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}) @@ -724,7 +888,12 @@ 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); + } } @@ -759,25 +928,62 @@ }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=鎸夌収瀛e害锛�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"); @@ -798,7 +1004,7 @@ } workOrderDataVOList.add(workOrderDataVO); } - }else if(Constants.equalsInteger(queryType,Constants.ONE)){ + }else if(Constants.equalsInteger(orderDataDTO.getQueryType(),Constants.ONE)){ //鎸夌収瀛e害鏌ヨ for (int i = 1 ; i <= quarter; i++) { List<Workorder> dataList = new ArrayList<>(); -- Gitblit v1.9.3