package cn.gistack.sm.patrol.service.impl;
|
|
import cn.gistack.flow.core.constant.ProcessConstant;
|
import cn.gistack.flow.core.entity.BladeFlow;
|
import cn.gistack.flow.core.feign.IFlowClient;
|
import cn.gistack.flow.core.utils.FlowUtil;
|
import cn.gistack.flow.core.utils.TaskUtil;
|
import cn.gistack.sm.patrol.dto.PatrolGroupDTO;
|
import cn.gistack.sm.patrol.entity.PatrolGroupItem;
|
import cn.gistack.sm.patrol.entity.PatrolRecord;
|
import cn.gistack.sm.patrol.mapper.PatrolRecordMapper;
|
import cn.gistack.sm.patrol.service.IPatrolGroupItemService;
|
import cn.gistack.sm.patrol.service.IPatrolRecordService;
|
import cn.gistack.sm.patrol.vo.PatrolGroupItemVO;
|
import cn.gistack.sm.patrol.vo.PatrolRecordVO;
|
import cn.gistack.sm.patrol.vo.RecordBatchVO;
|
import cn.gistack.sm.patrol.vo.RecordVO;
|
import cn.gistack.sm.sjztmd.service.IAttResManagePersonService;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import lombok.AllArgsConstructor;
|
import org.springblade.core.mp.base.BaseServiceImpl;
|
import org.springblade.core.secure.utils.AuthUtil;
|
import org.springblade.core.tool.api.R;
|
import org.springblade.core.tool.support.Kv;
|
import org.springblade.core.tool.utils.Func;
|
import org.springblade.core.tool.utils.ObjectUtil;
|
import org.springblade.core.tool.utils.StringUtil;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springblade.core.log.exception.ServiceException;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@Service
|
@AllArgsConstructor
|
public class PatrolRecordServiceImpl extends BaseServiceImpl<PatrolRecordMapper, PatrolRecord> implements IPatrolRecordService {
|
IPatrolGroupItemService patrolGroupItemService;
|
|
private final IAttResManagePersonService attResManagePersonService;
|
private final IFlowClient flowClient;
|
|
@Override
|
public IPage<PatrolRecord> selectPatrolRecord(IPage<PatrolRecord> page, PatrolRecordVO patrolRecord) {
|
|
if (StringUtil.isBlank(patrolRecord.getAdCode())){
|
patrolRecord.setAdCode(AuthUtil.getDeptId());
|
}
|
|
return page.setRecords(baseMapper.selectPatrolRecord(page,patrolRecord));
|
}
|
|
@Override
|
public PatrolRecordVO getDetail(String id) {
|
return baseMapper.getDetail(id);
|
}
|
|
@Override
|
public List<PatrolGroupItemVO> getPatrolRecordByTaskId(String taskId, String itemIds) {
|
List<Long> longList = Func.toLongList(itemIds);
|
List<PatrolGroupItemVO> patrolGroupItemVOList = new ArrayList<>();
|
longList.forEach(e->{
|
PatrolRecord patrolRecord = baseMapper.selectPatrolRecordByTaskIdAndItemId(taskId, e);
|
if (ObjectUtil.isEmpty(patrolRecord)){
|
PatrolGroupItemVO patrolGroupItemVO = patrolGroupItemService.getPatrolGroupItemVOById(e);
|
patrolGroupItemVOList.add(patrolGroupItemVO);
|
}
|
});
|
|
return patrolGroupItemVOList;
|
}
|
|
@Override
|
public List<PatrolRecordVO> getByTaskIdAndItemId(String taskId, String itemIds) {
|
return baseMapper.getByTaskIdAndItemId(taskId,itemIds);
|
}
|
|
@Override
|
public List getItemByItemIds(String itemIds,String groupId,String taskId) {
|
List<PatrolGroupItem> itemList = patrolGroupItemService.getItemByItemIds(itemIds, groupId);
|
List<PatrolRecord> patrolRecordList = new ArrayList<>();
|
itemList.forEach(item->{
|
PatrolRecordVO one = baseMapper.getPatrolRecordVO(item.getId(),taskId);
|
if (ObjectUtil.isNotEmpty(one)){
|
patrolRecordList.add(one);
|
}
|
});
|
|
if (patrolRecordList.size()>0){
|
return patrolRecordList;
|
}else {
|
return itemList;
|
}
|
}
|
|
@Override
|
public List<PatrolRecord> getByTaskIdAndGroupId(PatrolRecordVO patrolRecordVO) {
|
return baseMapper.getByTaskIdAndGroupId(patrolRecordVO);
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Boolean updateThenSaveBatch(RecordBatchVO recordBatchVO) {
|
|
|
boolean b = updateBatchById(recordBatchVO.getUpdateList());
|
boolean b1 = saveBatch(recordBatchVO.getAddList());
|
|
return b&&b1;
|
}
|
|
@Override
|
public List<PatrolGroupDTO> getHistoryRecord(PatrolRecordVO patrolRecordVO) {
|
return baseMapper.getHistoryRecord(patrolRecordVO);
|
}
|
|
@Override
|
public RecordVO getRecordVO(RecordVO recordVO) {
|
return baseMapper.getRecordVO(recordVO);
|
}
|
|
@Override
|
public PatrolRecordVO getHandleRecord(PatrolRecord patrolRecord) {
|
return baseMapper.getHandleRecord(patrolRecord);
|
}
|
|
@Override
|
public void startProcess(PatrolRecordVO record,String resId) {
|
|
String businessTable = FlowUtil.getBusinessTable(ProcessConstant.PATROL_KEY);
|
|
//异常,未解决需要开启流程
|
if (record.getStatus() == 2 && record.getSolution().equals("2")) {
|
|
// List<PersonVO> managePersonList = attResManagePersonService.getManagePersonList(resId, "4");
|
//没主键
|
if (Func.isEmpty(record.getId())) {
|
save(record);
|
|
Kv variables = Kv.create()
|
//设置创建人
|
.set(ProcessConstant.TASK_VARIABLE_CREATE_USER, AuthUtil.getUserId())
|
//指定责任人,因为不一定是巡查责任完成的任务,需要前端传递taskUser
|
.set("taskUser", TaskUtil.getTaskUser(record.getTaskUser()));
|
R<BladeFlow> result = flowClient.startProcessInstanceById(record.getProcessDefinitionId(), FlowUtil.getBusinessKey(businessTable, String.valueOf(record.getId())), variables);
|
|
if (result.isSuccess()) {
|
log.debug("流程已启动,流程ID:" + result.getData().getProcessInstanceId());
|
// 返回流程id写入
|
record.setProcessInstanceId(result.getData().getProcessInstanceId());
|
updateById(record);
|
} else {
|
throw new ServiceException("开启流程失败");
|
}
|
} else {
|
updateById(record);
|
}
|
|
} else {
|
save(record);
|
}
|
}
|
|
@Override
|
public PatrolRecordVO customizeGetById(String id) {
|
return baseMapper.getDetail(id);
|
}
|
}
|