From 2c7a0b5c9cded118d3c3c46211adf40fe558d67b Mon Sep 17 00:00:00 2001 From: LSH Date: 星期五, 24 十一月 2023 14:13:11 +0800 Subject: [PATCH] # --- src/main/java/com/zy/crm/manager/controller/PriSalesController.java | 228 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 200 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/zy/crm/manager/controller/PriSalesController.java b/src/main/java/com/zy/crm/manager/controller/PriSalesController.java index 16c6e53..cea1345 100644 --- a/src/main/java/com/zy/crm/manager/controller/PriSalesController.java +++ b/src/main/java/com/zy/crm/manager/controller/PriSalesController.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.Cools; 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.PriOnline; -import com.zy.crm.manager.entity.PriSales; -import com.zy.crm.manager.service.ItemService; -import com.zy.crm.manager.service.PriOnlineService; -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 PriSalesService priSalesService; @Autowired - private PriOnlineService priOnlineService; + private PriOnline2Service priOnline2Service; @Autowired - private ItemService itemService; + private PlanService planService; + + @Autowired + private PriQuoteBudgetService priQuoteBudgetService; + + @Autowired + private UserService userService; @RequestMapping(value = "/priSales/{id}/auth") @ManagerAuth public R get(@PathVariable("id") String id) { - return R.ok(priSalesService.selectById(String.valueOf(id))); + PriSales priSales = priSalesService.selectById(String.valueOf(id)); + assert priSales != null; + JSONObject resultObj = JSON.parseObject(JSON.toJSONString(priSales)); + // 姝ラ鏉$浉鍏� + resultObj.put("step", priSales.getSettle() == 4 ? 0 : priSales.getSettle() + 1); + return R.ok().add(resultObj); } @RequestMapping(value = "/priSales/list/auth") @@ -57,40 +69,66 @@ @RequestParam(required = false)String condition, @RequestParam Map<String, Object> param){ EntityWrapper<PriSales> 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("allopen")); + 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("allopen")); excludeTrash(param); convert(param, wrapper); allLike(PriSales.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(priSalesService.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 = "/priSales/add/auth") - @ManagerAuth + @ManagerAuth(memo = "娣诲姞浜у搧璐圭敤鏄庣粏") public R add(@RequestBody Map<String,Object> map) { - PriOnline priOnline = priOnlineService.selectById(Long.parseLong(map.get("priOnlineId").toString())); + PriOnline2 priOnline2 = priOnline2Service.selectById(Long.parseLong(map.get("priOnlineId").toString())); PriSales priSales = new PriSales(); priSales.setCreateTime(new Date()); priSales.setTitle(map.get("title").toString()); - priSales.setTemplateName(priOnline.getTemplateName()); + priSales.setTemplateName(priOnline2.getTemplateName()); priSales.setSheetData(map.get("sheetData").toString()); - priSales.setItemId(priOnline.getItemId()); - priSales.setOrderNum(priOnline.getOrderNum()); + priSales.setPriOnline2Id(Long.parseLong(map.get("priOnlineId").toString())); + priSales.setItemId(priOnline2.getItemId()); + priSales.setOrderNum(priOnline2.getOrderNum()); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); priSales.setInOrderNum(format.format(new Date())); @@ -100,21 +138,32 @@ priSales.setUpdateUserId(getUserId()); //鏇存柊鏃堕棿 priSales.setUpdateTime(new Date()); + priSales.setDeptId(getDeptId()); //涓氬姟鍛� - Item item = itemService.selectById(priSales.getItemId()); - priSales.setMemberId(item.getMember()); + Plan plan = planService.selectById(priSales.getItemId()); + priSales.setMemberId(plan.getUserId()); + + priSales.setSettle(0); + + User manager = userService.getDeptManager(getHostId(), getUser().getDeptId()); // 鑾峰彇閮ㄩ棬棰嗗 + List<String> initNames = new ArrayList<>(); + initNames.add("鍒涘缓浜у搧璐圭敤鏄庣粏妯℃澘"); + initNames.add("鎻愪氦浜у搧璐圭敤鏄庣粏"); + initNames.add("閮ㄩ棬缁忕悊瀹℃牳"); + initNames.add("涓氬姟鍛樼‘璁�"); + priSales.setSettleMsg(JSON.toJSONString(SettleDto.initSalesPricing(manager,getUser(),getUser(),initNames,3))); //璁剧疆椤圭洰娴佺▼ - item.setStep(3); - itemService.updateById(item); + plan.setStep(3); + planService.updateById(plan); priSalesService.insert(priSales); return R.ok(); } @RequestMapping(value = "/priSales/addOther/auth") - @ManagerAuth + @ManagerAuth(memo = "鍙﹀瓨浜у搧璐圭敤鏄庣粏") public R addOther(@RequestBody Map<String,Object> map) { PriSales online = priSalesService.selectById(Long.parseLong(map.get("id").toString())); @@ -137,15 +186,15 @@ priSales.setUpdateTime(new Date()); //涓氬姟鍛� - Item item = itemService.selectById(priSales.getItemId()); - priSales.setMemberId(item.getMember()); + Plan plan = planService.selectById(priSales.getItemId()); + priSales.setMemberId(plan.getUserId()); priSalesService.insert(priSales); return R.ok(); } @RequestMapping(value = "/priSales/update/auth") - @ManagerAuth + @ManagerAuth(memo = "鏇存柊浜у搧璐圭敤鏄庣粏") public R update(@RequestBody Map<String,Object> map){ PriSales priSales = priSalesService.selectById(Long.parseLong(map.get("id").toString())); priSales.setTitle(map.get("title").toString()); @@ -159,7 +208,7 @@ } @RequestMapping(value = "/priSales/updateForm/auth") - @ManagerAuth + @ManagerAuth(memo = "鏇存柊浜у搧璐圭敤鏄庣粏妯℃澘鍚嶅拰鏍囬") public R updateForm(Long id,String templateName,String title){ PriSales priSales = priSalesService.selectById(id); priSales.setTemplateName(templateName); @@ -173,10 +222,16 @@ } @RequestMapping(value = "/priSales/delete/auth") - @ManagerAuth + @ManagerAuth(memo = "鍒犻櫎浜у搧璐圭敤鏄庣粏") public R delete(Long[] ids){ if (Cools.isEmpty(ids)){ return R.error(); + } + for (Long id : ids){ + int priQuoteBudget= priQuoteBudgetService.selectCount(new EntityWrapper<PriQuoteBudget>().eq("pri_sales_id", id)); + if (priQuoteBudget!=0){ + return R.error("瀛樺湪鍏宠仈鐨勬姤浠烽绠楀崟锛岀姝㈠垹闄わ紒锛侊紒"); + } } priSalesService.deleteBatchIds(Arrays.asList(ids)); return R.ok(); @@ -198,13 +253,13 @@ public R query(String condition) { EntityWrapper<PriSales> wrapper = new EntityWrapper<>(); wrapper.like("id", condition); - wrapper.in("member_id", getUserRoleBelongsToUserId("allopen")); + wrapper.in("user_id", getUserRoleBelongsToUserId("allopen")); Page<PriSales> page = priSalesService.selectPage(new Page<>(0, 10), wrapper); List<Map<String, Object>> result = new ArrayList<>(); for (PriSales priSales : page.getRecords()){ Map<String, Object> map = new HashMap<>(); map.put("id", priSales.getId()); - map.put("value", priSales.getInOrderNum() + "/" + priSales.getItemId$() + "/" + priSales.getMemberId$()); + map.put("value", priSales.getInOrderNum() + "/" + priSales.getPlanId$() + "/" + priSales.getMemberId$()+"/" + priSales.getTemplateName()); result.add(map); } return R.ok(result); @@ -391,4 +446,121 @@ } } + + @PostMapping(value = "/priSales/approval/auth") + @ManagerAuth + public R approvalBusinessTrip(@RequestParam Long priSalesId, + @RequestParam(required = false) Long plannerId){ + PriSales priSales = priSalesService.selectById(priSalesId); + assert priSales != null; + Date now = new Date(); + switch (priSales.getSettle()) { + case 0: + User user2 = userService.selectById(priSales.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(priSales.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; + } + } + priSales.setSettleMsg(JSON.toJSONString(list1)); + // 淇敼瑙勫垝鍗曠姸鎬� + priSales.setSettle(1); + priSales.setUpdateUserId(getUserId()); + priSales.setUpdateTime(now); + priSales.setMemberId(manager1.getId()); + + if (!priSalesService.updateById(priSales)) { + throw new CoolException("鎻愪氦澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + break; + case 1: + // 鏈儴闂ㄧ粡鐞嗗鏍� + User user = userService.selectById(priSales.getUserId()); + User manager = userService.getDeptManager(getHostId(), user.getDeptId()); + if (manager.getId().equals(getUserId())) { + + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list = JSON.parseArray(priSales.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; + } + } + priSales.setSettleMsg(JSON.toJSONString(list)); + + // 淇敼瑙勫垝鍗曠姸鎬� + priSales.setSettle(2); // 鐢宠閫氳繃 + priSales.setUpdateTime(now); + if (!priSalesService.updateById(priSales)) { + throw new CoolException("瀹℃牳澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + } else { + return R.error("鎶辨瓑锛屾偍娌℃湁瀹℃牳鐨勬潈闄愶紒锛侊紒"); + } + break; + case 2: + // 涓氬姟鍛� + User salesman0 = userService.selectById(priSales.getUserId()); + if (!getUserId().equals(salesman0.getId())) { + return R.error("鎶辨瓑锛屾偍鏃犻渶纭锛侊紒锛�"); + } + // 淇敼 settle 姝ラ鏁版嵁 + List<SettleDto> list2 = JSON.parseArray(priSales.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; + } + } + priSales.setSettleMsg(JSON.toJSONString(list2)); + // 淇敼瑙勫垝鍗曠姸鎬� + priSales.setSettle(3); // 瀹℃壒閫氳繃 + priSales.setUpdateTime(new Date()); + + if (!priSalesService.updateById(priSales)) { + throw new CoolException("纭澶辫触锛岃鑱旂郴绠$悊鍛�"); + } + break; + default: + return R.error(); + } + return R.ok("瀹℃壒鎴愬姛"); + } + } -- Gitblit v1.9.1