From f990d41ed26b2640ca87d13d53e0dd85675aafb5 Mon Sep 17 00:00:00 2001 From: LSH Date: 星期四, 10 八月 2023 08:20:00 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/manager/controller/PlanController.java | 230 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 228 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/zy/crm/manager/controller/PlanController.java b/src/main/java/com/zy/crm/manager/controller/PlanController.java index 6516449..9cd35c5 100644 --- a/src/main/java/com/zy/crm/manager/controller/PlanController.java +++ b/src/main/java/com/zy/crm/manager/controller/PlanController.java @@ -12,7 +12,10 @@ import com.core.common.R; import com.core.domain.KeyValueVo; import com.core.exception.CoolException; +import com.zy.crm.common.entity.RouteCollectCountType; import com.zy.crm.common.model.SettleDto; +import com.zy.crm.common.utils.FileSaveExampleUtil; +import com.zy.crm.common.utils.SetOfUtils; import com.zy.crm.common.web.BaseController; import com.zy.crm.manager.controller.result.FollowerTableVo; import com.zy.crm.manager.entity.Plan; @@ -33,11 +36,20 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import org.springframework.core.io.Resource; +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.*; + +import static java.util.stream.Collectors.toList; @RestController public class PlanController extends BaseController { @@ -144,12 +156,45 @@ @RequestMapping(value = "/plan/update/auth") @ManagerAuth + @Transactional public R update(@RequestParam Map<String, Object> param){ +// String planNeed = null; +// Integer id = null; +// for (Map.Entry<String, Object> entry : param.entrySet()){ +// String val = String.valueOf(entry.getValue()); +// if (Cools.isEmpty(val)){ +// continue; +// } +// if (entry.getKey().equals("planNeed")){ +// planNeed = val; +// } +// if (entry.getKey().equals("id")){ +// try{ +// id = Integer.parseInt(val); +// }catch (Exception e){ +// return R.error(); +// } +// } +// } if (Cools.isEmpty(param) || Cools.isEmpty(param.get("id"))){ return R.error(); } +// List<String> planNeedbs = new ArrayList<>(Arrays.asList(planNeed.split("-"))); +// if (planNeedbs.get(0).equals("[object Object]")){ +// planNeedbs.remove(0); +// Plan plan1 = planService.selectById(id); +// List<String> planNeedas = Arrays.asList(plan1.getPlanNeed().split("-")); +// List<String> routeIntersectionString = SetOfUtils.getRouteIntersectionString(planNeedas, planNeedbs, RouteCollectCountType.DEDUPLICATIONUNION); +// planNeed=""; +// for (String planNeedss:routeIntersectionString){ +// planNeed=planNeed==""? planNeedss:planNeed + "-" + planNeedss; +// } +// } + + // pre Plan plan = JSON.parseObject(JSON.toJSONString(param), Plan.class); +// plan.setPlanNeed(planNeed); param.entrySet().removeIf(next -> this.fields.contains(next.getKey())); plan.setUpdateBy(getUserId()); plan.setUpdateTime(new Date()); @@ -171,10 +216,69 @@ return R.ok(); } + @RequestMapping(value = "/plan/insert/file/auth") +// @ManagerAuth + public R insertFile(@RequestParam("planId") String planId,@RequestParam MultipartFile file){ + String[] split = planId.split("-"); + int id = Integer.parseInt(split[1]); + System.out.println("---寮�濮�---"); + String savePath = "D:/crm/plan/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� + try{ + FileSaveExampleUtil.saveFile(file, savePath); + }catch (Exception e){ + return R.error(); + } + return R.ok(); + } + + @RequestMapping(value = "/plan/delete/file/auth") +// @ManagerAuth + public R deleteFile(@RequestParam("planId") String planId,@RequestParam MultipartFile file){ + planId="涓婁紶鏂囦欢-20"; + String[] split = planId.split("-"); + int id = Integer.parseInt(split[1]); + System.out.println("---寮�濮�---"); + String savePath = "D:/crm/plan/file/"+id+"/"+file.getName(); // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� + try{ + FileSaveExampleUtil.deleteFilesInDirectory(savePath); + }catch (Exception e){ + return R.error(); + } + return R.ok(); + } + + @RequestMapping(value = "/plan/view/file/auth") +// @ManagerAuth + public R viewFile(@RequestParam("planId") String planId){ + int id = Integer.parseInt(planId); + String savePath = "D:/crm/plan/file/"+id+"/"; // 鎸囧畾淇濆瓨鏂囦欢鐨勮矾寰� + try{ + List<FileSaveExampleUtil.FileDTO> fileDTOS = FileSaveExampleUtil.viewFileList(savePath); + return R.ok(fileDTOS); + }catch (Exception e){ + return R.error(); + } + } + + @RequestMapping(value = "/plan/download/file/auth") +// @ManagerAuth + public R downloadFile(@RequestParam("downloadUrl") String downloadUrl,HttpServletResponse response){ + System.out.println("---寮�濮�---"); +// MultipartFile + try{ + ResponseEntity<Resource> resourceResponseEntity = FileSaveExampleUtil.downloadFile(downloadUrl, response); + return R.ok(resourceResponseEntity); + }catch (Exception e){ + return R.error(); + } + } + + + @PostMapping(value = "/plan/approval/auth") @ManagerAuth public R approval(@RequestParam Long planId, - @RequestParam(required = false) Long planner){ + @RequestParam(required = false) Long plannerId){ Plan plan = planService.selectById(planId); assert plan != null; @@ -236,15 +340,137 @@ } break; case 2: + // 鏌ユ壘瑙勫垝缁勯暱 + PlanType planType = planTypeService.selectById(plan.getPlanType()); + User planLeader = planTypeService.findPlanLeader(planType); + if (Cools.isEmpty(planLeader)) { + throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�"); + } + if (Cools.isEmpty(planLeader)) { + throw new CoolException("鏈煡鎵惧埌瑙勫垝缁勯暱锛岃鑱旂郴绠$悊鍛�"); + } + if (!getUserId().equals(planLeader.getId())) { + return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�"); + } + if (Cools.isEmpty(plannerId)) { + return R.error("鎸囧畾瑙勫垝鍛樹笉鑳戒负绌�"); + } + User planner = userService.selectById(plannerId); + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list) { + switch (dto.getStep()) { + case 2: + dto.setCurr(Boolean.FALSE); + break; + case 3: + dto.setCurr(Boolean.TRUE); + dto.setMsg("鍞墠缁勯暱" + planLeader.getNickname() + "瀹℃壒閫氳繃"); + dto.setTime(DateUtils.convert(new Date())); + break; + case 4: + dto.setUserId(planner.getId()); + dto.setUsername(planner.getNickname()); + break; + default: + break; + } + } + plan.setSettleMsg(JSON.toJSONString(list)); + // 淇敼瑙勫垝鍗曠姸鎬� + plan.setSettle(3); // 瑙勫垝鍛樺緟瀹� + plan.setPlanner(planner.getId()); + plan.setUpdateBy(getUserId()); + plan.setUpdateTime(new Date()); + + if (!planService.updateById(plan)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + + // 娣诲姞瑙勫垝鍛樿窡杩涗汉 + PlanFoll planFoll = new PlanFoll(); + planFoll.setPlanId(plan.getId()); + planFoll.setUserId(planner.getId()); + if (!planFollService.insert(planFoll)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } break; case 3: + User plannerUser = userService.selectById(plan.getPlanner()); + if (Cools.isEmpty(plannerUser)) { + return R.error("鏈壘鍒拌鍒掑憳"); + } + if (!getUserId().equals(plannerUser.getId())) { + return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�"); + } + // 涓氬姟鍛� + User salesman = userService.selectById(plan.getUserId()); + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list0 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list0) { + switch (dto.getStep()) { + case 3: + dto.setCurr(Boolean.FALSE); + break; + case 4: + dto.setCurr(Boolean.TRUE); + dto.setMsg("瑙勫垝鍛�" + plannerUser.getNickname() + "瀹℃壒閫氳繃"); + dto.setTime(DateUtils.convert(new Date())); + break; + case 5: + dto.setUserId(salesman.getId()); + dto.setUsername(salesman.getNickname()); + break; + default: + break; + } + } + plan.setSettleMsg(JSON.toJSONString(list0)); + // 淇敼瑙勫垝鍗曠姸鎬� + plan.setSettle(4); // 瀹℃壒閫氳繃 + plan.setUpdateBy(getUserId()); + plan.setUpdateTime(new Date()); + + if (!planService.updateById(plan)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } break; case 4: + // 涓氬姟鍛� + User salesman0 = userService.selectById(plan.getUserId()); + if (!getUserId().equals(salesman0.getId())) { + return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄�"); + } + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list1 = JSON.parseArray(plan.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list1) { + switch (dto.getStep()) { + case 4: + dto.setCurr(Boolean.TRUE); + break; + case 5: + dto.setCurr(Boolean.TRUE); + dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "瀹℃壒閫氳繃"); + dto.setTime(DateUtils.convert(new Date())); + break; + default: + break; + } + } + plan.setSettleMsg(JSON.toJSONString(list1)); + // 淇敼瑙勫垝鍗曠姸鎬� + plan.setSettle(5); // 瀹℃壒閫氳繃 + plan.setUpdateBy(getUserId()); + plan.setUpdateTime(new Date()); + + if (!planService.updateById(plan)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } break; default: return R.error(); } - return R.ok(); + return R.ok("瀹℃壒鎴愬姛"); } @PostMapping(value = "/plan/planner/list/auth") -- Gitblit v1.9.1