package com.highdatas.srs.web;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.baomidou.mybatisplus.mapper.Wrapper;
|
import com.highdatas.srs.entity.*;
|
import com.highdatas.srs.pojo.CodeMsg;
|
import com.highdatas.srs.pojo.Result;
|
import com.highdatas.srs.service.ISchemeDetailService;
|
import com.highdatas.srs.service.ISchemeService;
|
import com.highdatas.srs.service.ISysRoleMappingService;
|
import com.highdatas.srs.service.ISysRoleService;
|
import com.highdatas.srs.util.Constant;
|
import com.highdatas.srs.util.DbUtils;
|
import com.highdatas.srs.util.FileUtils;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.*;
|
|
/**
|
* <p>
|
* 前端控制器
|
* </p>
|
*
|
* @author kimi
|
* @since 2020-01-15
|
*/
|
@RestController
|
@Slf4j
|
@RequestMapping("/detail")
|
public class SchemeDetailController {
|
@Autowired
|
ISchemeDetailService schemeDetailService;
|
@Autowired
|
ISchemeService schemeService;
|
@Autowired
|
ISysRoleService roleService;
|
@Autowired
|
ISysRoleMappingService roleMappingService;
|
|
@Value("{base.file.path}")
|
String basePath;
|
|
@RequestMapping(value = "dayTask", method = RequestMethod.GET)
|
public Result dayByUser(HttpServletRequest request) {
|
String userId = request.getParameter("userId");
|
Date now = new Date();
|
|
EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>();
|
schemeDetailEntityWrapper.le("start_time", now);
|
schemeDetailEntityWrapper.gt("end_time", now);
|
if (!StringUtils.isEmpty(userId)) {
|
schemeDetailEntityWrapper.eq("user_id", userId);
|
}
|
List<SchemeDetail> schemeDetailList = schemeDetailService.selectList(schemeDetailEntityWrapper);
|
JSONArray result = new JSONArray();
|
Collection<String> values = Constant.schemeDetailParentTypes.values();
|
Set<String> types = new LinkedHashSet(values);
|
long totalCnt = 0;
|
long delayCnt = 0;
|
for (String type : types) {
|
long total = schemeDetailList.stream().filter(schemeDetail -> schemeDetail.getType().getParent().equalsIgnoreCase(type)).count();
|
long delay = schemeDetailList.stream().filter(schemeDetail -> schemeDetail.getType().getParent().equalsIgnoreCase(type))
|
.filter(schemeDetail -> schemeDetail.getDelay()).count();
|
totalCnt += total;
|
delayCnt += delay;
|
JSONObject object = new JSONObject();
|
object.fluentPut("type", type);
|
object.fluentPut("total", total);
|
object.fluentPut("delay", delay);
|
|
result.add(object);
|
}
|
JSONObject object = new JSONObject();
|
object.fluentPut("type", "我的任务");
|
object.fluentPut("total", totalCnt);
|
object.fluentPut("delay", delayCnt);
|
JSONArray endResult = new JSONArray();
|
|
endResult.add(object);
|
endResult.addAll(result);
|
|
return Result.success(endResult);
|
}
|
|
|
|
@RequestMapping(value = "/deal/{id}", method = RequestMethod.GET)
|
public Result deal(@PathVariable String id, HttpServletRequest request) {
|
String desp = request.getParameter("desp");
|
SchemeDetail schemeDetail = schemeDetailService.selectById(id);
|
schemeDetail.setFinish(true);
|
schemeDetail.setFinishTime(new Date());
|
new ProjectDeal().setId(DbUtils.getUUID()).setDesp(desp).setSchemeDetailId(id).setCreateTime(new Date()).insert();
|
schemeDetail.updateById();
|
Wrapper<SchemeDetail> eq = new EntityWrapper<SchemeDetail>().eq("parent_id", schemeDetail.getParentId()).eq("finish", false);
|
int i = schemeDetailService.selectCount(eq);
|
if (i == 0) {
|
Scheme scheme = schemeService.selectById(schemeDetail.getParentId());
|
scheme.setStatus("finish");
|
scheme.updateById();
|
}
|
return Result.success(schemeDetail);
|
}
|
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
|
public Result get(@PathVariable String id) {
|
SchemeDetail schemeDetail = schemeDetailService.selectById(id);
|
return Result.success(schemeDetail);
|
}
|
|
@RequestMapping(value = "/getMonth", method = RequestMethod.GET)
|
public Result getMonth(@RequestParam Date startTime) {
|
Calendar instance = Calendar.getInstance();
|
instance.setTime(startTime);
|
instance.add(Calendar.MONTH,1);
|
Calendar start = Calendar.getInstance();
|
start.setTime(startTime);
|
Date endTime = instance.getTime();
|
List<JSONObject> result = new ArrayList<>();
|
while (startTime.before(endTime)) {
|
startTime = start.getTime();
|
EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>();
|
schemeDetailEntityWrapper.le("start_time", startTime);
|
schemeDetailEntityWrapper.gt("end_time", startTime);
|
schemeDetailEntityWrapper.eq("finish", false);
|
schemeDetailEntityWrapper.eq("edit", false);
|
int cnt = schemeDetailService.selectCount(schemeDetailEntityWrapper);
|
if (cnt == 0) {
|
start.add(Calendar.DAY_OF_YEAR, 1);
|
continue;
|
}
|
JSONObject object = new JSONObject();
|
object.fluentPut("date", startTime);
|
object.fluentPut("task", cnt);
|
result.add(object);
|
start.add(Calendar.DAY_OF_YEAR, 1);
|
|
}
|
log.info(result.size() + "");
|
return Result.success(result);
|
}
|
|
@RequestMapping(value = "/getDay", method = RequestMethod.GET)
|
public Result getDay(@RequestParam Date startTime) {
|
EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>();
|
schemeDetailEntityWrapper.le("start_time", startTime);
|
schemeDetailEntityWrapper.gt("end_time", startTime);
|
schemeDetailEntityWrapper.eq("finish", false);
|
schemeDetailEntityWrapper.eq("edit", false);
|
List<SchemeDetail> schemeDetails = schemeDetailService.selectList(schemeDetailEntityWrapper);
|
Set<Scheme> parent = new HashSet<>();
|
for (SchemeDetail schemeDetail : schemeDetails) {
|
schemeDetail.setTypeStr(schemeDetail.getType().covert());
|
String parentId = schemeDetail.getParentId();
|
Scheme scheme = schemeService.selectById(parentId);
|
parent.add(scheme);
|
}
|
JSONArray array = (JSONArray) JSON.toJSON(schemeDetails);
|
JSONArray schemeArray = (JSONArray) JSON.toJSON(parent);
|
array.addAll(schemeArray);
|
|
return Result.success(array);
|
}
|
|
@RequestMapping(value = "/parent/{id}", method = RequestMethod.GET)
|
public Result parent(@PathVariable String id) {
|
//TODO
|
List<SchemeDetail> dealList = schemeDetailService.selectList(new EntityWrapper<SchemeDetail>().eq("parent_id", id));
|
for (SchemeDetail detail : dealList) {
|
String userId = detail.getUserId();
|
SysRoleMapping mapping = roleMappingService.selectOne(new EntityWrapper<SysRoleMapping>().eq("user_id", userId));
|
String roleId = mapping.getRoleId();
|
SysRole sysRole = roleService.selectById(roleId);
|
detail.setRoleName(sysRole.getName());
|
}
|
return Result.success(dealList);
|
}
|
|
@RequestMapping(value = "/updates", method = RequestMethod.GET)
|
public Result updates(@RequestParam String datas) {
|
try {
|
List<SchemeDetail> array = JSON.parseArray(datas, SchemeDetail.class);
|
for (SchemeDetail detail : array) {
|
SchemeDetail pre = schemeDetailService.selectById(detail.getId());
|
if (pre == null) {
|
EntityWrapper<SchemeDetail> schemeDetailEntityWrapper = new EntityWrapper<>();
|
schemeDetailEntityWrapper.eq("parent_id", detail.getParentId());
|
schemeDetailEntityWrapper.eq("type", detail.getType());
|
pre = schemeDetailService.selectOne(schemeDetailEntityWrapper);
|
if (pre == null) {
|
detail.setId(DbUtils.getUUID());
|
detail.setCreateTime(new Date());
|
detail.insert();
|
continue;
|
}
|
}
|
if (pre.getMustAttach() != detail.getMustAttach()) {
|
if (detail.getMustAttach()) {
|
//必须传附件
|
Scheme scheme = schemeService.selectById(detail.getParentId());
|
detail.setAttachment(FileUtils.createFile(basePath, scheme.getName(), detail.getType().name()));
|
} else {
|
detail.setAttachment(null);
|
}
|
}
|
detail.insertOrUpdate();
|
}
|
return Result.success(CodeMsg.UPDATE_SUCCESS);
|
}
|
catch (Exception e) {
|
e.printStackTrace();
|
return Result.error(CodeMsg.UPDATE_ERROR);
|
}
|
}
|
}
|