|
@@ -5,15 +5,11 @@ import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.dayou.common.BaseEntity;
|
|
|
-import com.dayou.configuration.DfsConfig;
|
|
|
import com.dayou.dto.*;
|
|
|
import com.dayou.entity.*;
|
|
|
import com.dayou.enums.CertificateEnum;
|
|
|
import com.dayou.enums.GlobalConfigEnum;
|
|
|
-import com.dayou.enums.MainBusinessEnum;
|
|
|
import com.dayou.enums.workflow.HandlerPermissionEnum;
|
|
|
-import com.dayou.enums.workflow.NodeLogEnum;
|
|
|
-import com.dayou.enums.workflow.NodeStateEnum;
|
|
|
import com.dayou.enums.workflow.WorkflowNodeEnum;
|
|
|
import com.dayou.exception.ErrorCode;
|
|
|
import com.dayou.mapper.*;
|
|
@@ -24,9 +20,9 @@ import com.dayou.service.workflow.IWorkFlowService;
|
|
|
import com.dayou.service.workflow.IWorkNodeService;
|
|
|
import com.dayou.service.workflow.IWorkNodeTaskService;
|
|
|
import com.dayou.utils.LoginContext;
|
|
|
-import com.dayou.utils.QRCodeUtil;
|
|
|
import com.dayou.vo.PersonalVO;
|
|
|
import com.dayou.vo.TaskTodoVO;
|
|
|
+import com.dayou.workflow.handler.PersonalNodeHandler;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -36,14 +32,14 @@ import java.math.BigDecimal;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import static com.dayou.common.Constants.PERSONAL_INWARD;
|
|
|
-import static com.dayou.common.Constants.PROD_VALIDATE_URI;
|
|
|
import static com.dayou.enums.MainBusinessEnum.PERSONAL_BUSINESS;
|
|
|
+import static com.dayou.enums.workflow.NodeLogEnum.PASS;
|
|
|
+import static com.dayou.enums.workflow.NodeStateEnum.PENDING;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
@@ -107,6 +103,9 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
|
|
|
@Autowired
|
|
|
private IBusinessProductionService businessProductionService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private PersonalNodeHandler personalNodeHandler;
|
|
|
+
|
|
|
|
|
|
@Override
|
|
|
@SuppressWarnings("unchecked")
|
|
@@ -183,7 +182,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
|
|
|
try {
|
|
|
for (WorkFlowNodeInstance workFlowNodeInstance: exists){
|
|
|
if (workFlowNodeInstance.getSequence().equals(0)){
|
|
|
- workFlowNodeInstance.setState(NodeStateEnum.PENDING.name());
|
|
|
+ workFlowNodeInstance.setState(PENDING.name());
|
|
|
workFlowNodeInstanceService.updateById(workFlowNodeInstance);
|
|
|
}else {
|
|
|
workFlowNodeInstanceService.removeById(workFlowNodeInstance.getId());
|
|
@@ -237,7 +236,7 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
|
|
|
log.setBusinessType(PERSONAL_BUSINESS.name());
|
|
|
log.setHandingTime(new Date().getTime() - x.getTaskCreated().getTime());
|
|
|
log.setHandlerId(currentUserId);
|
|
|
- log.setState(NodeLogEnum.PASS.name());
|
|
|
+ log.setState(PASS.name());
|
|
|
log.setInstanceId(x.getCurrentNodeId());
|
|
|
log.setBusinessSubId(x.getOrderId());
|
|
|
return log;
|
|
@@ -356,4 +355,48 @@ public class PersonalServiceImpl extends ServiceImpl<PersonalMapper, Personal> i
|
|
|
}
|
|
|
return Boolean.FALSE;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Page<PersonalVO> waitingAllotOrderPage(Page page) {
|
|
|
+ return personalMapper.waitingAllotOrderPage(page);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public Boolean doAllotOrder(PersonalAllotOrderDTO dto) {
|
|
|
+ List<PersonalVO> orders = dto.getOrders();
|
|
|
+ if (CollectionUtil.isNotEmpty(orders)){
|
|
|
+ Long userId = dto.getId();
|
|
|
+ List<Long> orderIds = orders.stream().map(BaseEntity::getId).collect(Collectors.toList());
|
|
|
+ List<Long> instanceIds = orders.stream().map(PersonalVO::getCurrentNodeId).collect(Collectors.toList());
|
|
|
+
|
|
|
+ batchCheckNodeState(instanceIds);
|
|
|
+ //更新订单业务表的外业人员
|
|
|
+ personalMapper.batchUpdateOutWardStaffId(userId,orderIds);
|
|
|
+ //任务状态更新为已完成
|
|
|
+ workTaskRecordMapper.batchFinishTaskByInstanceId(instanceIds);
|
|
|
+ orders.stream().forEach(x->{
|
|
|
+ WorkNodeCommit workNodeCommit = new WorkNodeCommit();
|
|
|
+ workNodeCommit.setState(PASS);
|
|
|
+ workNodeCommit.setIfCheckTask(true);
|
|
|
+ workNodeCommit.setComments("批量分单");
|
|
|
+ workNodeCommit.setInstanceNodeId(x.getCurrentNodeId());
|
|
|
+ workNodeCommit.setBusinessSubId(x.getOrderId());
|
|
|
+ workNodeCommit.setNextHandlerId(userId);
|
|
|
+ personalNodeHandler.forward(workNodeCommit);
|
|
|
+ });
|
|
|
+ return Boolean.TRUE;
|
|
|
+ }
|
|
|
+ return Boolean.FALSE;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void batchCheckNodeState(List<Long> instanceIds) {
|
|
|
+ List<WorkFlowNodeInstance> list = workFlowNodeInstanceService.list(new LambdaQueryWrapper<WorkFlowNodeInstance>()
|
|
|
+ .select(WorkFlowNodeInstance::getState).in(BaseEntity::getId, instanceIds).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
+ for (WorkFlowNodeInstance instance : list) {
|
|
|
+ if (!instance.getState().equals(PENDING.name())){
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.DATA_OUT_OFF);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|