From 7e10354b263015632ff787221f0ca3c8a18224c2 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期四, 26 六月 2025 14:16:41 +0800
Subject: [PATCH] 工单业务
---
server/src/main/java/com/doumee/service/business/impl/WorkorderServiceImpl.java | 108 ++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 80 insertions(+), 28 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 8b80a22..5ddb640 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
@@ -94,6 +94,7 @@
//澶勭悊SHE浜嬩欢鐘舵��
Constants.WorkOrderStatus workOrderStatus = Constants.equalsInteger(workorder.getType(),Constants.ZERO)?Constants.WorkOrderStatus.close:Constants.WorkOrderStatus.waitConfirm;
workorder.setStatus(workOrderStatus.getKey());
+ workorder.setSheDealUserQwIds(workorder.getQwnoticeMemberIds());
workorderMapper.insert(workorder);
//瀛樺偍DCA 闂璁板綍琛�
@@ -185,8 +186,11 @@
}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\">"+ (org.apache.commons.lang3.StringUtils.isNotBlank(userName)?userName:"绯荤粺") + (Constants.equalsInteger(contentType,Constants.ZERO)?"浠诲姟鍒嗛厤缁欎綘":(Constants.equalsInteger(contentType,Constants.ONE)?"瀵硅宸ュ崟杩涜浜嗗偓淇冿紝璇峰敖蹇鐞�":((Constants.equalsInteger(contentType,Constants.TWO)?"鎶勯�佺粰浣�":"浠诲姟宸插鐞�")))) +"</div>";//:"浠诲姟宸插鐞�")) +"</div>";
message = message + " <div class=\"normal\">"+ DateUtil.formatDate(new Date(),"yyyy-MM-dd HH:mm") +"/"+ workorder.getLocationName() +"/"+ categoryName+"</div>";
+ if(Constants.equalsInteger(contentType,Constants.TWO)){
+ message = message + " <div class=\"normal\">璇存槑 "+ csInfo +"</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>";
@@ -207,7 +211,7 @@
//澶勭悊涓婃姤鏃ュ織 DCA宸ュ崟 鏃ュ織瀛樺偍鑷冲瓙涓氬姟 涓嶅瓨鍦ㄤ簬鐖剁骇 涓庤穼缁婃粦
String logTitle = Constants.equalsInteger(workorder.getType(), Constants.THREE) ? "璺岀粖婊戦闄�" : "DCA";
workorder.setCreateDate(workorder.getSubmitDate());
- this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId(),workOrderStatus.getLogTitle().replace("{title}",logTitle),null,null);
+ this.saveLog(null,workorder,Constants.ZERO,workorder.getMemberId(),workOrderStatus.getLogTitle().replace("{title}",logTitle),null,null,null);
}
}
@@ -269,6 +273,7 @@
dcaWorkOrder.setEventInfo(dcaNoProblemDTO.getEventInfo());
dcaWorkOrder.setQwnoticeMemberIds(workorder.getQwnoticeMemberIds());
dcaWorkOrder.setMemberNames(workorder.getMemberNames());
+ dcaWorkOrder.setSheDealUserQwIds(dcaWorkOrder.getQwnoticeMemberIds());
workorderMapper.insert(dcaWorkOrder);
//瀛樺偍鏃ュ織
this.dealLogData(dcaWorkOrder,workOrderStatus);
@@ -404,7 +409,7 @@
* @param memberId
* @param paramr2 杞氦缁欑殑澶勭悊浜�
*/
- public Integer saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId,String title,String content,String paramr2){
+ public Integer saveLog(String beforeJson,Workorder afterWorkorder,Integer objType,Integer memberId,String title,String content,String paramr2,String remark){
WorkorderLog workorderLog = new WorkorderLog();
workorderLog.setCreateDate(afterWorkorder.getEditDate());
workorderLog.setEditDate(afterWorkorder.getEditDate());
@@ -417,6 +422,7 @@
workorderLog.setObjType(objType);
workorderLog.setTitle(title);
workorderLog.setContent(content);
+ workorderLog.setRemark(remark);
workorderLogMapper.insert(workorderLog);
return workorderLog.getId();
}
@@ -442,7 +448,7 @@
if(Objects.isNull(workorder.getMemberType())
|| Objects.isNull(workorder.getOutJiuyi())
|| (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Objects.isNull(workorder.getIsYiwushi()))
- || (Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted()))
+ || (Constants.equalsInteger(workorder.getOutJiuyi(),Constants.ZERO) && Constants.equalsInteger(workorder.getIsYiwushi(),Constants.ZERO) && Objects.isNull(workorder.getIsHurted()))
|| Objects.isNull(workorder.getWorkRelated())
|| (Constants.equalsInteger(workorder.getMemberType(),Constants.TWO) && StringUtils.isEmpty(workorder.getMemberNames()))
|| (Constants.equalsInteger(workorder.getMemberType(),Constants.ONE) && StringUtils.isEmpty(workorder.getMemberQwids()))
@@ -501,10 +507,12 @@
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
+ workorder.setStatusName(Constants.WorkOrderStatus.getStatusName(workorder.getStatus()));
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));
+ .eq(Multifile::getObjType,Constants.multiFileType.upload)
+ .eq(Multifile::getObjId,workorder.getId().toString()).orderByAsc(Multifile::getId));
String path = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()
+systemDictDataBiz.queryByCode(Constants.FTP,Constants.WORKORDER_FILE_PATH).getCode();
@@ -526,6 +534,7 @@
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(dcaChildList)){
for (Workorder dcaChild:dcaChildList) {
this.dealButton(dcaChild,member);
+ dcaChild.setStatusName(Constants.WorkOrderStatus.getStatusName(dcaChild.getStatus()));
}
workorder.setManagerId(dcaChildList.stream().filter(i->Objects.nonNull(i.getManagerId())).map(i->i.getManagerId()).collect(Collectors.joining(",")));
}
@@ -542,7 +551,7 @@
if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getQwnoticeMemberIds())&&
(Constants.equalsInteger(workorder.getStatus(),Constants.ZERO)||
Constants.equalsInteger(workorder.getStatus(),Constants.ONE)||Constants.equalsInteger(workorder.getStatus(),Constants.TWO))){
- closeUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
+ closeUserList.addAll(Arrays.asList(workorder.getSheDealUserQwIds().split(",")));
}
if(org.apache.commons.lang3.StringUtils.isNotBlank(workorder.getManagerId())&&
(Constants.equalsInteger(workorder.getStatus(),Constants.ONE)||Constants.equalsInteger(workorder.getStatus(),Constants.TWO))){
@@ -559,7 +568,7 @@
//寰呭垎閰嶇姸鎬� 澶勭悊杞氦鎸夐挳
if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())
){
- passOnUserList.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
+ passOnUserList.addAll(Arrays.asList(workorder.getSheDealUserQwIds().split(",")));
}
if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())
|| Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey())
@@ -613,18 +622,19 @@
}
}
}
-
- //鏌ヨ闄勪欢淇℃伅
- List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
- .eq(Multifile::getIsdeleted,Constants.ZERO)
- .ne(Multifile::getObjType,Constants.multiFileType.upload)
- .eq(Multifile::getObjId,workorderLog.getId())
- .orderByAsc(Multifile::getId));
- if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
- for (Multifile multifile:multifileList) {
- multifile.setFileurlFull(path+multifile.getFileurl());
+ if(!Constants.equalsInteger(workorderLog.getObjType(),Constants.FOUR)){
+ //鏌ヨ闄勪欢淇℃伅
+ List<Multifile> multifileList = multifileMapper.selectList(new QueryWrapper<Multifile>().lambda()
+ .eq(Multifile::getIsdeleted,Constants.ZERO)
+ .ne(Multifile::getObjType,Constants.multiFileType.upload)
+ .eq(Multifile::getObjId,workorderLog.getId())
+ .orderByAsc(Multifile::getId));
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
+ for (Multifile multifile:multifileList) {
+ multifile.setFileurlFull(path+multifile.getFileurl());
+ }
+ workorderLog.setMultifileList(multifileList);
}
- workorderLog.setMultifileList(multifileList);
}
}
}
@@ -706,7 +716,8 @@
.ne(org.apache.commons.lang3.StringUtils.isNotBlank(pageWrap.getQwId()),Workorder::getType,Constants.TWO)
.in(Objects.nonNull(pageWrap.getDealStatus())&&
Constants.equalsInteger(pageWrap.getDealStatus(),Constants.ZERO),
- Workorder::getStatus,Constants.WorkOrderStatus.waitConfirm.getKey(),Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey())
+ Workorder::getStatus,Constants.WorkOrderStatus.waitConfirm.getKey(),
+ Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey())
.in(Objects.nonNull(pageWrap.getDealStatus())&&
Constants.equalsInteger(pageWrap.getDealStatus(),Constants.ONE),
Workorder::getStatus,Constants.WorkOrderStatus.sheClose.getKey(),Constants.WorkOrderStatus.close.getKey(),Constants.WorkOrderStatus.wtsClose.getKey())
@@ -774,7 +785,13 @@
Utils.MP.blankToNull(pageWrap.getModel());
pageWrap.getModel().setIsdeleted(Constants.ZERO);
MPJLambdaWrapper<Workorder> queryWrapper = getJoinQueryMapper(pageWrap.getModel());
- return PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper));
+ PageData<Workorder> result = PageData.from(workorderMapper.selectJoinPage(page,Workorder.class, queryWrapper));
+ if(result!=null && result.getRecords()!=null){
+ for(Workorder w : result.getRecords()){
+ w.setStatusName(Constants.WorkOrderStatus.getStatusName(w.getStatus()));
+ }
+ }
+ return result;
}
@Override
@@ -836,7 +853,7 @@
//鎻愪氦鍚庣殑 寰呯‘璁�/寰呭垵瀹$姸鎬� 濡傛灉鍘诲叧闂� 鍙湁宸ュ崟閲岀粦瀹氱殑SHE浜哄憳鍙互鍏抽棴
if(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
//鍒ゆ柇SHE浜哄憳鍐呮槸鍚︽湁褰撳墠鐧诲綍璐﹀彿
- if(workorder.getQwnoticeMemberIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO){
+ if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
}
workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
@@ -844,20 +861,34 @@
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())){
+ if(workorder.getSheDealUserQwIds().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());
+ if(workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
+ workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+ }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
+ workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
+ }
qwIds.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
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())
+ if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())<Constants.ZERO && !workorder.getManagerId().equals(closeDTO.getMember().getQwId())
&& !workorder.getDealerId().equals(closeDTO.getMember().getQwId()) ){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
}
- workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+ if(workorder.getManagerId().equals(closeDTO.getMember().getQwId())){
+ workorder.setStatus(Constants.WorkOrderStatus.wtsClose.getKey());
+ }else if(workorder.getDealerId().equals(closeDTO.getMember().getQwId())){
+ workorder.setStatus(Constants.WorkOrderStatus.close.getKey());
+ }else if(workorder.getSheDealUserQwIds().indexOf(closeDTO.getMember().getQwId())>Constants.ZERO){
+ workorder.setStatus(Constants.WorkOrderStatus.sheClose.getKey());
+ }else{
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝褰撳墠宸ュ崟闈炴偍鐨勫伐鍗曪紝鏃犳硶杩涜澶勭悊");
+ }
qwIds.addAll(Arrays.asList(workorder.getQwnoticeMemberIds().split(",")));
qwIds.add(workorder.getManagerId());
qwIds.remove(closeDTO.getMember().getQwId());
@@ -867,9 +898,21 @@
workorder.setEditDate(new Date());
workorder.setDealTime(new Date());
workorder.setDealInfo(closeDTO.getInfo());
+ //瀛愬伐鍗� 鍒欐煡璇㈢埗绾у伐鍗曟暟鎹� 鏄惁浠樺瓨鍦ㄦ湭瀹屾垚鐨� 濡傛灉涓嶅瓨鍦ㄦ湭瀹屾垚鐨勫垯杩涜涓诲伐鍗曠姸鎬佸彉鍖�
+ if(Constants.equalsInteger(workorder.getType(),Constants.TWO)&&
+ workorderMapper.selectCount(new QueryWrapper<Workorder>().lambda().eq(Workorder::getDcaRecordId,workorder.getDcaRecordId()).eq(Workorder::getIsdeleted,Constants.ZERO)
+ .ne(Workorder::getId,workorder.getId()).in(Workorder::getStatus,
+ Constants.WorkOrderStatus.waitConfirm.getKey(),Constants.WorkOrderStatus.waitAllocation.getKey(),Constants.WorkOrderStatus.waitDeal.getKey()
+ ))<=Constants.ZERO){
+ Workorder parentWorkorder = new Workorder();
+ parentWorkorder.setId(workorder.getDcaRecordId());
+ parentWorkorder.setEditDate(new Date());
+ parentWorkorder.setStatus(Constants.WorkOrderStatus.close.getKey());
+ workorderMapper.updateById(parentWorkorder);
+ }
workorderMapper.updateById(workorder);
//澶勭悊涓婃姤鏃ュ織
- Integer logId = this.saveLog(beforeJson,workorder,Constants.THREE,closeDTO.getMember().getId(),"浠诲姟宸插鐞�",closeDTO.getInfo(),null);
+ Integer logId = this.saveLog(beforeJson,workorder,Constants.THREE,closeDTO.getMember().getId(),"浠诲姟宸插鐞�",closeDTO.getInfo(),null,closeDTO.getInfo());
List<Multifile> multifileList = closeDTO.getMultifileList();
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
for (Multifile multifile:multifileList) {
@@ -918,12 +961,20 @@
if(!Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitConfirm.getKey())){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"宸ュ崟鐘舵�佸凡娴佽浆");
}
+ if(workorder.getSheDealUserQwIds().indexOf(passOnDTO.getMember().getQwId())<Constants.ZERO){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝闈炲甫鎮ㄥ鐞嗙殑宸ュ崟锛屾棤娉曡繘琛岃鎿嶄綔");
+ }
workorder.setManagerId(member.getQwId());
workorder.setStatus(Constants.WorkOrderStatus.waitAllocation.getKey());
+ workorder.setSheDealUserQwIds(passOnDTO.getMember().getQwId());
+
}else{
if(!(Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitAllocation.getKey())
|| Constants.equalsInteger(workorder.getStatus(),Constants.WorkOrderStatus.waitDeal.getKey()))){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"宸ュ崟鐘舵�佸凡娴佽浆");
+ }
+ if(!workorder.getManagerId().equals(passOnDTO.getMember().getQwId())){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝闈炲甫鎮ㄥ鐞嗙殑宸ュ崟锛屾棤娉曡繘琛岃鎿嶄綔");
}
workorder.setDealerId(member.getQwId());
workorder.setStatus(Constants.WorkOrderStatus.waitDeal.getKey());
@@ -935,7 +986,7 @@
//澶勭悊涓婃姤鏃ュ織
Integer logId = this.saveLog(beforeJson,workorder,
Constants.equalsInteger(passOnDTO.getPassOnType(),Constants.ZERO)?Constants.ONE:Constants.TWO
- ,passOnDTO.getMember().getId(),"浠诲姟鍒嗛厤",passOnDTO.getInfo(),paramr2);
+ ,passOnDTO.getMember().getId(),"浠诲姟鍒嗛厤",passOnDTO.getInfo(),paramr2,null);
List<Multifile> multifileList = passOnDTO.getMultifileList();
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(multifileList)){
for (Multifile multifile:multifileList) {
@@ -1035,6 +1086,7 @@
status = 2;
info ="鏃犳晥鍛樺伐淇℃伅锛屾棤娉曞彂閫侀偖绠�";
}else{
+ //閭宸插彂閫侊細鎴愬姛锛歔"姹熻悕閭jp@doumee.com"]澶辫触锛歔"姹熻悕/鏃犻偖绠�","鎴村己寮�/閭null","閮檯鏂囨/閭null"]
List<String> successInfo = new ArrayList<>();
List<String> errorInfo = new ArrayList<>();
Map<String,String> contentForm = getEmailContentFormByModel(workorder);
@@ -1152,7 +1204,7 @@
this.saveLog(null,workorder,
Constants.FOUR
- ,member.getId(),"鍌績","宸插偓淇� "+urgeUser.getCompanyName() + "/" + urgeUser.getName(),null);
+ ,member.getId(),"鍌績","宸插偓淇� "+urgeUser.getCompanyName() + "/" + urgeUser.getName(),null,null);
//鍙戦�佷紒寰�氱煡
Category category = categoryMapper.selectById(workorder.getTypeId());
if(Objects.nonNull(category)){
--
Gitblit v1.9.3