|
@@ -3,7 +3,6 @@ package com.ankaibei.workFlow.webadmin.ankaibei.service.impl;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.alibaba.fastjson.JSONPObject;
|
|
|
import com.ankaibei.workFlow.common.core.object.ResponseResult;
|
|
|
import com.ankaibei.workFlow.common.core.object.TokenData;
|
|
|
import com.ankaibei.workFlow.common.flow.constant.FlowConstant;
|
|
@@ -11,26 +10,26 @@ import com.ankaibei.workFlow.common.flow.constant.FlowTaskStatus;
|
|
|
import com.ankaibei.workFlow.common.flow.dto.FlowTaskCommentDto;
|
|
|
import com.ankaibei.workFlow.common.flow.model.FlowEntry;
|
|
|
import com.ankaibei.workFlow.common.flow.model.FlowEntryPublish;
|
|
|
-import com.ankaibei.workFlow.common.flow.online.controller.FlowOnlineOperationController;
|
|
|
-import com.ankaibei.workFlow.common.flow.util.FlowOperationHelper;
|
|
|
import com.ankaibei.workFlow.common.flow.vo.TaskInfoVo;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.entity.*;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.enums.CodeEnum;
|
|
|
+import com.ankaibei.workFlow.webadmin.ankaibei.enums.ManHourStatus;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.mapper.*;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.service.ManHourService;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.utils.FlowTaskStart;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.vo.ManHourInfoVo;
|
|
|
+import com.ankaibei.workFlow.webadmin.ankaibei.vo.ManHourJobVo;
|
|
|
import com.ankaibei.workFlow.webadmin.ankaibei.vo.ResMsg;
|
|
|
-import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
-import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
-import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
+import com.ankaibei.workFlow.webadmin.ankaibei.entity.ManHourInfoEntity;
|
|
|
+import com.ankaibei.workFlow.webadmin.ankaibei.entity.TaskInfoEntity;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
-import java.math.BigDecimal;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -45,14 +44,14 @@ public class ManHourServiceImpl implements ManHourService {
|
|
|
|
|
|
@Resource
|
|
|
private ManHourMapper manHourMapper;
|
|
|
- @Autowired
|
|
|
+ @Resource
|
|
|
private FlowTaskStart flowTaskStart;
|
|
|
@Resource
|
|
|
private UserInfoMapper userInfoMapper;
|
|
|
@Resource
|
|
|
- private ManHourJobMapper manHourJobMapper;
|
|
|
- @Resource
|
|
|
private ProjectInfoMapper projectInfoMapper;
|
|
|
+ @Resource
|
|
|
+ private TaskInfoMapper taskInfoMapper;
|
|
|
|
|
|
@Override
|
|
|
public ResMsg findManHourAll(Integer pageIndex, Integer pageSize, ManHourInfoEntity manHourInfoEntity) {
|
|
@@ -64,20 +63,19 @@ public class ManHourServiceImpl implements ManHourService {
|
|
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
endDate = dateFormat.format(manHourInfoEntity.getEndDate()) + " 23:59:59";
|
|
|
}
|
|
|
- Page<Map<String, String>> manHourAll = manHourMapper.findManHourAll(userId, manHourInfoEntity.getFlowTaskStatus(), manHourInfoEntity.getCreateDate(), endDate, page);
|
|
|
- //匹配工时信息和项目信息
|
|
|
- List<ManHourJobInfo> jobInfos = manHourJobMapper.findAll();
|
|
|
+ Page<Map<String, String>> manHourAll = manHourMapper.findManHourAll(userId, manHourInfoEntity.getFlowTaskStatus(), manHourInfoEntity.getStartDate(), endDate, page);
|
|
|
+ //匹配项目信息和任务信息
|
|
|
List<ProjectInfoEntity> projectInfos = projectInfoMapper.findAll();
|
|
|
+ List<TaskInfoEntity> finishedTasks = taskInfoMapper.findAllByTaskParticipantContainsAndFlowTaskStatusEquals(userId, FlowTaskStatus.FINISHED + "");
|
|
|
return new ResMsg(CodeEnum.OK, ResMsg.getMap(manHourAll.map(map -> {
|
|
|
Map<Object, Object> map1 = new HashMap<>(map);
|
|
|
- String projectId = map.get("projectName");
|
|
|
- map1.put("manHour", map.get("manHour") + "天");
|
|
|
- for (ManHourJobInfo jobInfo : jobInfos) {
|
|
|
- if (jobInfo.getManId().equals(Integer.valueOf(map1.get("manId").toString()))) {
|
|
|
- map1.put("manHourJob", jobInfo);
|
|
|
+ for (TaskInfoEntity task : finishedTasks) {
|
|
|
+ if (map1.get("taskId").equals(task.getTaskId())) {
|
|
|
+ map1.put("taskName", task.getTargetTask());
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ String projectId = map.get("projectName");
|
|
|
for (ProjectInfoEntity projectInfo : projectInfos) {
|
|
|
if (Integer.valueOf(projectId).equals(projectInfo.getProjectId())) {
|
|
|
map1.put("projectName", projectInfo.getProjectName());
|
|
@@ -89,11 +87,63 @@ public class ManHourServiceImpl implements ManHourService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public ResMsg addManHour(String projectId, ManHourInfoEntity manHourInfoEntity, List<ManHourJobInfo> manHours) {
|
|
|
+ public ResMsg addManHour(ManHourInfoEntity manHourInfoEntity, List<ManHourJobVo> jobs) {
|
|
|
Optional<UserInfoEntity> byId1 = userInfoMapper.findById(manHourInfoEntity.getCreateUser());
|
|
|
- manHourInfoEntity.setProjectName(projectId);
|
|
|
- manHourInfoEntity.setProjectUser(byId1.orElse(null) != null ? byId1.orElse(null).getShowName() : null);
|
|
|
- //manHourInfoEntity.setManStatus("1");
|
|
|
+ //工时:添加后状态为1,未提交
|
|
|
+ String showName = byId1.orElse(null) != null ? byId1.orElse(null).getShowName() : null;
|
|
|
+ manHourInfoEntity.setProjectUser(showName);
|
|
|
+ manHourInfoEntity.setCreateUser(showName);
|
|
|
+ manHourInfoEntity.setManStatus(ManHourStatus.NO_ALLOCATION.getCode());
|
|
|
+ for (ManHourJobVo job : jobs) {
|
|
|
+ BeanUtils.copyProperties(job, manHourInfoEntity);
|
|
|
+ manHourMapper.save(manHourInfoEntity);
|
|
|
+ }
|
|
|
+ return new ResMsg(CodeEnum.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResMsg submitManHour(List<ManHourInfoVo> manHourInfoVos) {
|
|
|
+ //先判断ID是否为空:不为空就是批量提交的
|
|
|
+ if (!ObjectUtils.isEmpty(manHourInfoVos.get(0).getManId())) {
|
|
|
+ for (ManHourInfoVo vo : manHourInfoVos) {
|
|
|
+ Optional<ManHourInfoEntity> byId = manHourMapper.findById(vo.getManId());
|
|
|
+ ManHourInfoEntity infoEntity = byId.orElse(null) != null ? byId.orElse(null) : null;
|
|
|
+ ResMsg resMsg = manHourFlowStart(infoEntity);
|
|
|
+ if (!"200".equals(resMsg.getCode())) {
|
|
|
+ return resMsg;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //为空就是单个新增并且提交的,新增的也是生成多天记录后提交
|
|
|
+ Optional<UserInfoEntity> byId1 = userInfoMapper.findById(TokenData.takeFromRequest().getUserId());
|
|
|
+ ManHourInfoVo vo = manHourInfoVos.get(0);
|
|
|
+ ManHourInfoEntity manHourInfoEntity = new ManHourInfoEntity();
|
|
|
+ BeanUtils.copyProperties(vo, manHourInfoEntity);
|
|
|
+ manHourInfoEntity.setProjectUser(byId1.orElse(null) != null ? byId1.orElse(null).getShowName() : null);
|
|
|
+ ManHourInfoEntity save = manHourMapper.save(manHourInfoEntity);
|
|
|
+ return manHourFlowStart(save);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ResMsg(CodeEnum.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResMsg deleteManHour(List<ManHourInfoVo> manHourInfoVos) {
|
|
|
+
|
|
|
+ for (ManHourInfoVo info : manHourInfoVos) {
|
|
|
+ manHourMapper.deleteById(Integer.valueOf(info.getManId()));
|
|
|
+ }
|
|
|
+ return new ResMsg(CodeEnum.OK);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public ResMsg findManHourByID(Integer manId) {
|
|
|
+ Optional<ManHourInfoEntity> byId = manHourMapper.findById(manId);
|
|
|
+ ManHourInfoEntity infoEntity = byId.orElse(null) != null ? byId.orElse(null) : null;
|
|
|
+ return new ResMsg(CodeEnum.OK, infoEntity);
|
|
|
+ }
|
|
|
+
|
|
|
+ public ResMsg manHourFlowStart(ManHourInfoEntity manHourInfoEntity) {
|
|
|
//param processDefinitionKey 项目人员工时接口审批流程--流程标识。
|
|
|
String processDefinitionKey = "manHourCountApply";
|
|
|
ResponseResult<FlowEntry> flowEntryResult = flowTaskStart.verifyAndGetFlowEntry(processDefinitionKey);
|
|
@@ -117,9 +167,9 @@ public class ManHourServiceImpl implements ManHourService {
|
|
|
flowTaskCommentDto.setApprovalType("agree");
|
|
|
HashMap<String, Object> stringObjectHashMap = new HashMap<>();
|
|
|
stringObjectHashMap.put("project_user", manHourInfoEntity.getProjectUser());
|
|
|
- stringObjectHashMap.put("project_name", manHourInfoEntity.getProjectName());
|
|
|
+ stringObjectHashMap.put("project_name", manHourInfoEntity.getProjectId());
|
|
|
stringObjectHashMap.put("man_hour", "总计**时");
|
|
|
- stringObjectHashMap.put("create_date", manHourInfoEntity.getCreateDate());
|
|
|
+ stringObjectHashMap.put("create_date", manHourInfoEntity.getStartDate());
|
|
|
stringObjectHashMap.put("create_user", manHourInfoEntity.getCreateUser());
|
|
|
ManHourInfoEntity save = manHourMapper.save(manHourInfoEntity);
|
|
|
stringObjectHashMap.put("man_id", save.getManId());
|
|
@@ -127,38 +177,11 @@ public class ManHourServiceImpl implements ManHourService {
|
|
|
Map<String, String> map = flowTaskStart.startAndTakeUserTaskSS(processDefinitionKey, flowTaskCommentDto, null, masterData, null, null).getData();
|
|
|
manHourInfoEntity.setProcessInstanceId(map.get("processInstanceId"));
|
|
|
manHourInfoEntity.setProcessDefinitionId(map.get("processDefinitionId"));
|
|
|
+ manHourInfoEntity.setManStatus(ManHourStatus.EXTENSION_ING.getCode());
|
|
|
manHourInfoEntity.setFlowTaskStatus(FlowTaskStatus.SUBMITTED);
|
|
|
- BigDecimal day = new BigDecimal(0);
|
|
|
- for (ManHourJobInfo manHour : manHours) {
|
|
|
- day = day.add(manHour.getDay());
|
|
|
- }
|
|
|
- manHourInfoEntity.setManHour(day);
|
|
|
manHourInfoEntity.setCreateTime(new Date());
|
|
|
ManHourInfoEntity save1 = manHourMapper.save(manHourInfoEntity);
|
|
|
- for (ManHourJobInfo manHour : manHours) {
|
|
|
- manHour.setManId(save.getManId());
|
|
|
- manHourJobMapper.save(manHour);
|
|
|
- }
|
|
|
-
|
|
|
- return new ResMsg(CodeEnum.OK);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public ResMsg deleteManHour(List<ManHourInfoVo> manHourInfoVos) {
|
|
|
-
|
|
|
- for (ManHourInfoVo info : manHourInfoVos) {
|
|
|
- manHourMapper.deleteById(Integer.valueOf(info.getManId()));
|
|
|
- manHourJobMapper.deleteByManIdEquals(Integer.valueOf(info.getManId()));
|
|
|
- }
|
|
|
- return new ResMsg(CodeEnum.OK);
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public ResMsg findManHourByID(Integer manId) {
|
|
|
- Optional<ManHourInfoEntity> byId = manHourMapper.findById(manId);
|
|
|
- List<ManHourJobInfo> byManIdIs = manHourJobMapper.findManHourJobInfosByManIdIs(manId);
|
|
|
- byId.get().setManHourJob(byManIdIs);
|
|
|
- return new ResMsg(CodeEnum.OK, byId);
|
|
|
+ return new ResMsg(CodeEnum.OK, save1);
|
|
|
}
|
|
|
|
|
|
|