140 lines
5.4 KiB
Markdown
140 lines
5.4 KiB
Markdown
```
|
|
sequenceDiagram
|
|
autonumber
|
|
|
|
participant U as User/前端
|
|
participant C as NewWorkOrderController
|
|
participant W as WorkOrderServiceImpl
|
|
participant E as EnterpriseInfoDao
|
|
participant BB as BBossInteractiveService
|
|
participant DS as DomainOrderService
|
|
participant CS as CustomService
|
|
|
|
participant WOR as work_order(Repo)
|
|
participant DOR as configure_list(DomainOrderRepository)
|
|
participant SDR as speed_configure_domain(SpeedConfigureDomainDao)
|
|
|
|
participant BSD as BatchSelfDomainService
|
|
participant BSDao as batch_self_domain(BatchSelfDomainDao)
|
|
|
|
participant LFS as LogOrderService
|
|
participant LFR as log_file_resource(LogFileResourceRepository)
|
|
participant FI as file_info(FileInfoDao)
|
|
|
|
participant WOE as work_order_enterprise(WorkOrderEnterPriseDao)
|
|
|
|
participant WM as WorkOrderManager
|
|
participant DICP as DomainICPService
|
|
participant PIS as portalInformationService
|
|
|
|
participant BPM as BpmTaskDao
|
|
participant ODao as OrderDao
|
|
participant UR as UserRepository
|
|
|
|
U->>C: POST /workorder/custom/save(workList)
|
|
C->>C: checkParam(workList)
|
|
C->>W: newOrderAllowed()
|
|
C->>W: saveCustomWorkOrder(MutableHttpServletRequest, workList)
|
|
|
|
W->>W: 校验当前用户 & 企业可操作性
|
|
W->>E: findByEnterpriseId(workList.enterprise)
|
|
E-->>W: Optional<EnterpriseInfo>
|
|
|
|
alt workList.type == domain_request
|
|
W->>W: recheckEnterprisePunishmentStatus(info)
|
|
W->>BB: queryJointPunish(ecId)
|
|
BB-->>W: JointPunishResponse
|
|
|
|
W->>W: isModify = (workList.id != null)
|
|
W->>DS: handleWithDomainOrder(workList, modelStr)
|
|
|
|
alt isBatch == true
|
|
DS->>W: getWorkOrderCode(domain_request)
|
|
DS->>BSD: readBatchInformationFromExcel440(secInfoFile)
|
|
BSD-->>DS: List<BatchSelfDomainVO>
|
|
DS->>BSD: saveBatchDomains(batchVO, batchId=workOrder.code, provinceCodes, product, enterprise)
|
|
BSD->>BSDao: saveAll(batch_self_domain)
|
|
BSDao-->>BSD: saved
|
|
DS->>DOR: save(configure_list with isBatch=true, batchId=code)
|
|
else isBatch == false
|
|
DS->>CS: getWorkOrder(domain_request, details, enterprise)
|
|
CS-->>DS: WorkOrder(in memory)
|
|
DS->>DOR: save(configure_list)
|
|
end
|
|
|
|
DS->>WOR: save(work_order) %% (via cascade in configure_list.workOrder / or other path)
|
|
DS->>DOR: save(domain_history create + (create且非海外时) icp check marker)
|
|
|
|
alt isModify == true
|
|
W->>W: deleteHistoryFileInfo(workList, domainOrderPO.id)
|
|
W->>LFR: findByOrderId(configure_list.id)
|
|
LFR-->>W: old LogFileResource list
|
|
W->>FI: deleteAll(file_info by md5 diff)
|
|
W->>LFR: deleteAllByOrderId(configure_list.id)
|
|
end
|
|
|
|
W->>LFS: saveFilesToTable(orderId=configure_list.id, md5List, type=configure)
|
|
W->>LFR: saveAll(log_file_resource: normal attachments)
|
|
opt fileId not empty
|
|
W->>LFR: save(domain_config file link)
|
|
end
|
|
opt secInfoFileId not empty
|
|
W->>LFR: saveAll(security_info file links)
|
|
end
|
|
|
|
W->>WOE: setNewWorkOrderEnterpriseForDR(workOrderId, enterpriseId, orgEnterId?)
|
|
|
|
W->>WM: handleDomainConfigXinAnInfo(submitUserId, configure_list.id)
|
|
WM->>DOR: findById(configure_list.id)
|
|
WM->>UR: findById(submitUserId)
|
|
|
|
alt operateType == CREATE
|
|
alt overseas product
|
|
WM->>DS: updateNextCheckUserInOrderSubmit(order, submit, CREATE)
|
|
else non-overseas
|
|
WM->>DS: updateCheckedIcpInfo(order)
|
|
DS->>DICP: getDomainIcp(domains)
|
|
DICP-->>DS: recordNumber map
|
|
DS->>BSDao: saveAll(batch_self_domain recordNumber/icpEquals) %% batch
|
|
DS->>DOR: save(configure_list recordNumber) %% non-batch
|
|
DS->>DOR: save(domain_history isIcpCheckCompleted=true)
|
|
|
|
alt checkDomainIcpEqual == true
|
|
WM->>DS: uploadInformation(order)
|
|
DS->>PIS: validateAndSyncInformation(vos, domains, enterpriseId, provinceCode?)
|
|
alt sync failed
|
|
DS->>DOR: update(domain_history.last.msg=error)
|
|
DS-->>WM: return (stop flow)
|
|
else sync ok
|
|
DS->>DOR: update(domain_history.last.msg=null)
|
|
WM->>DS: updateNextCheckUserInOrderSubmit(order, submit, CREATE)
|
|
end
|
|
else icp incomplete
|
|
WM-->>W: (不进入信安同步与流转)
|
|
end
|
|
end
|
|
else operateType != CREATE
|
|
WM->>DS: updateNextCheckUserInOrderSubmit(order, submit, operateType)
|
|
end
|
|
|
|
W->>W: build domains from speedDomains + batch_self_domain
|
|
W->>W: req.putHeader(domainInfo, enterpriseInfo)
|
|
|
|
opt bpmTask exists && !isModify
|
|
W->>BPM: findByCode(workOrder.code)
|
|
BPM-->>W: BpmTaskPO
|
|
W->>ODao: findByEcId(ecId)
|
|
ODao-->>W: OrderInfo list
|
|
W->>UR: findById(currentUserId)
|
|
UR-->>W: nextApprover
|
|
W->>WOR: save(work_order.approvingUser=nextApprover)
|
|
end
|
|
|
|
C-->>U: success
|
|
Note over C,W: finally: logSubscribeService.updateSubscribeInfoForWorkOrder(domainInfo, enterpriseInfo, isSubscribe)
|
|
else workList.type != domain_request
|
|
W-->>C: (其它工单类型分支)
|
|
end
|
|
|
|
```
|