guoshilong
2024-03-23 f04487fef5ac47380dfa9670156743c9d273966b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
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);
    }
}