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.*; /** *

* 前端控制器 *

* * @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 schemeDetailEntityWrapper = new EntityWrapper<>(); schemeDetailEntityWrapper.le("start_time", now); schemeDetailEntityWrapper.gt("end_time", now); if (!StringUtils.isEmpty(userId)) { schemeDetailEntityWrapper.eq("user_id", userId); } List schemeDetailList = schemeDetailService.selectList(schemeDetailEntityWrapper); JSONArray result = new JSONArray(); Collection values = Constant.schemeDetailParentTypes.values(); Set 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 eq = new EntityWrapper().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 result = new ArrayList<>(); while (startTime.before(endTime)) { startTime = start.getTime(); EntityWrapper 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 schemeDetailEntityWrapper = new EntityWrapper<>(); schemeDetailEntityWrapper.le("start_time", startTime); schemeDetailEntityWrapper.gt("end_time", startTime); schemeDetailEntityWrapper.eq("finish", false); schemeDetailEntityWrapper.eq("edit", false); List schemeDetails = schemeDetailService.selectList(schemeDetailEntityWrapper); Set 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 dealList = schemeDetailService.selectList(new EntityWrapper().eq("parent_id", id)); for (SchemeDetail detail : dealList) { String userId = detail.getUserId(); SysRoleMapping mapping = roleMappingService.selectOne(new EntityWrapper().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 array = JSON.parseArray(datas, SchemeDetail.class); for (SchemeDetail detail : array) { SchemeDetail pre = schemeDetailService.selectById(detail.getId()); if (pre == null) { EntityWrapper 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); } } }