From 3740a5aca02714f0786b88e09de92340e6bf617d Mon Sep 17 00:00:00 2001 From: LSH Date: 星期二, 07 十一月 2023 10:11:25 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/manager/controller/PriQuoteBudgetController.java | 217 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 194 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/zy/crm/manager/controller/PriQuoteBudgetController.java b/src/main/java/com/zy/crm/manager/controller/PriQuoteBudgetController.java index c0c447a..010f694 100644 --- a/src/main/java/com/zy/crm/manager/controller/PriQuoteBudgetController.java +++ b/src/main/java/com/zy/crm/manager/controller/PriQuoteBudgetController.java @@ -1,5 +1,6 @@ package com.zy.crm.manager.controller; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; @@ -11,13 +12,13 @@ import com.core.common.DateUtils; import com.core.common.R; import com.core.domain.KeyValueVo; +import com.core.exception.CoolException; +import com.zy.crm.common.model.SettleDto; import com.zy.crm.common.web.BaseController; -import com.zy.crm.manager.entity.Item; -import com.zy.crm.manager.entity.PriQuoteBudget; -import com.zy.crm.manager.entity.PriSales; -import com.zy.crm.manager.service.ItemService; -import com.zy.crm.manager.service.PriQuoteBudgetService; -import com.zy.crm.manager.service.PriSalesService; +import com.zy.crm.manager.entity.*; +import com.zy.crm.manager.service.*; +import com.zy.crm.system.entity.User; +import com.zy.crm.system.service.UserService; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; @@ -37,15 +38,26 @@ private PriQuoteBudgetService priQuoteBudgetService; @Autowired - private ItemService itemService; + private PlanService planService; @Autowired private PriSalesService priSalesService; + @Autowired + private PriQuoteService priQuoteService; + + @Autowired + private UserService userService; + @RequestMapping(value = "/priQuoteBudget/{id}/auth") @ManagerAuth public R get(@PathVariable("id") String id) { - return R.ok(priQuoteBudgetService.selectById(String.valueOf(id))); + PriQuoteBudget priQuoteBudget = priQuoteBudgetService.selectById(String.valueOf(id)); + assert priQuoteBudget != null; + JSONObject resultObj = JSON.parseObject(JSON.toJSONString(priQuoteBudget)); + // 姝ラ鏉$浉鍏� + resultObj.put("step", priQuoteBudget.getSettle() == 4 ? 0 : priQuoteBudget.getSettle() + 1); + return R.ok().add(resultObj); } @RequestMapping(value = "/priQuoteBudget/list/auth") @@ -57,30 +69,55 @@ @RequestParam(required = false)String condition, @RequestParam Map<String, Object> param){ EntityWrapper<PriQuoteBudget> wrapper = new EntityWrapper<>(); - wrapper.setSqlSelect("id,title,create_time as createTime,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,update_user_id as updateUserId,update_time as updateTime,in_order_num as inOrderNum,member_id as memberId"); - wrapper.in("member_id", getUserRoleBelongsToUserId()); + wrapper.setSqlSelect("id,title,create_time as createTime,settle,filepath,item_id as itemId,order_num as orderNum,template_name as templateName,user_id as userId,update_user_id as updateUserId,update_time as updateTime,in_order_num as inOrderNum,member_id as memberId"); +// wrapper.in("member_id", getUserRoleBelongsToUserId()); excludeTrash(param); convert(param, wrapper); allLike(PriQuoteBudget.class, param.keySet(), wrapper, condition); + wrapper.or().eq("member_id",getUserId()); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(priQuoteBudgetService.selectPage(new Page<>(curr, limit), wrapper)); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ + boolean signUserId = false; + boolean signDeptId = false; + boolean signHostId = false; + for (Map.Entry<String, Object> entry : map.entrySet()){ + if (entry.getKey().equals("dept_id")){ + signDeptId = true; + if (String.valueOf(entry.getValue()).equals("19")){ + signHostId = true; + } + } + } for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)){ String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); + } else if (entry.getKey().equals("dept_id")){ + if (!val.equals("19")){ + wrapper.eq(entry.getKey(), val); + } + } else if (entry.getKey().equals("user_id") && !signDeptId){ + signUserId = true; + wrapper.eq(entry.getKey(), val); } else { wrapper.like(entry.getKey(), val); } } + if (!signUserId && !signDeptId){ + wrapper.eq("user_id", getUserId()); + } + if (signHostId){ + wrapper.or().eq("host_id",1); + } } @RequestMapping(value = "/priQuoteBudget/add/auth") - @ManagerAuth + @ManagerAuth(memo = "娣诲姞鎶ヤ环棰勭畻鍗�") public R add(@RequestBody Map<String,Object> map) { PriSales priSales = priSalesService.selectById(Long.parseLong(map.get("priSalesId").toString())); @@ -89,6 +126,7 @@ priQuoteBudget.setTitle(map.get("title").toString()); priQuoteBudget.setTemplateName(priSales.getTemplateName()); priQuoteBudget.setSheetData(map.get("sheetData").toString()); + priQuoteBudget.setPriSalesId(Long.parseLong(map.get("priSalesId").toString())); priQuoteBudget.setItemId(priSales.getItemId()); //淇濆瓨浜у搧璐圭敤鏄庣粏璁㈠崟鍙� priQuoteBudget.setOrderNum(priSales.getInOrderNum()); @@ -97,25 +135,36 @@ //鍒涘缓浜哄憳 priQuoteBudget.setUserId(getUserId()); + priQuoteBudget.setDeptId(getDeptId()); //鏇存柊浜哄憳 priQuoteBudget.setUpdateUserId(getUserId()); //鏇存柊鏃堕棿 priQuoteBudget.setUpdateTime(new Date()); //涓氬姟鍛� - Item item = itemService.selectById(priQuoteBudget.getItemId()); - priQuoteBudget.setMemberId(item.getMember()); + Plan plan = planService.selectById(priQuoteBudget.getItemId()); + priQuoteBudget.setMemberId(plan.getUserId()); + + priQuoteBudget.setSettle(0); + + User manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗 + List<String> initNames = new ArrayList<>(); + initNames.add("鍒涘缓鎶ヤ环棰勭畻鍗曟ā鏉�"); + initNames.add("鎻愪氦鎶ヤ环棰勭畻鍗�"); + initNames.add("閮ㄩ棬缁忕悊瀹℃牳"); + initNames.add("涓氬姟鍛樼‘璁�"); + priQuoteBudget.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricing(manager,getUser(),getUser(),initNames,3))); //璁剧疆椤圭洰娴佺▼ - item.setStep(4); - itemService.updateById(item); + plan.setStep(4); + planService.updateById(plan); priQuoteBudgetService.insert(priQuoteBudget); return R.ok(); } @RequestMapping(value = "/priQuoteBudget/addOther/auth") - @ManagerAuth + @ManagerAuth(memo = "鍙﹀瓨鎶ヤ环棰勭畻鍗�") public R addOther(@RequestBody Map<String,Object> map) { PriQuoteBudget quote = priQuoteBudgetService.selectById(Long.parseLong(map.get("id").toString())); @@ -138,15 +187,15 @@ priQuoteBudget.setUpdateTime(new Date()); //涓氬姟鍛� - Item item = itemService.selectById(priQuoteBudget.getItemId()); - priQuoteBudget.setMemberId(item.getMember()); + Plan plan = planService.selectById(priQuoteBudget.getItemId()); + priQuoteBudget.setMemberId(plan.getUserId()); priQuoteBudgetService.insert(priQuoteBudget); return R.ok(); } @RequestMapping(value = "/priQuoteBudget/update/auth") - @ManagerAuth + @ManagerAuth(memo = "鏇存柊鎶ヤ环棰勭畻鍗�") public R update(@RequestBody Map<String,Object> map){ PriQuoteBudget priQuoteBudget = priQuoteBudgetService.selectById(Long.parseLong(map.get("id").toString())); priQuoteBudget.setTitle(map.get("title").toString()); @@ -160,7 +209,7 @@ } @RequestMapping(value = "/priQuoteBudget/updateForm/auth") - @ManagerAuth + @ManagerAuth(memo = "鏇存柊鎶ヤ环棰勭畻鍗�") public R updateForm(Long id,String templateName,String title){ PriQuoteBudget priQuoteBudget = priQuoteBudgetService.selectById(id); priQuoteBudget.setTemplateName(templateName); @@ -174,10 +223,16 @@ } @RequestMapping(value = "/priQuoteBudget/delete/auth") - @ManagerAuth + @ManagerAuth(memo = "鍒犻櫎鎶ヤ环棰勭畻鍗�") public R delete(Long[] ids){ if (Cools.isEmpty(ids)){ return R.error(); + } + for (Long id : ids){ + int priQuote= priQuoteService.selectCount(new EntityWrapper<PriQuote>().eq("ori_quote_budget_id", id)); + if (priQuote!=0){ + return R.error("瀛樺湪鍏宠仈鐨勬姤浠峰崟锛岀姝㈠垹闄わ紒锛侊紒"); + } } priQuoteBudgetService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); @@ -199,13 +254,13 @@ public R query(String condition) { EntityWrapper<PriQuoteBudget> wrapper = new EntityWrapper<>(); wrapper.like("id", condition); - wrapper.in("member_id", getUserRoleBelongsToUserId()); + wrapper.in("user_id", getUserRoleBelongsToUserId()); Page<PriQuoteBudget> page = priQuoteBudgetService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); for (PriQuoteBudget priQuoteBudget : page.getRecords()){ Map<String, Object> map = new HashMap<>(); map.put("id", priQuoteBudget.getId()); - map.put("value", priQuoteBudget.getInOrderNum() + "/" + priQuoteBudget.getItemId$() + "/" + priQuoteBudget.getMemberId$()); + map.put("value", priQuoteBudget.getInOrderNum() + "/" + priQuoteBudget.getPlanId$() + "/" + priQuoteBudget.getMemberId$() + "/" + priQuoteBudget.getTemplateName()); result.add(map); } return R.ok(result); @@ -378,4 +433,120 @@ } } + @PostMapping(value = "/priQuoteBudget/approval/auth") + @ManagerAuth + public R approvalBusinessTrip(@RequestParam Long priQuoteBudgetId, + @RequestParam(required = false) Long plannerId){ + PriQuoteBudget priQuoteBudget = priQuoteBudgetService.selectById(priQuoteBudgetId); + assert priQuoteBudget != null; + Date now = new Date(); + switch (priQuoteBudget.getSettle()) { + case 0: + User user2 = userService.selectById(priQuoteBudget.getUserId()); + User manager1 = userService.getDeptManager(getHostId(), user2.getDeptId()); + + if (Cools.isEmpty(getUser())) { + return R.error("鎶辨瓑锛屾偍娌℃湁鎻愪氦鐨勬潈闄�"); + } + if (!getUserId().equals(getUser().getId())) { + return R.error("鎶辨瓑锛屾偍娌℃湁鎻愪氦鐨勬潈闄�"); + } + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list1 = JSON.parseArray(priQuoteBudget.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list1) { + switch (dto.getStep()) { + case 0: + dto.setCurr(Boolean.FALSE); + break; + case 1: + dto.setCurr(Boolean.TRUE); + dto.setMsg(getUser().getNickname() + "鎻愪氦瀹屾垚"); + dto.setTime(DateUtils.convert(now)); + break; + default: + break; + } + } + priQuoteBudget.setSettleMsg(JSON.toJSONString(list1)); + // 淇敼瑙勫垝鍗曠姸鎬� + priQuoteBudget.setSettle(1); + priQuoteBudget.setUpdateUserId(getUserId()); + priQuoteBudget.setUpdateTime(now); + priQuoteBudget.setMemberId(manager1.getId()); + + if (!priQuoteBudgetService.updateById(priQuoteBudget)) { + throw new CoolException("鎻愪氦澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + break; + case 1: + // 鏈儴闂ㄧ粡鐞嗗鏍� + User user = userService.selectById(priQuoteBudget.getUserId()); + User manager = userService.getDeptManager(getHostId(), user.getDeptId()); + if (manager.getId().equals(getUserId())) { + + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list = JSON.parseArray(priQuoteBudget.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list) { + switch (dto.getStep()) { + case 1: + dto.setCurr(Boolean.FALSE); + break; + case 2: + dto.setCurr(Boolean.TRUE); + dto.setMsg("閮ㄩ棬缁忕悊" + manager.getNickname() + "瀹℃壒閫氳繃"); + dto.setTime(DateUtils.convert(now)); + break; + default: + break; + } + } + priQuoteBudget.setSettleMsg(JSON.toJSONString(list)); + + // 淇敼瑙勫垝鍗曠姸鎬� + priQuoteBudget.setSettle(2); // 鐢宠閫氳繃 + priQuoteBudget.setUpdateTime(now); + if (!priQuoteBudgetService.updateById(priQuoteBudget)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } else { + return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄愶紒锛侊紒"); + } + break; + case 2: + // 涓氬姟鍛� + User salesman0 = userService.selectById(priQuoteBudget.getUserId()); + if (!getUserId().equals(salesman0.getId())) { + return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�"); + } + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list2 = JSON.parseArray(priQuoteBudget.getSettleMsg(), SettleDto.class); + for (SettleDto dto : list2) { + switch (dto.getStep()) { + case 2: + dto.setCurr(Boolean.TRUE); + break; + case 3: + dto.setCurr(Boolean.TRUE); + dto.setMsg("涓氬姟鍛�" + salesman0.getNickname() + "浠ョ‘璁�"); + dto.setTime(DateUtils.convert(new Date())); + break; + default: + break; + } + } + priQuoteBudget.setSettleMsg(JSON.toJSONString(list2)); + // 淇敼瑙勫垝鍗曠姸鎬� + priQuoteBudget.setSettle(3); // 瀹℃壒閫氳繃 + priQuoteBudget.setUpdateTime(new Date()); + + if (!priQuoteBudgetService.updateById(priQuoteBudget)) { + throw new CoolException("纭澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + break; + default: + return R.error(); + } + return R.ok("瀹℃壒鎴愬姛"); + } + } -- Gitblit v1.9.1