From 3df7bccbfcc4a927b50d61984d7188566b463ebc Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 11:47:11 +0800 Subject: [PATCH 01/18] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E5=A4=A9=E7=BB=93?= =?UTF-8?q?=E6=9D=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/huike/HuiKeApplication.java | 10 +- .../business/TbBusinessController.java | 23 +- .../clues/TbActivityController.java | 30 +- .../controller/report/IndexController.java | 39 ++- .../controller/report/ReportController.java | 61 +++- .../review/MybatisReviewController.java | 44 ++- .../business/strategy/impl/RuleStrategy.java | 17 +- .../mapper/business/TbBusinessMapper.xml | 11 + .../clues/service/ITbActivityService.java | 6 +- .../service/impl/TbActivityServiceImpl.java | 43 ++- .../mapper/clues/TbActivityMapper.xml | 4 +- .../resources/mapper/clues/TbClueMapper.xml | 4 +- .../contract/domain/vo/TbContractVO.java | 14 + .../review/mapper/MybatisReviewMapper.java | 11 +- .../huike/review/service/ReviewService.java | 11 +- .../service/impl/ReviewServiceImpl.java | 42 ++- .../resources/mapper/review/ReviewMapper.xml | 19 +- .../huike/report/domain/vo/LongHuBangVO.java | 49 +++ .../com/huike/report/mapper/ReportMapper.java | 67 +++- .../huike/report/service/IReportService.java | 25 +- .../service/impl/ReportServiceImpl.java | 304 +++++++++++++----- .../resources/mapper/report/ReportMapper.xml | 303 +++++++++++++---- .../huike/clues/mapper/SysDictDataMapper.java | 6 +- .../mapper/system/SysDictDataMapper.xml | 7 +- .../resources/mapper/system/SysUserMapper.xml | 7 +- 25 files changed, 887 insertions(+), 270 deletions(-) create mode 100644 huike-contract/src/main/java/com/huike/contract/domain/vo/TbContractVO.java create mode 100644 huike-report/src/main/java/com/huike/report/domain/vo/LongHuBangVO.java diff --git a/huike-admin/src/main/java/com/huike/HuiKeApplication.java b/huike-admin/src/main/java/com/huike/HuiKeApplication.java index 8afcd6c..b5b489a 100644 --- a/huike-admin/src/main/java/com/huike/HuiKeApplication.java +++ b/huike-admin/src/main/java/com/huike/HuiKeApplication.java @@ -1,14 +1,10 @@ package com.huike; import com.huike.clues.service.ITbActivityService; -import com.huike.clues.service.impl.SysDictTypeServiceImpl; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; - -import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.scheduling.annotation.EnableScheduling; /** @@ -18,7 +14,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class}) @EnableScheduling -public class HuiKeApplication implements CommandLineRunner { +public class HuiKeApplication /*implements CommandLineRunner */{ @Autowired private ITbActivityService activityService; @@ -27,7 +23,7 @@ public class HuiKeApplication implements CommandLineRunner { SpringApplication.run(HuiKeApplication.class, args); } - @Override + /*@Override public void run(String... args) { try{ //加载所有活动code到缓存 @@ -35,6 +31,6 @@ public class HuiKeApplication implements CommandLineRunner { }catch (Exception ex){ ex.printStackTrace(); } - } + }*/ } diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java index 735bbec..cbf732b 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java @@ -1,20 +1,5 @@ package com.huike.web.controller.business; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.huike.business.domain.TbBusiness; import com.huike.business.service.ITbBusinessService; import com.huike.clues.domain.vo.AssignmentVo; @@ -25,6 +10,12 @@ import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; import com.huike.common.utils.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; /** * 商机Controller @@ -133,7 +124,7 @@ public class TbBusinessController extends BaseController { /** * 批量捞取 */ - @PreAuthorize("@ss.hasPermi('business:business:gainbussiness')") + @PreAuthorize("@ss.hasPermi('business:business:gain')") @Log(title = "批量捞取", businessType = BusinessType.UPDATE) @PutMapping("/gain") public AjaxResult gain(@RequestBody AssignmentVo assignmentVo) { diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbActivityController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbActivityController.java index 83da5c2..4b4c024 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbActivityController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbActivityController.java @@ -1,19 +1,5 @@ package com.huike.web.controller.clues; -import java.util.List; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.huike.clues.domain.TbActivity; import com.huike.clues.service.ITbActivityService; import com.huike.common.annotation.Log; @@ -21,6 +7,16 @@ import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeFormatterBuilder; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * 活动管理Controller @@ -60,6 +56,12 @@ public class TbActivityController extends BaseController { TbActivity tbActivity =new TbActivity(); tbActivity.setChannel(channel); tbActivity.setStatus("2"); + HashMap params = new HashMap<>(); + LocalDateTime now = LocalDateTime.now(); + DateTimeFormatter formatter = new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd").toFormatter(); + String format = now.format(formatter); + params.put("endTime", format); + tbActivity.setParams(params); return AjaxResult.success(tbActivityService.selectTbActivityList(tbActivity)); } diff --git a/huike-admin/src/main/java/com/huike/web/controller/report/IndexController.java b/huike-admin/src/main/java/com/huike/web/controller/report/IndexController.java index fdb5f43..7f78804 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/report/IndexController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/report/IndexController.java @@ -1,14 +1,17 @@ package com.huike.web.controller.report; +import com.huike.common.core.domain.AjaxResult; +import com.huike.report.domain.vo.IndexTodayInfoVO; +import com.huike.report.domain.vo.LongHuBangVO; +import com.huike.report.service.IReportService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.huike.common.core.domain.AjaxResult; -import com.huike.report.service.IReportService; +import java.util.List; @RestController @RequestMapping("/index") @@ -29,4 +32,36 @@ public class IndexController { @RequestParam("endCreateTime") String endCreateTime){ return AjaxResult.success(reportService.getBaseInfo(beginCreateTime,endCreateTime)); } + /** + * 首页--今日是数据简报统计 + * @return + */ + @GetMapping("/getTodayInfo") + public AjaxResult getTodayInfo(){ + IndexTodayInfoVO todayInfoVO=reportService.getTodayInfo(); + return AjaxResult.success(todayInfoVO); + } + /** + * 商机转化龙虎榜 + * @return + */ + @GetMapping("/businessChangeStatistics") + public AjaxResult businessChangeStatistics(@RequestParam("beginCreateTime") String beginCreateTime, + @RequestParam("endCreateTime") String endCreateTime){ + List longHuBangVOS=reportService.businessChangeStatistics(beginCreateTime,endCreateTime); + + return AjaxResult.success(longHuBangVOS); + } +/** + * 线索转化龙虎榜 + * @return + */ + @GetMapping("/salesStatistic") + public AjaxResult salesStatistic(@RequestParam("beginCreateTime") String beginCreateTime, + @RequestParam("endCreateTime") String endCreateTime){ + List longHuBangVOS=reportService.salesStatistic(beginCreateTime,endCreateTime); + + return AjaxResult.success(longHuBangVOS); + } + } \ No newline at end of file diff --git a/huike-admin/src/main/java/com/huike/web/controller/report/ReportController.java b/huike-admin/src/main/java/com/huike/web/controller/report/ReportController.java index 2943456..96e7cf8 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/report/ReportController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/report/ReportController.java @@ -1,23 +1,25 @@ package com.huike.web.controller.report; -import java.util.List; -import java.util.Map; - -import com.huike.report.domain.vo.LineChartVO; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - import com.huike.clues.domain.TbActivity; import com.huike.clues.domain.TbClue; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.contract.domain.TbContract; +import com.huike.contract.domain.vo.TbContractVO; import com.huike.report.domain.vo.ActivityStatisticsVo; +import com.huike.report.domain.vo.LineChartVO; +import com.huike.report.domain.vo.VulnerabilityMapVo; import com.huike.report.service.IReportService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; @RestController @@ -117,7 +119,7 @@ public class ReportController extends BaseController { * @param endCreateTime * @return */ - @GetMapping("/ownerShipStatisticsList/{beginCreateTime}/{endCreateTime}") + @GetMapping("/ownerShipStatisticsList") public TableDataInfo ownerShipStatisticsList(@PathVariable String beginCreateTime, @PathVariable String endCreateTime){ startPage(); List> list = reportService.ownerShipStatisticsList(beginCreateTime,endCreateTime); @@ -147,6 +149,43 @@ public class ReportController extends BaseController { List list= reportService.activityStatisticsList(activity); return getDataTablePage(list); } + /** + * 报名统计 + * @param + * @return + */ + @GetMapping("/subjectStatistics/{beginCreateTime}/{endCreateTime}") + public AjaxResult subjectStatistics(@PathVariable String beginCreateTime, + @PathVariable String endCreateTime) { + List tbContract=reportService.subjectStatistics(beginCreateTime,endCreateTime); + + return AjaxResult.success(tbContract); + } + /** + * 线索统计 + * @param beginCreateTime + * @param endCreateTime + * @return + */ + @GetMapping("/cluesStatistics/{beginCreateTime}/{endCreateTime}") + public LineChartVO cluesStatistics(@PathVariable String beginCreateTime, + @PathVariable String endCreateTime) throws ParseException { + return reportService.cluesStatistics(beginCreateTime,endCreateTime); + } + + /** + * 线索转化率统计 + * + * @param beginCreateTime + * @param endCreateTime + * @return + */ + @GetMapping("/getVulnerabilityMap/{beginCreateTime}/{endCreateTime}") + public AjaxResult getVulnerabilityMap(@PathVariable String beginCreateTime, + @PathVariable String endCreateTime) { + VulnerabilityMapVo vulnerabilityMapVo=reportService.getVulnerabilityMap(beginCreateTime, endCreateTime); + return AjaxResult.success(vulnerabilityMapVo); + } } diff --git a/huike-admin/src/main/java/com/huike/web/controller/review/MybatisReviewController.java b/huike-admin/src/main/java/com/huike/web/controller/review/MybatisReviewController.java index 23bf229..7732c78 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/review/MybatisReviewController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/review/MybatisReviewController.java @@ -2,10 +2,12 @@ package com.huike.web.controller.review; import com.huike.common.core.controller.BaseController; +import com.huike.common.core.domain.AjaxResult; +import com.huike.common.core.page.TableDataInfo; import com.huike.review.service.ReviewService; +import com.huike.review.vo.MybatisReviewVO; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; /** * 该Controller主要是为了复习三层架构以及Mybatis使用的,该部分接口已经放开权限,可以直接访问 @@ -19,11 +21,39 @@ public class MybatisReviewController extends BaseController { private ReviewService reviewService; /**=========================================================新增数据============================================*/ - - /**=========================================================删除数据=============================================*/ - + @GetMapping("saveData/{name}/{age}/{sex}") + public AjaxResult save(@PathVariable String name,@PathVariable Integer age,@PathVariable String sex) { + MybatisReviewVO review = new MybatisReviewVO(); + review.setName(name); + review.setAge(age); + review.setSex(sex); + return reviewService.save(review); + } + @PostMapping("saveData") + public AjaxResult save(@RequestBody MybatisReviewVO reviewVO) { + return reviewService.save(reviewVO); + } + + /** + * =========================================================删除数据============================================= + */ + @PostMapping("update") + public AjaxResult update(@RequestBody MybatisReviewVO reviewVO) { + return reviewService.update(reviewVO); + } /**=========================================================修改数据=============================================*/ - + @DeleteMapping("remove/{id}") + public AjaxResult remove(@PathVariable Long id) { + return reviewService.remove(id); + } /**=========================================================查询数据=============================================*/ - + @GetMapping("getById") + public AjaxResult getById(@RequestParam Long id) { + return reviewService.getById(id); + } + @GetMapping("getDataByPage") + public TableDataInfo getByPage() { + startPage(); + return getDataTable(reviewService.getByPage()); + } } \ No newline at end of file diff --git a/huike-business/src/main/java/com/huike/business/strategy/impl/RuleStrategy.java b/huike-business/src/main/java/com/huike/business/strategy/impl/RuleStrategy.java index fcca586..07e8f13 100644 --- a/huike-business/src/main/java/com/huike/business/strategy/impl/RuleStrategy.java +++ b/huike-business/src/main/java/com/huike/business/strategy/impl/RuleStrategy.java @@ -6,18 +6,15 @@ import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.mapper.SysDictDataMapper; import com.huike.clues.mapper.SysUserMapper; import com.huike.clues.mapper.TbAssignRecordMapper; -import com.huike.clues.service.ITbCourseService; import com.huike.common.core.domain.entity.SysDictData; import com.huike.common.core.domain.entity.SysUser; import com.huike.common.utils.DateUtils; -import com.huike.common.utils.DictUtils; import com.huike.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; -import java.util.ArrayList; import java.util.List; /** @@ -32,14 +29,14 @@ public class RuleStrategy implements Rule { //这里能够成功注入吗? @Autowired - private static TbAssignRecordMapper assignRecordMapper; + private TbAssignRecordMapper assignRecordMapper; //这里能够成功注入吗? @Autowired - private static SysUserMapper userMapper; + private SysUserMapper userMapper; @Autowired - private static SysDictDataMapper dictDataMapper; + private SysDictDataMapper dictDataMapper; private static SysUser lisi = new SysUser(); @@ -56,7 +53,8 @@ public class RuleStrategy implements Rule { /** * 参考一下adminStrategy是怎么做的 */ - static{ + @PostConstruct + public void init() { try{ //空间换时间的方式将数据库中的学科读取到内存中 //预加载学科数据到内存中 @@ -74,6 +72,7 @@ public class RuleStrategy implements Rule { lisi = userMapper.selectUserByName("lisi"); lisi1 = userMapper.selectUserByName("lisi1"); }catch (Exception e){ + e.printStackTrace(); } } @@ -90,10 +89,10 @@ public class RuleStrategy implements Rule { @Override public Integer transforBusiness(TbBusiness tbBusiness) { //注意处理空指针的问题 - if(tbBusiness.getSubject().equals(subjectJAVA.getDictLabel())){ + if(tbBusiness.getSubject().equals(subjectJAVA.getDictValue())){ //如果意向学科是java--分配给lisi return distribute(tbBusiness,lisi); - }else if(tbBusiness.getSubject().equals(subjectHtml.getDictLabel())){ + }else if(tbBusiness.getSubject().equals(subjectHtml.getDictValue())){ //如果意向学科是前端--分配给lisi1 return distribute(tbBusiness,lisi1); }else{ diff --git a/huike-business/src/main/resources/mapper/business/TbBusinessMapper.xml b/huike-business/src/main/resources/mapper/business/TbBusinessMapper.xml index 8952968..ceb5526 100644 --- a/huike-business/src/main/resources/mapper/business/TbBusinessMapper.xml +++ b/huike-business/src/main/resources/mapper/business/TbBusinessMapper.xml @@ -117,6 +117,12 @@ and plan_time = #{planTime} and other_intention = #{otherIntention} and next_time = #{nextTime} + + and date_format(create_time,'%y%m%d') >= date_format(#{params.beginCreateTime},'%y%m%d') + + + and date_format(create_time,'%y%m%d') <= date_format(#{params.endCreateTime},'%y%m%d') + and status IN ('3','4') @@ -150,6 +156,11 @@ and b.other_intention = #{otherIntention} and b.next_time = #{nextTime} and DATE_FORMAT(b.create_time,'%Y-%m-%d') BETWEEN #{beginCreateTime} AND #{endCreateTime} + + + and b.status < '3' + and b.status = #{status} + AND (r.latest = '1' OR r.id IS NULL) AND (r.type = '1' OR r.id IS NULL) diff --git a/huike-clues/src/main/java/com/huike/clues/service/ITbActivityService.java b/huike-clues/src/main/java/com/huike/clues/service/ITbActivityService.java index 713595f..59297ae 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/ITbActivityService.java +++ b/huike-clues/src/main/java/com/huike/clues/service/ITbActivityService.java @@ -1,10 +1,10 @@ package com.huike.clues.service; +import com.huike.clues.domain.TbActivity; + import java.util.List; import java.util.Map; -import com.huike.clues.domain.TbActivity; - /** * 活动管理Service接口 * @date 2021-04-01 @@ -65,5 +65,5 @@ public interface ITbActivityService public Map getCountByStatus(); - void loadAllActivityCode(); +// void loadAllActivityCode(); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbActivityServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbActivityServiceImpl.java index 60e8156..dcd3186 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbActivityServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbActivityServiceImpl.java @@ -1,22 +1,16 @@ package com.huike.clues.service.impl; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - +import com.huike.clues.domain.TbActivity; +import com.huike.clues.mapper.TbActivityMapper; +import com.huike.clues.service.ITbActivityService; +import com.huike.common.utils.DateUtils; import com.huike.common.utils.uuid.UUIDUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import com.huike.clues.domain.TbActivity; -import com.huike.clues.mapper.TbActivityMapper; -import com.huike.clues.service.ITbActivityService; -import com.huike.common.constant.Constants; -import com.huike.common.core.redis.RedisCache; -import com.huike.common.utils.DateUtils; -import com.huike.common.utils.StringUtils; +import java.util.List; +import java.util.Map; /** * 活动管理Service业务层处理 @@ -27,8 +21,8 @@ public class TbActivityServiceImpl implements ITbActivityService { @Autowired private TbActivityMapper tbActivityMapper; - @Autowired - private RedisCache redisCache; + /*@Autowired + private RedisCache redisCache;*/ /** @@ -72,10 +66,11 @@ public class TbActivityServiceImpl implements ITbActivityService { @Transactional public int insertTbActivity(TbActivity tbActivity){ tbActivity.setCreateTime(DateUtils.getNowDate()); - tbActivity.setCode(getCode()); + tbActivity.setCode(UUIDUtils.getUUID()); tbActivity.setStatus("2"); int rows= tbActivityMapper.insertTbActivity(tbActivity); - loadAllActivityCode(); +// loadAllActivityCode(); + return rows; } @@ -132,24 +127,24 @@ public class TbActivityServiceImpl implements ITbActivityService { /** * 加载活动编号到缓存中 */ - public void loadAllActivityCode() { + /*public void loadAllActivityCode() { List codeList= tbActivityMapper.selectAllCode(); Set set= new HashSet<>(codeList); redisCache.setCacheSet(Constants.ACT_CODE_KEY, set); - } + }*/ /** * 生成活动编号 * @return */ - private String getCode(){ - //随机8位编码 - String code= StringUtils.getRandom(8); + /*private String getCode(){ //店铺校验 Set codeSets = redisCache.getCacheSet(Constants.ACT_CODE_KEY); - if(codeSets.contains(code)){ - return getCode(); + //随机8位编码 + String code= UUIDUtils.getUUID(); + while (codeSets.contains(code)){ + code=UUIDUtils.getUUID(); } return code; - } + }*/ } diff --git a/huike-clues/src/main/resources/mapper/clues/TbActivityMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbActivityMapper.xml index 3641134..99aba7d 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbActivityMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbActivityMapper.xml @@ -41,10 +41,10 @@ and date_format(create_time,'%y%m%d') <= date_format(#{params.endCreateTime},'%y%m%d') - and date_format(begin_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') + and date_format(begin_time,'%y%m%d') <= date_format(#{params.beginTime},'%y%m%d') - and date_format(end_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d') + and date_format(end_time,'%y%m%d') >= date_format(#{params.endTime},'%y%m%d') ORDER BY `create_time` DESC diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml index 10a54f4..cd564fa 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml @@ -90,9 +90,9 @@ + where id=#{id} + + \ No newline at end of file diff --git a/huike-report/src/main/java/com/huike/report/domain/vo/LongHuBangVO.java b/huike-report/src/main/java/com/huike/report/domain/vo/LongHuBangVO.java new file mode 100644 index 0000000..307acf8 --- /dev/null +++ b/huike-report/src/main/java/com/huike/report/domain/vo/LongHuBangVO.java @@ -0,0 +1,49 @@ +package com.huike.report.domain.vo; + +import java.math.BigDecimal; + +/** + * @author light + * @date 2022年05月28日 11:07 + * @description + */ + +public class LongHuBangVO { + private String create_by; + private String deptName; + private Long num; + private BigDecimal radio; + + + public String getCreate_by() { + return create_by; + } + + public void setCreate_by(String create_by) { + this.create_by = create_by; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public Long getNum() { + return num; + } + + public void setNum(Long num) { + this.num = num; + } + + public BigDecimal getRadio() { + return radio; + } + + public void setRadio(BigDecimal radio) { + this.radio = radio; + } +} diff --git a/huike-report/src/main/java/com/huike/report/mapper/ReportMapper.java b/huike-report/src/main/java/com/huike/report/mapper/ReportMapper.java index e57e24e..a020fc0 100644 --- a/huike-report/src/main/java/com/huike/report/mapper/ReportMapper.java +++ b/huike-report/src/main/java/com/huike/report/mapper/ReportMapper.java @@ -1,10 +1,15 @@ package com.huike.report.mapper; -import java.util.Map; - +import com.huike.contract.domain.vo.TbContractVO; +import com.huike.report.domain.vo.IndexTodayInfoVO; +import com.huike.report.domain.vo.IndexTodoInfoVO; +import com.huike.report.domain.vo.LongHuBangVO; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.session.ResultHandler; -import com.huike.clues.domain.vo.IndexStatisticsVo; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; /** * 首页统计分析的Mapper @@ -57,10 +62,66 @@ public interface ReportMapper { @Param("endTime") String endCreateTime, @Param("username") String username); + /**=========================================今日简报========================================*/ + Integer getTodayClueNum(@Param("username") String username, @Param("now") LocalDateTime now); + + Integer getTodayBusinessNum(@Param("username") String username, @Param("now") LocalDateTime now); + + Integer getTodayContractNum(@Param("username") String username, @Param("now") LocalDateTime now); + + Double getTodayAmount(@Param("username") String username, @Param("now") LocalDateTime now); + + IndexTodayInfoVO getTodayInfo(@Param("username") String username, @Param("now") LocalDateTime now); /**=========================================待办========================================*/ + IndexTodoInfoVO getTodoInfo(@Param("beginCreateTime")String beginCreateTime,@Param("endCreateTime") String endCreateTime); + + Integer getTodoClueNum(@Param("username") String username,@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getTodoBusinessNum(@Param("username") String username,@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getToallocatedCluesNum(@Param("username") String username,@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getToallocatedBusinessNum(@Param("username") String username,@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + List subjectStatistics(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + + + List> cluesStatistics(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + void cluesStatistics1(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime, ResultHandler handler); + + Integer getAllCluesNum(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getEffectiveCluesNum(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getBusinessNums(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getContractNums(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + List businessChangeStatistics(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getBusinessNumsB(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + + Integer getAllCluesNumS(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); + List salesStatistic(@Param("beginCreateTime")String beginCreateTime, + @Param("endCreateTime") String endCreateTime); } diff --git a/huike-report/src/main/java/com/huike/report/service/IReportService.java b/huike-report/src/main/java/com/huike/report/service/IReportService.java index c6c0b6a..168d435 100644 --- a/huike-report/src/main/java/com/huike/report/service/IReportService.java +++ b/huike-report/src/main/java/com/huike/report/service/IReportService.java @@ -1,15 +1,15 @@ package com.huike.report.service; -import java.util.List; -import java.util.Map; - -import com.huike.report.domain.vo.*; -import org.apache.ibatis.annotations.Param; - import com.huike.clues.domain.TbActivity; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.vo.IndexStatisticsVo; import com.huike.contract.domain.TbContract; +import com.huike.contract.domain.vo.TbContractVO; +import com.huike.report.domain.vo.*; + +import java.text.ParseException; +import java.util.List; +import java.util.Map; public interface IReportService { @@ -108,4 +108,17 @@ public interface IReportService { IndexBaseInfoVO getBaseInfo(String beginCreateTime, String endCreateTime); + IndexTodayInfoVO getTodayInfo(); + + IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime); + + List subjectStatistics(String beginCreateTime, String endCreateTime); + + LineChartVO cluesStatistics(String beginCreateTime, String endCreateTime) throws ParseException; + + VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime); + + List businessChangeStatistics(String beginCreateTime, String endCreateTime); + + List salesStatistic(String beginCreateTime, String endCreateTime); } diff --git a/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java b/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java index 699e6d4..0c6af49 100644 --- a/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java +++ b/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java @@ -1,41 +1,31 @@ package com.huike.report.service.impl; -import java.math.BigDecimal; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.CompletableFuture; - -import com.huike.report.domain.vo.*; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - import com.huike.business.mapper.TbBusinessMapper; import com.huike.clues.domain.TbActivity; import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.vo.IndexStatisticsVo; -import com.huike.clues.mapper.SysDeptMapper; -import com.huike.clues.mapper.SysDictDataMapper; -import com.huike.clues.mapper.TbActivityMapper; -import com.huike.clues.mapper.TbAssignRecordMapper; -import com.huike.clues.mapper.TbClueMapper; +import com.huike.clues.mapper.*; import com.huike.common.core.domain.entity.SysDept; import com.huike.common.utils.SecurityUtils; import com.huike.contract.domain.TbContract; +import com.huike.contract.domain.vo.TbContractVO; import com.huike.contract.mapper.TbContractMapper; +import com.huike.report.domain.vo.*; import com.huike.report.mapper.ReportMapper; import com.huike.report.service.IReportService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.*; @Service -public class ReportServiceImpl implements IReportService { +public class ReportServiceImpl implements IReportService { @Autowired private TbContractMapper contractMapper; @@ -65,24 +55,24 @@ public class ReportServiceImpl implements IReportService { @Override public LineChartVO contractStatistics(String beginCreateTime, String endCreateTime) { - LineChartVO lineChartVo =new LineChartVO(); + LineChartVO lineChartVo = new LineChartVO(); try { - List timeList= findDates(beginCreateTime,endCreateTime); + List timeList = findDates(beginCreateTime, endCreateTime); lineChartVo.setxAxis(timeList); List series = new ArrayList<>(); - List> statistics = contractMapper.contractStatistics(beginCreateTime,endCreateTime); - LineSeriesVO lineSeriesDTO1=new LineSeriesVO(); + List> statistics = contractMapper.contractStatistics(beginCreateTime, endCreateTime); + LineSeriesVO lineSeriesDTO1 = new LineSeriesVO(); lineSeriesDTO1.setName("新增客户数"); - LineSeriesVO lineSeriesDTO2=new LineSeriesVO(); + LineSeriesVO lineSeriesDTO2 = new LineSeriesVO(); lineSeriesDTO2.setName("客户总数"); int sum = 0; for (String s : timeList) { - Optional optional= statistics.stream().filter(d->d.get("dd").equals(s)).findFirst(); - if(optional.isPresent()){ - Map cuurentData= (Map)optional.get(); + Optional optional = statistics.stream().filter(d -> d.get("dd").equals(s)).findFirst(); + if (optional.isPresent()) { + Map cuurentData = (Map) optional.get(); lineSeriesDTO1.getData().add(cuurentData.get("num")); sum += Integer.parseInt(cuurentData.get("num").toString()); - }else{ + } else { lineSeriesDTO1.getData().add(0); } lineSeriesDTO2.getData().add(sum); @@ -93,26 +83,26 @@ public class ReportServiceImpl implements IReportService { } catch (ParseException e) { // e.printStackTrace(); } - return lineChartVo; + return lineChartVo; } @Override public LineChartVO salesStatistics(String beginCreateTime, String endCreateTime) { - LineChartVO lineChartVo =new LineChartVO(); + LineChartVO lineChartVo = new LineChartVO(); try { - List timeList= findDates(beginCreateTime,endCreateTime); + List timeList = findDates(beginCreateTime, endCreateTime); lineChartVo.setxAxis(timeList); List series = new ArrayList<>(); - List> statistics = contractMapper.salesStatistics(beginCreateTime,endCreateTime); - LineSeriesVO lineSeriesVo=new LineSeriesVO(); + List> statistics = contractMapper.salesStatistics(beginCreateTime, endCreateTime); + LineSeriesVO lineSeriesVo = new LineSeriesVO(); lineSeriesVo.setName("销售统计"); - int sum=0; + int sum = 0; for (String s : timeList) { - Optional optional= statistics.stream().filter(d->d.get("dd").equals(s)).findFirst(); - if(optional.isPresent()){ - Map cuurentData= (Map)optional.get(); + Optional optional = statistics.stream().filter(d -> d.get("dd").equals(s)).findFirst(); + if (optional.isPresent()) { + Map cuurentData = (Map) optional.get(); lineSeriesVo.getData().add(cuurentData.get("sales")); - }else{ + } else { lineSeriesVo.getData().add(0); } } @@ -121,22 +111,20 @@ public class ReportServiceImpl implements IReportService { } catch (ParseException e) { // e.printStackTrace(); } - return lineChartVo; + return lineChartVo; } - - /** * 渠道统计 */ @Override public List> chanelStatistics(String beginCreateTime, String endCreateTime) { - List> data= contractMapper.chanelStatistics(beginCreateTime,endCreateTime); + List> data = contractMapper.chanelStatistics(beginCreateTime, endCreateTime); for (Map datum : data) { - String subjectValue= (String) datum.get("channel"); - String lable= sysDictDataMapper.selectDictLabel("clues_item",subjectValue); - datum.put("channel",lable); + String subjectValue = (String) datum.get("channel"); + String lable = sysDictDataMapper.selectDictLabel("clues_item", subjectValue); + datum.put("channel", lable); } return data; } @@ -149,13 +137,13 @@ public class ReportServiceImpl implements IReportService { @Override public List> activityStatistics(String beginCreateTime, String endCreateTime) { - List> data= contractMapper.activityStatistics(beginCreateTime,endCreateTime); + List> data = contractMapper.activityStatistics(beginCreateTime, endCreateTime); for (Map datum : data) { - Long activityId= (Long) datum.get("activity_id"); + Long activityId = (Long) datum.get("activity_id"); TbActivity tbActivity = activityMapper.selectTbActivityById(activityId); - if(tbActivity==null){ + if (tbActivity == null) { datum.put("activity", "其他"); - }else{ + } else { datum.put("activity", tbActivity.getName()); } } @@ -164,17 +152,18 @@ public class ReportServiceImpl implements IReportService { /** * 按照部门统计销售 + * * @param beginCreateTime * @param endCreateTime * @return */ @Override public List> deptStatisticsList(String beginCreateTime, String endCreateTime) { - List> data= contractMapper.deptStatistics(beginCreateTime,endCreateTime); + List> data = contractMapper.deptStatistics(beginCreateTime, endCreateTime); for (Map datum : data) { - Long deptId= (Long) datum.get("dept_id"); - if(deptId!=null){ - SysDept dept= deptMapper.selectDeptById(deptId); + Long deptId = (Long) datum.get("dept_id"); + if (deptId != null) { + SysDept dept = deptMapper.selectDeptById(deptId); datum.put("deptName", dept.getDeptName()); } } @@ -184,18 +173,19 @@ public class ReportServiceImpl implements IReportService { /** * 按照渠道统计销售 + * * @param beginCreateTime * @param endCreateTime * @return */ @Override public List> channelStatisticsList(String beginCreateTime, String endCreateTime) { - List> data= contractMapper.channelStatistics(beginCreateTime,endCreateTime); + List> data = contractMapper.channelStatistics(beginCreateTime, endCreateTime); for (Map datum : data) { - String subjectValue= (String) datum.get("channel"); - if(subjectValue!=null){ - String lable= sysDictDataMapper.selectDictLabel("clues_item",subjectValue); - datum.put("channel",lable); + String subjectValue = (String) datum.get("channel"); + if (subjectValue != null) { + String lable = sysDictDataMapper.selectDictLabel("clues_item", subjectValue); + datum.put("channel", lable); } } return data; @@ -204,13 +194,14 @@ public class ReportServiceImpl implements IReportService { /** * 按照归属人统计销售 + * * @param beginCreateTime * @param endCreateTime * @return */ @Override public List> ownerShipStatisticsList(String beginCreateTime, String endCreateTime) { - return contractMapper.ownerShipStatistics(beginCreateTime,endCreateTime); + return contractMapper.ownerShipStatistics(beginCreateTime, endCreateTime); } @@ -222,9 +213,9 @@ public class ReportServiceImpl implements IReportService { @Override public List activityStatisticsList(TbActivity query) { query.setStatus("2"); - List activities= activityMapper.selectTbActivityList(query); + List activities = activityMapper.selectTbActivityList(query); Map timeMap = query.getParams(); - List list=new ArrayList<>(); + List list = new ArrayList<>(); for (TbActivity activity : activities) { ActivityStatisticsVo dto = new ActivityStatisticsVo(); BeanUtils.copyProperties(activity, dto); @@ -235,7 +226,7 @@ public class ReportServiceImpl implements IReportService { Map clueCount = clueMapper.countByActivity(tbClue); if (clueCount != null) { dto.setCluesNum(Integer.parseInt(clueCount.get("total").toString())); - if(clueCount.get("falseClues")!=null){ + if (clueCount.get("falseClues") != null) { dto.setFalseCluesNum(Integer.parseInt(clueCount.get("falseClues").toString())); } if (clueCount.get("toBusiness") != null) { @@ -249,14 +240,14 @@ public class ReportServiceImpl implements IReportService { Map contractCount = contractMapper.countByActivity(tbContract); if (contractCount != null) { dto.setCustomersNum(Integer.parseInt(contractCount.get("customersNum").toString())); - if(contractCount.get("amount")==null) { + if (contractCount.get("amount") == null) { dto.setAmount(0d); - }else { + } else { dto.setAmount((Double) contractCount.get("amount")); } - if(contractCount.get("cost")==null) { + if (contractCount.get("cost") == null) { dto.setCost(0d); - }else { + } else { dto.setCost((Double) contractCount.get("cost")); } @@ -269,6 +260,7 @@ public class ReportServiceImpl implements IReportService { /** * *************看我看我************** * 传入两个时间范围,返回这两个时间范围内的所有时间,并保存在一个集合中 + * * @param beginTime * @param endTime * @return @@ -301,8 +293,8 @@ public class ReportServiceImpl implements IReportService { @Override public IndexVo getIndex(IndexStatisticsVo request) { - Long deptId= request.getDeptId(); - TbAssignRecord tbAssignRecord=new TbAssignRecord(); + Long deptId = request.getDeptId(); + TbAssignRecord tbAssignRecord = new TbAssignRecord(); tbAssignRecord.setLatest("1"); assignRecordMapper.selectAssignRecordList(tbAssignRecord); return null; @@ -310,11 +302,11 @@ public class ReportServiceImpl implements IReportService { @Override public List> salesStatisticsForIndex(IndexStatisticsVo request) { - List> list= contractMapper.contractStatisticsByUser(request); + List> list = contractMapper.contractStatisticsByUser(request); for (Map datum : list) { - Long deptId= (Long) datum.get("dept_id"); - if(deptId!=null){ - SysDept dept= deptMapper.selectDeptById(deptId); + Long deptId = (Long) datum.get("dept_id"); + if (deptId != null) { + SysDept dept = deptMapper.selectDeptById(deptId); datum.put("deptName", dept.getDeptName()); } } @@ -326,23 +318,25 @@ public class ReportServiceImpl implements IReportService { * ************看我看我*********** * 用我能少走很多路 * 我是用来机选百分比的方法 - * @param all + * + * @param all * @param num * @return */ - private BigDecimal getRadio(Integer all,Long num) { - if(all.intValue()==0){ + private BigDecimal getRadio(Integer all, Long num) { + if (all.intValue() == 0) { return new BigDecimal(0); } BigDecimal numBigDecimal = new BigDecimal(num); BigDecimal allBigDecimal = new BigDecimal(all); - BigDecimal divide = numBigDecimal.divide(allBigDecimal,4,BigDecimal.ROUND_HALF_UP); + BigDecimal divide = numBigDecimal.divide(allBigDecimal, 4, BigDecimal.ROUND_HALF_UP); return divide.multiply(new BigDecimal(100)); } /** * 获取首页基本数据 + * * @param beginCreateTime * @param endCreateTime * @return @@ -360,7 +354,7 @@ public class ReportServiceImpl implements IReportService { result.setBusinessNum(reportMpper.getBusinessNum(beginCreateTime, endCreateTime, username)); result.setContractNum(reportMpper.getContractNum(beginCreateTime, endCreateTime, username)); result.setSalesAmount(reportMpper.getSalesAmount(beginCreateTime, endCreateTime, username)); - }catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); return null; } @@ -368,4 +362,152 @@ public class ReportServiceImpl implements IReportService { return result; } + /** + * 需求: + * + * **当前用户**在**当天的线索数量**,**商机数量**,**合同数量**,**成交的金额** + * + * @return IndexTodayInfoVO + * @date 2022/5/27 9:12 + */ + @Override + public IndexTodayInfoVO getTodayInfo() { + String username = SecurityUtils.getUsername(); + LocalDateTime now = LocalDateTime.now().plusDays(-2); + +// //线索数量 +// Integer clueNum=reportMpper.getTodayClueNum(username, now); +// //商机数量 +// Integer businessNum=reportMpper.getTodayBusinessNum(username, now); +// //合同数量 +// Integer contractNum=reportMpper.getTodayContractNum(username, now); +// //成交的金额 +// Double amount=reportMpper.getTodayAmount(username, now); +// IndexTodayInfoVO todayInfo = new IndexTodayInfoVO(); +// todayInfo.setTodayCluesNum(clueNum); +// todayInfo.setTodayBusinessNum(businessNum); +// todayInfo.setTodayContractNum(contractNum); +// todayInfo.setTodaySalesAmount(amount); + IndexTodayInfoVO todayInfo = reportMpper.getTodayInfo(username, now); + return todayInfo; + } + + @Override + public IndexTodoInfoVO getTodoInfo(String beginCreateTime, String endCreateTime) { + String username = SecurityUtils.getUsername(); +// IndexTodoInfoVO todoInfoVO=reportMpper.getTodoInfo(beginCreateTime,endCreateTime); + IndexTodoInfoVO todoInfoVO=new IndexTodoInfoVO(); + Integer clueNum=reportMpper.getTodoClueNum(username,beginCreateTime,endCreateTime); + Integer businessNum=reportMpper.getTodoBusinessNum(username,beginCreateTime,endCreateTime); + Integer allocatedCluesNum=reportMpper.getToallocatedCluesNum(username,beginCreateTime,endCreateTime); + Integer allocatedBusinessNum=reportMpper.getToallocatedBusinessNum(username,beginCreateTime,endCreateTime); + todoInfoVO.setTofollowedCluesNum(clueNum); + todoInfoVO.setTofollowedBusinessNum(businessNum); + todoInfoVO.setToallocatedCluesNum(allocatedCluesNum); + todoInfoVO.setToallocatedBusinessNum(allocatedBusinessNum); + + return todoInfoVO; + } + + @Override + public List subjectStatistics(String beginCreateTime, String endCreateTime) { + return reportMpper.subjectStatistics(beginCreateTime,endCreateTime); + } + + @Override + public LineChartVO cluesStatistics(String beginCreateTime, String endCreateTime) throws ParseException { + //获取日期数组 + List dates = findDates(beginCreateTime, endCreateTime); + + ArrayList lineSeriesVOS = new ArrayList<>(); + + /*HashMap map = new HashMap<>(); + reportMpper.cluesStatistics(beginCreateTime, endCreateTime) + .forEach(m->{ + String d = (String) m.get("dd"); + Long num = (Long) m.get("num"); + map.put(d,num); + });*/ + HashMap map = new HashMap<>(); + reportMpper.cluesStatistics1(beginCreateTime,endCreateTime,resultContext -> { + Map o = (Map) resultContext.getResultObject(); + map.put((String) o.get("key"), (Long) o.get("value")); + }); + ArrayList integers = new ArrayList<>(); + Long num=0l; + ArrayList new_clues = new ArrayList<>(); + for (String date : dates) { + Long l = map.get(date); + l=l==null?0:l; + new_clues.add(l); + //累加总数 + num+=l; + integers.add(num); + } + map.clear(); +// //new结果对象 + LineChartVO lineChartVO = new LineChartVO(); + //填充日期数据 + lineChartVO.setxAxis(dates); + // 创建 新增线索数量 对象 + LineSeriesVO lineSeries_new = new LineSeriesVO(); + lineSeries_new.setName("新增线索数量"); + //填充新增clue数据 + lineSeries_new.setData(new_clues); + //填充结果对象的新增clue数组数据 + lineSeriesVOS.add(lineSeries_new); + + //创建 线索总数量 + LineSeriesVO lineSeries_grete = new LineSeriesVO(); + lineSeries_grete.setName("线索总数量"); + //填充总数量数据 + lineSeries_grete.setData(integers); + //填充结果对象的新增总数量数据 + lineSeriesVOS.add(lineSeries_grete); + + lineChartVO.setSeries(lineSeriesVOS); + return lineChartVO; + } + + @Override + public VulnerabilityMapVo getVulnerabilityMap(String beginCreateTime, String endCreateTime) { + VulnerabilityMapVo mapVo = new VulnerabilityMapVo(); + //线索数 + mapVo.setCluesNums(reportMpper.getAllCluesNum(beginCreateTime, endCreateTime)); + //有效线索数 + mapVo.setEffectiveCluesNums(reportMpper.getEffectiveCluesNum(beginCreateTime, endCreateTime)); + //商机数 + mapVo.setBusinessNums(reportMpper.getBusinessNums(beginCreateTime, endCreateTime)); + //合同数 + mapVo.setContractNums(reportMpper.getContractNums(beginCreateTime, endCreateTime)); + return mapVo; + } + + @Override + public List businessChangeStatistics(String beginCreateTime, String endCreateTime) { + + Integer businessNums = reportMpper.getBusinessNumsB(beginCreateTime, endCreateTime); + + List longHuBangVOS = reportMpper.businessChangeStatistics(beginCreateTime, endCreateTime); + longHuBangVOS + .forEach(l->{ + l.setRadio(getRadio(businessNums, l.getNum())); + }); + + return longHuBangVOS; + } + + @Override + public List salesStatistic(String beginCreateTime, String endCreateTime) { + Integer businessNums = reportMpper.getAllCluesNumS(beginCreateTime, endCreateTime); + + List longHuBangVOS = reportMpper.salesStatistic(beginCreateTime, endCreateTime); + longHuBangVOS + .forEach(l->{ + l.setRadio(getRadio(businessNums, l.getNum())); + }); + + return longHuBangVOS; + } + } \ No newline at end of file diff --git a/huike-report/src/main/resources/mapper/report/ReportMapper.xml b/huike-report/src/main/resources/mapper/report/ReportMapper.xml index dd7675c..cc1348a 100644 --- a/huike-report/src/main/resources/mapper/report/ReportMapper.xml +++ b/huike-report/src/main/resources/mapper/report/ReportMapper.xml @@ -1,68 +1,253 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/huike-system/src/main/java/com/huike/clues/mapper/SysDictDataMapper.java b/huike-system/src/main/java/com/huike/clues/mapper/SysDictDataMapper.java index a9cfd23..1f679a7 100644 --- a/huike-system/src/main/java/com/huike/clues/mapper/SysDictDataMapper.java +++ b/huike-system/src/main/java/com/huike/clues/mapper/SysDictDataMapper.java @@ -1,8 +1,9 @@ package com.huike.clues.mapper; -import java.util.List; -import org.apache.ibatis.annotations.Param; import com.huike.common.core.domain.entity.SysDictData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * 字典表 数据层 @@ -94,4 +95,5 @@ public interface SysDictDataMapper{ * @return 结果 */ public int updateDictDataType(@Param("oldDictType") String oldDictType, @Param("newDictType") String newDictType); + } diff --git a/huike-system/src/main/resources/mapper/system/SysDictDataMapper.xml b/huike-system/src/main/resources/mapper/system/SysDictDataMapper.xml index 81bd20c..6b52d69 100644 --- a/huike-system/src/main/resources/mapper/system/SysDictDataMapper.xml +++ b/huike-system/src/main/resources/mapper/system/SysDictDataMapper.xml @@ -97,8 +97,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update sys_dict_data set dict_type = #{newDictType} where dict_type = #{oldDictType} - - + + + + + insert into sys_dict_data( dict_sort, dict_label, diff --git a/huike-system/src/main/resources/mapper/system/SysUserMapper.xml b/huike-system/src/main/resources/mapper/system/SysUserMapper.xml index 97bf2b2..c0470c3 100644 --- a/huike-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/huike-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -62,9 +62,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND u.user_name like concat('%', #{userName}, '%') - - AND u.status = #{status} - + AND date_format(u.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d') @@ -74,6 +72,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" AND (u.dept_id = #{deptId} OR u.dept_id IN ( SELECT t.dept_id FROM sys_dept t WHERE find_in_set(#{deptId}, ancestors) )) + + AND u.phonenumber like concat('%',#{phonenumber},'%') + -- Gitee From bbaf7b8e4c47e8f9e165c00ea4f31f2a5bb04c72 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 12:10:05 +0800 Subject: [PATCH 02/18] V1.0 --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index 1d71d98..8328ef2 100644 --- a/pom.xml +++ b/pom.xml @@ -80,6 +80,7 @@ ${oshi.version} + net.java.dev.jna jna -- Gitee From 6d036a89a52b63e9795db6433f521ff343a1725b Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 16:23:26 +0800 Subject: [PATCH 03/18] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E8=B5=B5=E7=BF=BC?= =?UTF-8?q?=E8=99=8E=E6=B7=BB=E5=8A=A0=E5=95=86=E6=9C=BA=E7=9A=84=E8=B7=9F?= =?UTF-8?q?=E8=BF=9B=E8=AE=B0=E5=BD=95=20=20=E5=92=8C=20=20=E7=BA=BF?= =?UTF-8?q?=E7=B4=A2=E8=B7=9F=E8=BF=9B=E8=AE=B0=E5=BD=95=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/huike/HuiKeApplication.java | 2 + .../TbBusinessTrackRecordController.java | 24 +++--------- .../clues/TbClueTrackRecordController.java | 14 +++---- .../mapper/TbBusinessTrackRecordMapper.java | 2 +- .../ITbBusinessTrackRecordService.java | 4 +- .../TbBusinessTrackRecordServiceImpl.java | 38 +++++++++++++++++++ .../business/TbBusinessTrackRecordMapper.xml | 26 +++++++------ .../clues/mapper/TbClueTrackRecordMapper.java | 7 +++- .../impl/TbClueTrackRecordServiceImpl.java | 10 +++++ .../mapper/clues/TbClueTrackRecordMapper.xml | 3 ++ 10 files changed, 89 insertions(+), 41 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/HuiKeApplication.java b/huike-admin/src/main/java/com/huike/HuiKeApplication.java index b5b489a..1777485 100644 --- a/huike-admin/src/main/java/com/huike/HuiKeApplication.java +++ b/huike-admin/src/main/java/com/huike/HuiKeApplication.java @@ -6,6 +6,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.transaction.annotation.EnableTransactionManagement; /** * 启动程序 @@ -14,6 +15,7 @@ import org.springframework.scheduling.annotation.EnableScheduling; */ @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class}) @EnableScheduling +@EnableTransactionManagement public class HuiKeApplication /*implements CommandLineRunner */{ @Autowired diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java index cb0ea1e..c121571 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java @@ -1,30 +1,15 @@ package com.huike.web.controller.business; -import java.util.List; - -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import com.huike.business.domain.TbBusiness; -import com.huike.business.domain.TbBusinessTrackRecord; import com.huike.business.domain.vo.BusinessTrackVo; -import com.huike.business.service.ITbBusinessService; import com.huike.business.service.ITbBusinessTrackRecordService; import com.huike.clues.service.ISysDictDataService; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.enums.BusinessType; -import com.huike.common.utils.DateUtils; -import com.huike.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; /** * 商机跟进记录Controller @@ -57,6 +42,7 @@ public class TbBusinessTrackRecordController extends BaseController { @Log(title = "商机跟进记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody BusinessTrackVo businessTrackVo){ - return null; + tbBusinessTrackRecordService.add(businessTrackVo); + return AjaxResult.success(); } } \ No newline at end of file diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 7301862..f546a58 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -1,22 +1,17 @@ package com.huike.web.controller.clues; -import com.huike.clues.domain.TbClue; -import com.huike.clues.domain.TbClueTrackRecord; import com.huike.clues.domain.vo.ClueTrackRecordVo; +import com.huike.clues.service.impl.TbClueTrackRecordServiceImpl; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; -import com.huike.common.utils.DateUtils; -import com.huike.common.utils.SecurityUtils; -import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.util.List; - /** * 线索跟进记录Controller @@ -26,13 +21,16 @@ import java.util.List; @RequestMapping("/clues/record") public class TbClueTrackRecordController extends BaseController { + @Autowired + private TbClueTrackRecordServiceImpl clueTrackRecordService; /** * 查询线索跟进记录列表 */ @PreAuthorize("@ss.hasPermi('clues:record:list')") @GetMapping("/list") public TableDataInfo list(@RequestParam("clueId")Long clueId) { - return null; + startPage(); + return getDataTable(clueTrackRecordService.getList(clueId)); } diff --git a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java index 500f87a..e68a82b 100644 --- a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java +++ b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java @@ -1,6 +1,5 @@ package com.huike.business.mapper; -import java.util.List; import com.huike.business.domain.TbBusinessTrackRecord; /** @@ -9,4 +8,5 @@ import com.huike.business.domain.TbBusinessTrackRecord; */ public interface TbBusinessTrackRecordMapper { + void save(TbBusinessTrackRecord businessTrackRecord); } \ No newline at end of file diff --git a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java index 294168c..b626b66 100644 --- a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java +++ b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java @@ -1,5 +1,7 @@ package com.huike.business.service; +import com.huike.business.domain.vo.BusinessTrackVo; + /** * 商机跟进记录Service接口 * @date 2021-04-28 @@ -7,5 +9,5 @@ package com.huike.business.service; public interface ITbBusinessTrackRecordService { - + void add(BusinessTrackVo businessTrackVo); } diff --git a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java index 3f12eaa..5c0b322 100644 --- a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java +++ b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java @@ -1,8 +1,20 @@ package com.huike.business.service.impl; +import com.huike.business.domain.TbBusiness; +import com.huike.business.domain.TbBusinessTrackRecord; +import com.huike.business.domain.vo.BusinessTrackVo; +import com.huike.business.mapper.TbBusinessMapper; +import com.huike.business.mapper.TbBusinessTrackRecordMapper; import com.huike.business.service.ITbBusinessTrackRecordService; +import com.huike.clues.domain.TbClue; +import com.huike.common.utils.SecurityUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; /** * 商机跟进记录Service业务层处理 @@ -12,5 +24,31 @@ import org.springframework.stereotype.Service; */ @Service public class TbBusinessTrackRecordServiceImpl implements ITbBusinessTrackRecordService { + @Autowired + private TbBusinessTrackRecordMapper businessTrackRecordMapper; + @Autowired + private TbBusinessMapper businessMapper; + @Override + @Transactional(rollbackFor = Exception.class) + public void add(BusinessTrackVo businessTrackVo) { + TbBusinessTrackRecord businessTrackRecord = new TbBusinessTrackRecord(); + BeanUtils.copyProperties(businessTrackVo,businessTrackRecord); + //获取用户名,当前时间并设置 + String username = SecurityUtils.getUsername(); + businessTrackRecord.setCreateBy(username); + Date time = new Date(); + + businessTrackRecord.setCreateTime(time); + + TbBusiness tbBusiness = new TbBusiness(); + BeanUtils.copyProperties(businessTrackVo,tbBusiness); + //设置ID + tbBusiness.setId(businessTrackVo.getBusinessId()); + //设置为跟进 + tbBusiness.setStatus(TbClue.StatusType.FOLLOWING.getValue()); + + businessMapper.updateTbBusiness(tbBusiness); + businessTrackRecordMapper.save(businessTrackRecord); + } } diff --git a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml index 353e85f..e169b52 100644 --- a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml +++ b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml @@ -1,19 +1,23 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - + + + + + + + + + + insert into tb_business_track_record + values (null, #{businessId},#{createBy},#{keyItems},#{record},#{createTime},#{trackStatus},#{nextTime}); + \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java index 93570a7..1231f55 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java @@ -1,6 +1,11 @@ package com.huike.clues.mapper; +import com.huike.clues.domain.TbClueTrackRecord; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + /** * 线索跟进记录Mapper接口 * @date 2021-04-19 @@ -8,5 +13,5 @@ package com.huike.clues.mapper; public interface TbClueTrackRecordMapper { - + List getById(@Param("clueId") Long clueId); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java index bbfae9d..a53ef78 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java @@ -1,14 +1,24 @@ package com.huike.clues.service.impl; +import com.huike.clues.domain.TbClueTrackRecord; +import com.huike.clues.mapper.TbClueTrackRecordMapper; import com.huike.clues.service.ITbClueTrackRecordService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** * 线索跟进记录Service业务层处理 * @date 2022-04-22 */ @Service public class TbClueTrackRecordServiceImpl implements ITbClueTrackRecordService { + @Autowired + private TbClueTrackRecordMapper clueTrackRecordMapper; + public List getList(Long clueId) { + return clueTrackRecordMapper.getById(clueId); + } } diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml index b79005d..572c1ee 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml @@ -16,5 +16,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file -- Gitee From 5ae96eeeefa5a20897bfd325173f5630fd1a432f Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 16:49:32 +0800 Subject: [PATCH 04/18] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=9B=9E=E9=80=80?= =?UTF-8?q?=E5=85=AC=E6=B5=B7Controller=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/TbBusinessController.java | 10 +++++++ .../business/service/ITbBusinessService.java | 7 +++-- .../service/impl/TbBusinessServiceImpl.java | 30 +++++++++++++------ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java index cbf732b..07c0449 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java @@ -130,6 +130,16 @@ public class TbBusinessController extends BaseController { public AjaxResult gain(@RequestBody AssignmentVo assignmentVo) { return AjaxResult.success(tbBusinessService.gain(assignmentVo.getIds(),assignmentVo.getUserId())); } + /** + * 退回公海 + */ + @PreAuthorize("@ss.hasPermi('business:business:back')") + @Log(title = "退回公海", businessType = BusinessType.UPDATE) + @PutMapping("/back/{id}/{reason}") + public AjaxResult back(@PathVariable Long id,@PathVariable Integer reason) { + tbBusinessService.back(id,reason); + return AjaxResult.success(); + } diff --git a/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java b/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java index f8a6f07..f837d16 100644 --- a/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java +++ b/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java @@ -1,10 +1,9 @@ package com.huike.business.service; -import java.util.List; -import java.util.Map; - import com.huike.business.domain.TbBusiness; +import java.util.List; + /** * 商机Service接口 * @@ -73,4 +72,6 @@ public interface ITbBusinessService public int changeBusiness(Long clueId); public int updateStatus(Long id, String status); + + void back(Long id, Integer reason); } diff --git a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java index 1830949..53ead30 100644 --- a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java +++ b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java @@ -1,18 +1,10 @@ package com.huike.business.service.impl; -import java.util.Date; -import java.util.List; - -import com.huike.business.strategy.Rule; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import com.huike.business.domain.TbBusiness; import com.huike.business.mapper.TbBusinessMapper; import com.huike.business.mapper.TbBusinessTrackRecordMapper; import com.huike.business.service.ITbBusinessService; +import com.huike.business.strategy.Rule; import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.TbRulePool; @@ -29,6 +21,13 @@ import com.huike.common.core.domain.entity.SysUser; import com.huike.common.exception.CustomException; import com.huike.common.utils.DateUtils; import com.huike.common.utils.SecurityUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; /** * 商机Service业务层处理 @@ -287,4 +286,17 @@ public class TbBusinessServiceImpl implements ITbBusinessService { public int updateStatus(Long clueId,String status){ return tbBusinessMapper.resetNextTimeAndStatus(clueId,status); } + + /** + * @date 2022/5/29 16:39 + * @param id 商机ID + * @param reason 回退原因 + */ + @Override + public void back(Long id, Integer reason) { + TbBusiness tbBusiness = new TbBusiness(); + tbBusiness.setId(id); + + tbBusinessMapper.updateTbBusiness(tbBusiness); + } } -- Gitee From 5b91a1972294336c97934cc58fcfb7eb8de646cf Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 17:26:41 +0800 Subject: [PATCH 05/18] V1.1 --- .../TbBusinessTrackRecordController.java | 14 +-- .../clues/TbClueTrackRecordController.java | 32 +++++- .../mapper/TbBusinessTrackRecordMapper.java | 4 +- .../ITbBusinessTrackRecordService.java | 4 +- .../TbBusinessTrackRecordServiceImpl.java | 10 ++ .../business/TbBusinessTrackRecordMapper.xml | 3 + .../clues/domain/TbBusinessTrackRecord.java | 106 ++++++++++++++++++ .../clues/mapper/TbClueTrackRecordMapper.java | 11 +- .../service/ITbClueTrackRecordService.java | 8 ++ .../impl/TbClueTrackRecordServiceImpl.java | 24 ++++ .../mapper/clues/TbClueTrackRecordMapper.xml | 63 ++++++++--- .../huike/common/core/domain/AjaxResult.java | 2 +- .../huike/common/utils/bean/BeanUtils.java | 2 + 13 files changed, 251 insertions(+), 32 deletions(-) create mode 100644 huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java index cb0ea1e..c1ceeca 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java @@ -1,30 +1,24 @@ package com.huike.web.controller.business; -import java.util.List; -import org.springframework.beans.BeanUtils; + +import com.huike.clues.domain.TbBusinessTrackRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import com.huike.business.domain.TbBusiness; -import com.huike.business.domain.TbBusinessTrackRecord; import com.huike.business.domain.vo.BusinessTrackVo; -import com.huike.business.service.ITbBusinessService; import com.huike.business.service.ITbBusinessTrackRecordService; import com.huike.clues.service.ISysDictDataService; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.enums.BusinessType; -import com.huike.common.utils.DateUtils; -import com.huike.common.utils.SecurityUtils; /** * 商机跟进记录Controller @@ -46,8 +40,8 @@ public class TbBusinessTrackRecordController extends BaseController { @PreAuthorize("@ss.hasPermi('business:record:list')") @GetMapping("/list") public AjaxResult list(@RequestParam("businessId")Long id){ - - return null; + TbBusinessTrackRecord result = tbBusinessTrackRecordService.select(id); + return AjaxResult.success(result); } /** diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 7301862..a4f5d2e 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -4,35 +4,43 @@ package com.huike.web.controller.clues; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.TbClueTrackRecord; import com.huike.clues.domain.vo.ClueTrackRecordVo; +import com.huike.clues.domain.vo.TbClueExcelVo; +import com.huike.clues.service.ITbClueTrackRecordService; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; -import com.huike.common.utils.DateUtils; import com.huike.common.utils.SecurityUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; -import java.util.List; +import java.util.Date; /** * 线索跟进记录Controller + * * @date 2021-04-22 */ + + @RestController @RequestMapping("/clues/record") public class TbClueTrackRecordController extends BaseController { + @Autowired + private ITbClueTrackRecordService iTbClueTrackRecordService; + /** * 查询线索跟进记录列表 */ @PreAuthorize("@ss.hasPermi('clues:record:list')") @GetMapping("/list") - public TableDataInfo list(@RequestParam("clueId")Long clueId) { - return null; + public TableDataInfo list(@RequestParam("clueId") Long clueId) { + return null; } @@ -43,6 +51,20 @@ public class TbClueTrackRecordController extends BaseController { @Log(title = "线索跟进记录", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { - return null; + try { + TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); + BeanUtils.copyProperties(tbClueTrackRecord,tbClueTrack); + tbClueTrack.setCreateTime(new Date()); + tbClueTrack.setCreateBy(SecurityUtils.getUsername()); + TbClue tbClue = new TbClue(); + BeanUtils.copyProperties(tbClueTrack, tbClue); + tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + iTbClueTrackRecordService.update(tbClue.getId()); + iTbClueTrackRecordService.add(tbClue); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.error(); + } + } } diff --git a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java index 500f87a..9fff94c 100644 --- a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java +++ b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java @@ -1,7 +1,8 @@ package com.huike.business.mapper; +import com.huike.clues.domain.TbBusinessTrackRecord; + import java.util.List; -import com.huike.business.domain.TbBusinessTrackRecord; /** * 商机跟进记录Mapper接口 @@ -9,4 +10,5 @@ import com.huike.business.domain.TbBusinessTrackRecord; */ public interface TbBusinessTrackRecordMapper { + TbBusinessTrackRecord select(); } \ No newline at end of file diff --git a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java index 294168c..d16ca75 100644 --- a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java +++ b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java @@ -1,5 +1,7 @@ package com.huike.business.service; +import com.huike.clues.domain.TbBusinessTrackRecord; + /** * 商机跟进记录Service接口 * @date 2021-04-28 @@ -7,5 +9,5 @@ package com.huike.business.service; public interface ITbBusinessTrackRecordService { - + TbBusinessTrackRecord select(Long id); } diff --git a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java index 3f12eaa..86f74f5 100644 --- a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java +++ b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessTrackRecordServiceImpl.java @@ -1,7 +1,11 @@ package com.huike.business.service.impl; +import com.huike.business.mapper.TbBusinessTrackRecordMapper; import com.huike.business.service.ITbBusinessTrackRecordService; +import com.huike.clues.domain.TbBusinessTrackRecord; +import com.huike.clues.mapper.TbClueTrackRecordMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -13,4 +17,10 @@ import org.springframework.stereotype.Service; @Service public class TbBusinessTrackRecordServiceImpl implements ITbBusinessTrackRecordService { + @Autowired(required = false) + private TbBusinessTrackRecordMapper tbBusinessTrackRecordMapper; + @Override + public TbBusinessTrackRecord select(Long id) { + return tbBusinessTrackRecordMapper.select(); + } } diff --git a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml index 353e85f..9b57a25 100644 --- a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml +++ b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml @@ -14,6 +14,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java b/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java new file mode 100644 index 0000000..77510bb --- /dev/null +++ b/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java @@ -0,0 +1,106 @@ +package com.huike.clues.domain; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.huike.common.annotation.Excel; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +/** + * @author A + * @create 2022-5-29-PM 15:02 + */ +public class TbBusinessTrackRecord { + private static final long serialVersionUID = 1L; + + /** 任务id */ + private Long id; + + /** 线索id */ + @Excel(name = "线索id") + private Long businessId; + + /** 沟通重点 */ + @Excel(name = "沟通重点") + private String keyItems; + + private List keys =new ArrayList<>(); + + /** 沟通纪要 */ + @Excel(name = "沟通纪要") + private String record; + + /** 跟进状态 */ + @Excel(name = "跟进状态") + private String trackStatus; + + @JsonFormat(pattern = "yyyy-MM-dd HH:mm") + private Date nextTime; + + + public Date getNextTime() { + return nextTime; + } + + public void setNextTime(Date nextTime) { + this.nextTime = nextTime; + } + + public List getKeys() { + return keys; + } + + public void setKeys(List keys) { + this.keys = keys; + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + + public Long getBusinessId() { + return businessId; + } + + public void setBusinessId(Long businessId) { + this.businessId = businessId; + } + + public void setKeyItems(String keyItems) + { + this.keyItems = keyItems; + } + + public String getKeyItems() + { + return keyItems; + } + public void setRecord(String record) + { + this.record = record; + } + + public String getRecord() + { + return record; + } + public void setTrackStatus(String trackStatus) + { + this.trackStatus = trackStatus; + } + + public String getTrackStatus() + { + return trackStatus; + } + +} diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java index 93570a7..2ce69c2 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java @@ -1,6 +1,10 @@ package com.huike.clues.mapper; + +import com.huike.clues.domain.TbBusinessTrackRecord; +import com.huike.clues.domain.TbClue; + /** * 线索跟进记录Mapper接口 * @date 2021-04-19 @@ -8,5 +12,10 @@ package com.huike.clues.mapper; public interface TbClueTrackRecordMapper { - + + void update(Long userId); + + void add(TbClue tbClue); + + } diff --git a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java index f1a4af1..9485ad7 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java +++ b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java @@ -1,13 +1,21 @@ package com.huike.clues.service; + +import com.huike.clues.domain.TbBusinessTrackRecord; +import com.huike.clues.domain.TbClue; + /** * 线索跟进记录Service接口 * * @author WGL * @date 2022-04-19 */ + public interface ITbClueTrackRecordService { + void add(TbClue tbClue); + + void update(Long userId); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java index bbfae9d..c91044a 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java @@ -1,8 +1,14 @@ package com.huike.clues.service.impl; + +import com.huike.clues.domain.TbBusinessTrackRecord; +import com.huike.clues.domain.TbClue; +import com.huike.clues.mapper.TbClueTrackRecordMapper; import com.huike.clues.service.ITbClueTrackRecordService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; /** * 线索跟进记录Service业务层处理 @@ -11,4 +17,22 @@ import org.springframework.stereotype.Service; @Service public class TbClueTrackRecordServiceImpl implements ITbClueTrackRecordService { + + @Autowired(required = false) + private TbClueTrackRecordMapper tbClueTrackRecordMapper; + + @Transactional + @Override + public void add(TbClue tbClue) { + tbClueTrackRecordMapper.add(tbClue); + } + + @Transactional + @Override + public void update(Long userId) { + tbClueTrackRecordMapper.update(userId); + } + + + } diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml index b79005d..e2016cc 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml @@ -1,20 +1,57 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - - + + + + + + + + + + + + insert into `tb_clue_track_record` + values (null, #{clueId}, #{createBy}, #{subject}, #{record}, #{level}, #{type}, #{falseReason}, #{nextTime}) + + + + update `tb_clue_track_record` + + + clueId = #{clueId} + + + createBy = #{createBy} + + + subject = #{subject} + + + clueId = #{record} + + + level = #{level} + + + type = #{type} + + + falseReason = #{falseReason} + + + nextTime = #{nextTime} + + + where id = #{id} + + + \ No newline at end of file diff --git a/huike-common/src/main/java/com/huike/common/core/domain/AjaxResult.java b/huike-common/src/main/java/com/huike/common/core/domain/AjaxResult.java index 837cce4..2732e14 100644 --- a/huike-common/src/main/java/com/huike/common/core/domain/AjaxResult.java +++ b/huike-common/src/main/java/com/huike/common/core/domain/AjaxResult.java @@ -9,7 +9,7 @@ import com.huike.common.utils.StringUtils; * * */ -public class AjaxResult extends HashMap +public class AjaxResult extends HashMap { private static final long serialVersionUID = 1L; diff --git a/huike-common/src/main/java/com/huike/common/utils/bean/BeanUtils.java b/huike-common/src/main/java/com/huike/common/utils/bean/BeanUtils.java index f573af4..07d79d3 100644 --- a/huike-common/src/main/java/com/huike/common/utils/bean/BeanUtils.java +++ b/huike-common/src/main/java/com/huike/common/utils/bean/BeanUtils.java @@ -107,4 +107,6 @@ public class BeanUtils extends org.springframework.beans.BeanUtils { return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX)); } + + } -- Gitee From 131cbff11a78c39196f0ad89973b196834c95d55 Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 17:50:22 +0800 Subject: [PATCH 06/18] =?UTF-8?q?=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/TbBusinessTrackRecordController.java | 11 +---------- .../clues/service/ITbClueTrackRecordService.java | 6 ++++-- .../service/impl/TbClueTrackRecordServiceImpl.java | 6 ++---- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java index a809522..6e2aec1 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java @@ -1,5 +1,6 @@ package com.huike.web.controller.business; +import com.huike.business.domain.TbBusinessTrackRecord; import com.huike.business.domain.vo.BusinessTrackVo; import com.huike.business.service.ITbBusinessTrackRecordService; import com.huike.clues.service.ISysDictDataService; @@ -7,16 +8,6 @@ import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.enums.BusinessType; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; diff --git a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java index 9485ad7..96ed386 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java +++ b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java @@ -1,9 +1,10 @@ package com.huike.clues.service; - -import com.huike.clues.domain.TbBusinessTrackRecord; import com.huike.clues.domain.TbClue; +import com.huike.clues.domain.TbClueTrackRecord; + +import java.util.List; /** * 线索跟进记录Service接口 @@ -18,4 +19,5 @@ public interface ITbClueTrackRecordService { void update(Long userId); + List getList(Long clueId); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java index 205a82b..08c4f50 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java @@ -22,19 +22,17 @@ public class TbClueTrackRecordServiceImpl implements ITbClueTrackRecordService { private TbClueTrackRecordMapper clueTrackRecordMapper; - @Autowired(required = false) - private TbClueTrackRecordMapper tbClueTrackRecordMapper; @Transactional @Override public void add(TbClue tbClue) { - tbClueTrackRecordMapper.add(tbClue); + clueTrackRecordMapper.add(tbClue); } @Transactional @Override public void update(Long userId) { - tbClueTrackRecordMapper.update(userId); + clueTrackRecordMapper.update(userId); } -- Gitee From b4a297ba9f52663c712845f6a20ff5ced7730249 Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 17:54:44 +0800 Subject: [PATCH 07/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clues/TbClueTrackRecordController.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index db06fec..93a6a8b 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -64,6 +64,19 @@ public class TbClueTrackRecordController extends BaseController { } catch (Exception e) { return AjaxResult.error(); } - } + /** + * 新增进记录 + */ + @PreAuthorize("@ss.hasPermi('clues:record:add')") + @Log(title = "线索跟进记录", businessType = BusinessType.INSERT) + @DeleteMapping + public AjaxResult add嘎洒个多月(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { + try { + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.error(); + } + } + } -- Gitee From 327db04a64fd389b19ccfaf1d57afa8d70b7ec9d Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 17:55:29 +0800 Subject: [PATCH 08/18] V1.11 --- .../clues/TbClueTrackRecordController.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index db06fec..915b65a 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -37,9 +37,9 @@ public class TbClueTrackRecordController extends BaseController { */ @PreAuthorize("@ss.hasPermi('clues:record:list')") @GetMapping("/list") - public TableDataInfo list(@RequestParam("clueId")Long clueId) { + public TableDataInfo list(@RequestParam("clueId") Long clueId) { startPage(); - return getDataTable(iTbClueTrackRecordService.getList(clueId)); + return getDataTable(iTbClueTrackRecordService.getList(clueId)); } @@ -52,7 +52,28 @@ public class TbClueTrackRecordController extends BaseController { public AjaxResult add(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { try { TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); - BeanUtils.copyProperties(tbClueTrackRecord,tbClueTrack); + BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); + tbClueTrack.setCreateTime(new Date()); + tbClueTrack.setCreateBy(SecurityUtils.getUsername()); + TbClue tbClue = new TbClue(); + BeanUtils.copyProperties(tbClueTrack, tbClue); + tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + iTbClueTrackRecordService.update(tbClue.getId()); + iTbClueTrackRecordService.add(tbClue); + return AjaxResult.success(); + } catch (Exception e) { + return AjaxResult.error(); + } + + } + + @PreAuthorize("@ss.hasPermi('clues:record:add')") + @Log(title = "xin线索跟进记录", businessType = BusinessType.INSERT) + @GetMapping + public AjaxResult addsdsad(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { + try { + TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); + BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); tbClueTrack.setCreateTime(new Date()); tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); -- Gitee From dee347c16c5c11756cb568884ec5b56c2b1321ba Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 17:58:27 +0800 Subject: [PATCH 09/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=90=88=E5=B9=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../huike/web/controller/clues/TbClueTrackRecordController.java | 1 + 1 file changed, 1 insertion(+) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 93a6a8b..43bd952 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -56,6 +56,7 @@ public class TbClueTrackRecordController extends BaseController { tbClueTrack.setCreateTime(new Date()); tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); + //asjn mnkm,l, BeanUtils.copyProperties(tbClueTrack, tbClue); tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); iTbClueTrackRecordService.update(tbClue.getId()); -- Gitee From 5fc98748812e09589432e161f41f0aced54b00e6 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 17:59:01 +0800 Subject: [PATCH 10/18] V1.12 --- .../clues/TbClueTrackRecordController.java | 34 +------------------ 1 file changed, 1 insertion(+), 33 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index db149c7..38feff4 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -54,6 +54,7 @@ public class TbClueTrackRecordController extends BaseController { TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); tbClueTrack.setCreateTime(new Date()); + //ssss tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); BeanUtils.copyProperties(tbClueTrack, tbClue); @@ -67,37 +68,4 @@ public class TbClueTrackRecordController extends BaseController { } - @PreAuthorize("@ss.hasPermi('clues:record:add')") - @Log(title = "xin线索跟进记录", businessType = BusinessType.INSERT) - @GetMapping - public AjaxResult addsdsad(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { - try { - TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); - BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); - tbClueTrack.setCreateTime(new Date()); - tbClueTrack.setCreateBy(SecurityUtils.getUsername()); - TbClue tbClue = new TbClue(); - BeanUtils.copyProperties(tbClueTrack, tbClue); - tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); - iTbClueTrackRecordService.update(tbClue.getId()); - iTbClueTrackRecordService.add(tbClue); - return AjaxResult.success(); - } catch (Exception e) { - return AjaxResult.error(); - } - } - /** - * 新增进记录 - */ - @PreAuthorize("@ss.hasPermi('clues:record:add')") - @Log(title = "线索跟进记录", businessType = BusinessType.INSERT) - @DeleteMapping - public AjaxResult add嘎洒个多月(@RequestBody ClueTrackRecordVo tbClueTrackRecord) { - try { - return AjaxResult.success(); - } catch (Exception e) { - return AjaxResult.error(); - } - } - } -- Gitee From 5f2b01bf9cbf990d6f9910274c738f377a0859be Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 18:00:47 +0800 Subject: [PATCH 11/18] V1.13 --- .../huike/web/controller/clues/TbClueTrackRecordController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 91ba442..5c10096 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -55,9 +55,9 @@ public class TbClueTrackRecordController extends BaseController { BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); tbClueTrack.setCreateTime(new Date()); //ssss + //dsadsad tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); - //asjn mnkm,l, BeanUtils.copyProperties(tbClueTrack, tbClue); tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); iTbClueTrackRecordService.update(tbClue.getId()); -- Gitee From 18bde337d138de3e9af1a4d470984c2068e9186e Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 18:25:03 +0800 Subject: [PATCH 12/18] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=90=88=E5=B9=B61?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../huike/web/controller/clues/TbClueTrackRecordController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 5c10096..639095f 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -56,8 +56,10 @@ public class TbClueTrackRecordController extends BaseController { tbClueTrack.setCreateTime(new Date()); //ssss //dsadsad +// sjai h tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); + System.out.println("jisdhnujbnuj"); BeanUtils.copyProperties(tbClueTrack, tbClue); tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); iTbClueTrackRecordService.update(tbClue.getId()); -- Gitee From d5fe5b8110dab8e695d7b0209fc091e17bcd0106 Mon Sep 17 00:00:00 2001 From: Alex Date: Sun, 29 May 2022 18:25:25 +0800 Subject: [PATCH 13/18] V1.14 --- .../business/TbBusinessTrackRecordController.java | 7 ++++--- .../web/controller/clues/TbClueTrackRecordController.java | 6 ++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java index 6e2aec1..f532194 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessTrackRecordController.java @@ -7,6 +7,7 @@ import com.huike.clues.service.ISysDictDataService; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; +import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; @@ -31,9 +32,9 @@ public class TbBusinessTrackRecordController extends BaseController { */ @PreAuthorize("@ss.hasPermi('business:record:list')") @GetMapping("/list") - public AjaxResult list(@RequestParam("businessId")Long id){ - TbBusinessTrackRecord result = tbBusinessTrackRecordService.select(id); - return AjaxResult.success(result); + public TableDataInfo list(@RequestParam("businessId")Long id){ + startPage(); + return getDataTable(tbBusinessTrackRecordService.select(id)); } /** diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java index 5c10096..c0baf1c 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueTrackRecordController.java @@ -54,10 +54,12 @@ public class TbClueTrackRecordController extends BaseController { TbClueTrackRecord tbClueTrack = new TbClueTrackRecord(); BeanUtils.copyProperties(tbClueTrackRecord, tbClueTrack); tbClueTrack.setCreateTime(new Date()); - //ssss - //dsadsad + //ds + //stafafacacvdv + System.out.println("=================================="); tbClueTrack.setCreateBy(SecurityUtils.getUsername()); TbClue tbClue = new TbClue(); + System.out.println("=================++++++++++++++++================="); BeanUtils.copyProperties(tbClueTrack, tbClue); tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); iTbClueTrackRecordService.update(tbClue.getId()); -- Gitee From ef710b9eaab48371cb38ae8fdce753ae93daf329 Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 21:45:25 +0800 Subject: [PATCH 14/18] =?UTF-8?q?=E7=BC=96=E5=86=99=E8=B8=A2=E5=9B=9E?= =?UTF-8?q?=E5=85=AC=E6=B5=B7=E3=80=81=E4=BC=AA=E7=BA=BF=E7=B4=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/TbBusinessController.java | 2 +- .../controller/clues/TbClueController.java | 37 ++++++++++++------- .../mapper/TbBusinessTrackRecordMapper.java | 2 +- .../business/service/ITbBusinessService.java | 2 +- .../service/impl/TbBusinessServiceImpl.java | 18 ++++++++- .../business/TbBusinessTrackRecordMapper.xml | 5 +++ .../clues/mapper/TbClueTrackRecordMapper.java | 4 +- .../service/ITbClueTrackRecordService.java | 1 + .../impl/TbClueTrackRecordServiceImpl.java | 35 ++++++++++++++++++ .../mapper/clues/TbClueTrackRecordMapper.xml | 3 ++ .../service/impl/ReportServiceImpl.java | 5 ++- 11 files changed, 92 insertions(+), 22 deletions(-) diff --git a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java index 07c0449..8f5d0d4 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/business/TbBusinessController.java @@ -136,7 +136,7 @@ public class TbBusinessController extends BaseController { @PreAuthorize("@ss.hasPermi('business:business:back')") @Log(title = "退回公海", businessType = BusinessType.UPDATE) @PutMapping("/back/{id}/{reason}") - public AjaxResult back(@PathVariable Long id,@PathVariable Integer reason) { + public AjaxResult back(@PathVariable Long id,@PathVariable String reason) { tbBusinessService.back(id,reason); return AjaxResult.success(); } diff --git a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueController.java b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueController.java index 8022845..65a596b 100644 --- a/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueController.java +++ b/huike-admin/src/main/java/com/huike/web/controller/clues/TbClueController.java @@ -1,32 +1,26 @@ package com.huike.web.controller.clues; -import java.util.List; - -import com.huike.common.annotation.DataScope; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - import com.alibaba.excel.EasyExcel; +import com.alibaba.fastjson.JSONObject; import com.huike.business.service.ITbBusinessService; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.vo.AssignmentVo; import com.huike.clues.domain.vo.TbClueExcelVo; import com.huike.clues.service.ITbActivityService; import com.huike.clues.service.ITbClueService; +import com.huike.clues.service.ITbClueTrackRecordService; import com.huike.clues.utils.easyExcel.ExcelListener; import com.huike.common.annotation.Log; import com.huike.common.core.controller.BaseController; import com.huike.common.core.domain.AjaxResult; import com.huike.common.core.page.TableDataInfo; import com.huike.common.enums.BusinessType; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; /** * 线索管理Controller @@ -41,6 +35,8 @@ public class TbClueController extends BaseController { @Autowired private ITbBusinessService tbBusinessService; + @Autowired + private ITbClueTrackRecordService clueTrackRecordService; @Autowired private ITbActivityService activityService; @@ -148,5 +144,18 @@ public class TbClueController extends BaseController { EasyExcel.read(file.getInputStream(), TbClueExcelVo.class, excelListener).sheet().doRead(); return AjaxResult.success(excelListener.getResult()); } + /** + * 伪线索 + * @param id + * @return + */ + @Log(title = "伪线索", businessType = BusinessType.UPDATE) + @PutMapping("/false/{id}") + public AjaxResult disable(@PathVariable Long id, @RequestBody JSONObject jsonObject) { + String reason = jsonObject.getString("reason"); + String remark = jsonObject.getString("remark"); + clueTrackRecordService.disable(id,reason,remark); + return AjaxResult.success(); + } } \ No newline at end of file diff --git a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java index 500f87a..4886b5b 100644 --- a/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java +++ b/huike-business/src/main/java/com/huike/business/mapper/TbBusinessTrackRecordMapper.java @@ -1,6 +1,5 @@ package com.huike.business.mapper; -import java.util.List; import com.huike.business.domain.TbBusinessTrackRecord; /** @@ -9,4 +8,5 @@ import com.huike.business.domain.TbBusinessTrackRecord; */ public interface TbBusinessTrackRecordMapper { + void saveBack(TbBusinessTrackRecord businessTrackRecord); } \ No newline at end of file diff --git a/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java b/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java index f837d16..91a8bff 100644 --- a/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java +++ b/huike-business/src/main/java/com/huike/business/service/ITbBusinessService.java @@ -73,5 +73,5 @@ public interface ITbBusinessService public int updateStatus(Long id, String status); - void back(Long id, Integer reason); + void back(Long id, String reason); } diff --git a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java index 53ead30..156dbee 100644 --- a/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java +++ b/huike-business/src/main/java/com/huike/business/service/impl/TbBusinessServiceImpl.java @@ -1,6 +1,7 @@ package com.huike.business.service.impl; import com.huike.business.domain.TbBusiness; +import com.huike.business.domain.TbBusinessTrackRecord; import com.huike.business.mapper.TbBusinessMapper; import com.huike.business.mapper.TbBusinessTrackRecordMapper; import com.huike.business.service.ITbBusinessService; @@ -8,6 +9,7 @@ import com.huike.business.strategy.Rule; import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.TbRulePool; +import com.huike.clues.mapper.SysDictDataMapper; import com.huike.clues.mapper.SysUserMapper; import com.huike.clues.mapper.TbAssignRecordMapper; import com.huike.clues.mapper.TbClueMapper; @@ -62,6 +64,8 @@ public class TbBusinessServiceImpl implements ITbBusinessService { @Autowired TbAssignRecordMapper assignRecordMapper; + @Autowired + SysDictDataMapper sysDictDataMapper; /** * 查询商机 @@ -293,10 +297,20 @@ public class TbBusinessServiceImpl implements ITbBusinessService { * @param reason 回退原因 */ @Override - public void back(Long id, Integer reason) { + public void back(Long id, String reason) { TbBusiness tbBusiness = new TbBusiness(); tbBusiness.setId(id); - + tbBusiness.setStatus(TbClue.StatusType.FALSE.getValue()); tbBusinessMapper.updateTbBusiness(tbBusiness); + + TbBusinessTrackRecord businessTrackRecord = new TbBusinessTrackRecord(); + businessTrackRecord.setBusinessId(id); + businessTrackRecord.setCreateTime(new Date()); + businessTrackRecord.setCreateBy(SecurityUtils.getUsername()); + + String dictLabel = sysDictDataMapper.selectDictLabel("reasons_for_business_reporting",reason ); + businessTrackRecord.setRecord(dictLabel); + tbBusinessTrackRecordMapper.saveBack(businessTrackRecord); + } } diff --git a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml index 353e85f..981cdae 100644 --- a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml +++ b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml @@ -14,6 +14,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into tb_business_track_record + (business_id, create_by, record, create_time) + values (#{businessId},#{createBy},#{record},#{createTime}); + \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java index 93570a7..32f7201 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java @@ -1,6 +1,8 @@ package com.huike.clues.mapper; +import org.apache.ibatis.annotations.Param; + /** * 线索跟进记录Mapper接口 * @date 2021-04-19 @@ -8,5 +10,5 @@ package com.huike.clues.mapper; public interface TbClueTrackRecordMapper { - + void deleteByClueId(@Param("clueId") Long id); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java index f1a4af1..d5cd527 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java +++ b/huike-clues/src/main/java/com/huike/clues/service/ITbClueTrackRecordService.java @@ -10,4 +10,5 @@ package com.huike.clues.service; public interface ITbClueTrackRecordService { + void disable(Long clueId, String reason, String remark); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java index bbfae9d..8ac7dca 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java @@ -1,14 +1,49 @@ package com.huike.clues.service.impl; +import com.huike.clues.domain.TbClue; +import com.huike.clues.domain.TbClueTrackRecord; +import com.huike.clues.mapper.TbClueMapper; +import com.huike.clues.mapper.TbClueTrackRecordMapper; import com.huike.clues.service.ITbClueTrackRecordService; +import com.huike.common.utils.SecurityUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.Date; + /** * 线索跟进记录Service业务层处理 * @date 2022-04-22 */ @Service public class TbClueTrackRecordServiceImpl implements ITbClueTrackRecordService { + @Autowired + private TbClueMapper clueMapper; + @Autowired + private TbClueTrackRecordMapper clueTrackRecordMapper; + @Override + public void disable(Long id, String reason, String remark) { + TbClue tbClue = clueMapper.selectTbClueById(id); + int falseCount = tbClue.getFalseCount(); + if (falseCount >= 2) {//删除线索 + clueMapper.deleteTbClueById(id); + clueTrackRecordMapper.deleteByClueId(id); + } else {//伪线索数+1 + falseCount+=1; + tbClue=new TbClue(); + tbClue.setFalseCount(falseCount); + tbClue.setId(id); + clueMapper.updateTbClue(tbClue); + //添加跟进记录 + TbClueTrackRecord tbClueTrackRecord = new TbClueTrackRecord(); + tbClueTrackRecord.setClueId(id); + tbClueTrackRecord.setCreateBy(SecurityUtils.getUsername()); + tbClueTrackRecord.setCreateTime(new Date()); + tbClueTrackRecord.setFalseReason(reason); + tbClueTrackRecord.setRecord(remark); + //TODO 保存跟进记录 + } + } } diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml index b79005d..ae42aae 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml @@ -16,5 +16,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + delete from tb_clue_track_record where clue_id=#{clueId}; + \ No newline at end of file diff --git a/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java b/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java index 0c6af49..2fb74a7 100644 --- a/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java +++ b/huike-report/src/main/java/com/huike/report/service/impl/ReportServiceImpl.java @@ -485,10 +485,11 @@ public class ReportServiceImpl implements IReportService { @Override public List businessChangeStatistics(String beginCreateTime, String endCreateTime) { - + //获取总商机数量 Integer businessNums = reportMpper.getBusinessNumsB(beginCreateTime, endCreateTime); - + //获取龙虎榜前十名 和数量 List longHuBangVOS = reportMpper.businessChangeStatistics(beginCreateTime, endCreateTime); + //计算转化率 longHuBangVOS .forEach(l->{ l.setRadio(getRadio(businessNums, l.getNum())); -- Gitee From a4d8e75c6eacc75f7c73bbc89d84563ba396fe44 Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Sun, 29 May 2022 22:30:38 +0800 Subject: [PATCH 15/18] =?UTF-8?q?=E4=BC=AA=E7=BA=BF=E7=B4=A2=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clues/mapper/TbClueTrackRecordMapper.java | 3 +++ .../impl/TbClueTrackRecordServiceImpl.java | 2 +- .../mapper/clues/TbClueTrackRecordMapper.xml | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java index 32f7201..df822c0 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueTrackRecordMapper.java @@ -1,6 +1,7 @@ package com.huike.clues.mapper; +import com.huike.clues.domain.TbClueTrackRecord; import org.apache.ibatis.annotations.Param; /** @@ -11,4 +12,6 @@ public interface TbClueTrackRecordMapper { void deleteByClueId(@Param("clueId") Long id); + + void save(TbClueTrackRecord tbClueTrackRecord); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java index 8ac7dca..b1ef1e4 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueTrackRecordServiceImpl.java @@ -42,8 +42,8 @@ public class TbClueTrackRecordServiceImpl implements ITbClueTrackRecordService { tbClueTrackRecord.setCreateTime(new Date()); tbClueTrackRecord.setFalseReason(reason); tbClueTrackRecord.setRecord(remark); - //TODO 保存跟进记录 + clueTrackRecordMapper.save(tbClueTrackRecord); } } } diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml index ae42aae..d3027fd 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueTrackRecordMapper.xml @@ -16,6 +16,31 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + insert into tb_clue_track_record + + clue_id, + create_by, + subject, + record, + `level`, + create_time, + `type`, + false_reason, + next_time, + + + #{clueId}, + #{createBy}, + #{subject}, + #{record}, + #{level}, + #{createTime}, + #{type}, + #{falseReason}, + #{nextTime}, + + delete from tb_clue_track_record where clue_id=#{clueId}; -- Gitee From c80ea96754066a3ae68d824af585e42f85a452f9 Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Mon, 30 May 2022 18:24:06 +0800 Subject: [PATCH 16/18] =?UTF-8?q?=E5=90=88=E5=90=8C=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E3=80=81=E7=BA=BF=E7=B4=A2=E6=89=B9=E9=87=8F=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clues/domain/dto/ImportResultDTO.java | 7 +- .../huike/clues/domain/vo/TbClueExcelVo.java | 10 +- .../clues/service/impl/TbClueServiceImpl.java | 901 ++++++++++-------- .../clues/strategy/impl/RuleStrategy.java | 21 +- .../clues/utils/easyExcel/ExcelListener.java | 7 - .../service/impl/SysFileServiceImpl.java | 46 +- 6 files changed, 546 insertions(+), 446 deletions(-) diff --git a/huike-clues/src/main/java/com/huike/clues/domain/dto/ImportResultDTO.java b/huike-clues/src/main/java/com/huike/clues/domain/dto/ImportResultDTO.java index 069ab79..a2f59ee 100644 --- a/huike-clues/src/main/java/com/huike/clues/domain/dto/ImportResultDTO.java +++ b/huike-clues/src/main/java/com/huike/clues/domain/dto/ImportResultDTO.java @@ -3,14 +3,12 @@ package com.huike.clues.domain.dto; import lombok.AllArgsConstructor; import lombok.Data; -import lombok.NoArgsConstructor; /** * 线索导入结果集对象 */ @Data @AllArgsConstructor -@NoArgsConstructor public class ImportResultDTO { //成功数量 @@ -27,6 +25,11 @@ public class ImportResultDTO { return new ImportResultDTO(0,1); } + public ImportResultDTO() { + failureNum=0; + successNum=0; + } + /** * 提供静态方法,发生成功的时候记录数据 * @return diff --git a/huike-clues/src/main/java/com/huike/clues/domain/vo/TbClueExcelVo.java b/huike-clues/src/main/java/com/huike/clues/domain/vo/TbClueExcelVo.java index 3d058dc..a8b7bd4 100644 --- a/huike-clues/src/main/java/com/huike/clues/domain/vo/TbClueExcelVo.java +++ b/huike-clues/src/main/java/com/huike/clues/domain/vo/TbClueExcelVo.java @@ -118,7 +118,15 @@ public class TbClueExcelVo{ this.qq = qq; } - @Override + public String getSex() { + return sex; + } + + public void setSex(String sex) { + this.sex = sex; + } + + @Override public String toString() { return "TbClueExcelVo [phone=" + phone + ", channel=" + channel + ", activityCode=" + activityCode + ", name=" + name + ", subject=" + subject + ", level=" + level + ", sex=" + sex + ", age=" + age + ", weixin=" diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java index 2493872..e925945 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java @@ -1,32 +1,16 @@ package com.huike.clues.service.impl; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import com.huike.clues.domain.dto.ImportResultDTO; -import com.huike.clues.strategy.Rule; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - import com.huike.clues.domain.TbActivity; import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; -import com.huike.clues.domain.TbClueTrackRecord; import com.huike.clues.domain.TbRulePool; +import com.huike.clues.domain.dto.ImportResultDTO; import com.huike.clues.domain.vo.TbClueExcelVo; -import com.huike.clues.mapper.SysDictDataMapper; -import com.huike.clues.mapper.SysUserMapper; -import com.huike.clues.mapper.TbActivityMapper; -import com.huike.clues.mapper.TbAssignRecordMapper; -import com.huike.clues.mapper.TbClueMapper; +import com.huike.clues.mapper.*; import com.huike.clues.service.ITbActivityService; import com.huike.clues.service.ITbClueService; import com.huike.clues.service.ITbRulePoolService; +import com.huike.clues.strategy.Rule; import com.huike.clues.utils.HuiKeCrmDateUtils; import com.huike.clues.utils.JobUtils; import com.huike.common.annotation.DataScope; @@ -37,411 +21,492 @@ import com.huike.common.utils.DateUtils; import com.huike.common.utils.SecurityUtils; import com.huike.common.utils.StringUtils; import com.huike.common.utils.bean.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; /** * 线索管理Service业务层处理 - * + * * @date 2021-04-02 */ @Service public class TbClueServiceImpl implements ITbClueService { - @Autowired - private Rule rule; - - @Autowired - private TbClueMapper tbClueMapper; - - @Autowired - private TbAssignRecordMapper assignRecordMapper; - - @Autowired - private SysUserMapper userMapper; - - @Autowired - ITbRulePoolService rulePoolService; - - @Autowired - SysDictDataMapper sysDictDataMapper; - - @Autowired - private TbActivityMapper tbActivityMapper; - - @Autowired - private ITbActivityService activityService; - - @Autowired - private ITbClueService tbClueService; - - /** - * 查询线索管理 - * - * @param id 线索管理ID - * @return 线索管理 - */ - @Override - public TbClue selectTbClueById(Long id) { - TbClue tbClue = tbClueMapper.selectTbClueById(id); - if (tbClue != null && tbClue.getActivityId() != null) { - TbActivity activity = tbActivityMapper.selectTbActivityById(tbClue.getActivityId()); - if (activity != null) { - tbClue.setActivityInfo(activity.getCode() + ":" + activity.getName() + ":" + activity.getInfo()); - } - } - // 查询专派遣信息 - TbAssignRecord assignRecord = assignRecordMapper.selectAssignRecordByAssignId(tbClue.getId(), "0"); - //证明是待分配数据 - if(assignRecord==null){ - return tbClue; - } - tbClue.setOwner(assignRecord.getUserName()); - tbClue.setOwnerTime(assignRecord.getCreateTime()); - return tbClue; - } - - /** - * 查询线索管理列表 - * - * @param tbClue 线索管理 - * @return 线索管理 - */ - @Override - @DataScope(deptAlias = "r", userAlias = "r") - public List selectTbClueList(TbClue tbClue) { - return tbClueMapper.selectTbClueList(tbClue); - } - - @Override - public List selectTbCluePool(TbClue tbClue) { - List clueList = tbClueMapper.selectTbCluePoll(tbClue); - clueList.forEach(d -> { - if (d.getActivityId() != null) { - TbActivity activity = tbActivityMapper.selectTbActivityById(d.getActivityId()); - if (activity != null) { - d.setActivityName(activity.getName()); - } - } - }); - return clueList; - } - - /** - * 新增线索管理 - * - * @param tbClue 线索管理 - * @return 结果 - */ - @Override - @Transactional - public int insertTbClue(TbClue tbClue) { - tbClue.setCreateBy(SecurityUtils.getUsername()); - Date now = DateUtils.getNowDate(); - tbClue.setCreateTime(now); - tbClueMapper.insertTbClue(tbClue); - TbAssignRecord tbAssignRecord = new TbAssignRecord(); - tbAssignRecord.setAssignId(tbClue.getId()); - tbAssignRecord.setUserId(SecurityUtils.getUserId()); - tbAssignRecord.setUserName(SecurityUtils.getUsername()); - tbAssignRecord.setDeptId(SecurityUtils.getDeptId()); - tbAssignRecord.setCreateBy(SecurityUtils.getUsername()); - tbAssignRecord.setCreateTime(now); - int rows = assignRecordMapper.insertAssignRecord(tbAssignRecord); - // 线索池规则支持 - Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); - tbClueMapper.updateClueEndTimeById(tbClue.getId(), endDate); - return rows; - } - - /** - * 修改线索管理 - * - * @param tbClue 线索管理 - * @return 结果 - */ - @Override - public int updateTbClue(TbClue tbClue) { - return tbClueMapper.updateTbClue(tbClue); - } - - /** - * 批量删除线索管理 - * - * @param ids 需要删除的线索管理ID - * @return 结果 - */ - @Override - public int deleteTbClueByIds(Long[] ids) { - return tbClueMapper.deleteTbClueByIds(ids); - } - - /** - * 删除线索管理信息 - * - * @param id 线索管理ID - * @return 结果 - */ - @Override - public int deleteTbClueById(Long id) { - return tbClueMapper.deleteTbClueById(id); - } - - @Override - @Transactional - public Map importClues(List clueList) { - if (StringUtils.isNull(clueList) || clueList.size() == 0) { - throw new CustomException("导入用户数据不能为空!"); - } - Map map = new HashMap<>(); - List toAssignlist = new ArrayList<>(); - int successNum = 0; - int failureNum = 0; - for (TbClue clue : clueList) { - try { - if (StringUtils.isBlank(clue.getPhone())) { - failureNum++; - continue; - } - if (StringUtils.isBlank(clue.getChannel())) { - failureNum++; - continue; - } - - // 验证是否存在这个用户 - TbClue dbcule = tbClueMapper.selectTbClueByPhone(clue.getPhone()); - if (dbcule == null) { - // 特殊字段处理 - String channel = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.CHANNEL.getDictType(), - clue.getChannel()); - clue.setChannel(channel); - - if (StringUtils.isNoneBlank(clue.getSubject())) { - String subject = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SUBJECT.getDictType(), - clue.getSubject()); - clue.setSubject(subject); - } - - if (StringUtils.isNoneBlank(clue.getLevel())) { - String level = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.LEVEL.getDictType(), - clue.getLevel()); - clue.setLevel(level); - } - - if (StringUtils.isNoneBlank(clue.getSex())) { - String sex = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SEX.getDictType(), - clue.getSex()); - clue.setSex(sex); - } - - if (StringUtils.isNoneBlank(clue.getActivityName())) { - String sex = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SEX.getDictType(), - clue.getSex()); - clue.setSex(sex); - } - clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); - tbClueMapper.insertTbClue(clue); - // 默认分配超级管理员 - //如果线索添加成功,利用策略将线索分配给具体的人 - rule.loadRule(clue); - successNum++; - toAssignlist.add(clue); - } else { - failureNum++; - } - } catch (Exception e) { - e.printStackTrace(); - failureNum++; - } - } - - map.put("successNum", successNum); - map.put("failureNum", failureNum); - return map; - } - - @Override - public String assign(Long[] clueIds, Long userId) { - TbRulePool rulePool = rulePoolService.selectTbRulePoolByType(Constants.rule_type_clue); - // TbAssignRecord tbAssignRecord =new TbAssignRecord(); - // 统计当前分配人所有线索 - int assignRecords = assignRecordMapper.countAssignCluesByUser(userId); - if (assignRecords >= rulePool.getMaxNunmber()) { - throw new CustomException("分配失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以分配" - + (rulePool.getMaxNunmber() - assignRecords) + "条线索"); - } - for (int i = 0; i < clueIds.length; i++) { - Long clueId = clueIds[i]; - - // 超过最大保有量 - if (assignRecords + i >= rulePool.getMaxNunmber()) { - // return "超过当前用户最大保有量,部分分配成功"; - throw new CustomException("分配失败!保有量达到上线,最多选择" + rulePool.getMaxNunmber() + "条线索"); - } - - // 从新分配 - updateStatus(clueId, TbClue.StatusType.UNFOLLOWED.getValue()); - TbAssignRecord tbAssignRecord = addNewRecord(clueId, userId); - Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); - tbClueMapper.updateClueEndTimeById(clueId, endDate); - } - return "全部分配"; - } - - @Override - public String gain(Long[] clueIds, Long userId) { - // 是否批量捞取 - boolean isBatch = clueIds.length > 1 ? true : false; - TbRulePool rulePool = rulePoolService.selectTbRulePoolByType(TbRulePool.RuleType.CLUES.getValue()); - // 统计当前分配人所有线索 - int asignRecords = assignRecordMapper.countAssignCluesByUser(userId); - if (asignRecords >= rulePool.getMaxNunmber()) { - throw new CustomException("捞取失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以捞取"+(rulePool.getMaxNunmber()-asignRecords)+"条线索"); - } - for (int i = 0; i < clueIds.length; i++) { - Long clueId = clueIds[i]; - - // 超过最大保有量 - if (asignRecords + i >= rulePool.getMaxNunmber()) { - throw new CustomException("捞取失败!保有量达到上线,最多选择" + rulePool.getMaxNunmber() + "条线索"); - } - // 最近捞取记录 - TbAssignRecord assignRecord = assignRecordMapper.selectAssignRecordByAssignId(clueId, - TbAssignRecord.RecordType.CLUES.getValue()); - if (assignRecord != null && assignRecord.getUserId().equals(userId)) { - Date repeatGetTime = JobUtils.getDate(rulePool.getRepeatGetTime().intValue(), rulePool.getRepeatType(), - assignRecord.getCreateTime()); - // 捞取限制时间内,不让捞取 - if (DateUtils.getNowDate().before(repeatGetTime)) { - // 批量捞取跳过 - if (isBatch) { - continue; - } else { - throw new CustomException("捞取失败!需要在 " + DateUtils.dateTimeHm(repeatGetTime) + " 后捞取"); - } - } - } - // 捞取后下次跟进时间,及状态重置 - tbClueMapper.resetNextTimeAndStatus(clueId, TbClue.StatusType.UNFOLLOWED.getValue()); - // 新建分配记录 - TbAssignRecord tbAssignRecord = addNewRecord(clueId, userId); - - Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); - tbClueMapper.updateClueEndTimeById(clueId, endDate); - } - return "全部捞取成功"; - } - - public TbAssignRecord addNewRecord(Long id, Long userId) { - // 保留上一条分配记录 - assignRecordMapper.updateLatest(id, TbAssignRecord.RecordType.CLUES.getValue()); - // 新建分配记录 - TbAssignRecord tbAssignRecord = new TbAssignRecord(); - tbAssignRecord.setAssignId(id); - SysUser sysUser = userMapper.selectUserById(userId); - tbAssignRecord.setUserId(userId); - tbAssignRecord.setDeptId(sysUser.getDeptId()); - tbAssignRecord.setUserName(sysUser.getUserName()); - Date now = DateUtils.getNowDate(); - tbAssignRecord.setCreateTime(now); - tbAssignRecord.setCreateBy(SecurityUtils.getUsername()); - tbAssignRecord.setType(TbAssignRecord.RecordType.CLUES.getValue()); - assignRecordMapper.insertAssignRecord(tbAssignRecord); - return tbAssignRecord; - } - - - @Override - @Transactional - public int updateStatus(Long clueId, String status) { - return tbClueMapper.resetNextTimeAndStatus(clueId, status); - } - - /** - * 批量导入 - */ - @Override - public Map addTbClue(List cluevoList) { - List clueList = cluevoList.stream().map(vo -> { - TbClue tbClue = new TbClue(); - BeanUtils.copyProperties(vo, tbClue); - tbClue.setCreateBy(SecurityUtils.getUsername()); - tbClue.setCreateTime(DateUtils.getNowDate()); - String activityCode = vo.getActivityCode(); - // 关联活动 - if (StringUtils.isNoneBlank(activityCode)) { - TbActivity activity = activityService.selectTbActivityByCode(activityCode); - if (activity != null) { - tbClue.setActivityId(activity.getId()); - } - } - return tbClue; - }).collect(Collectors.toList()); - return tbClueService.importClues(clueList); - } - - /** - * 校验线索手机号是否存在 - */ - @Override - public boolean checkCluePhoneExis(String phone) { - // 验证是否存在这个用户 - TbClue dbcule = tbClueMapper.selectTbClueByPhone(phone); - if (dbcule == null) { - return true; - } else { - return false; - } - } - - /** - * 线索数据添加入库 - * - * @param data - * @return - */ - @Override - public ImportResultDTO importCluesData(TbClueExcelVo data) { - //===============校验线索数据,封装属性,插入数据库,根据规则进行分配====================== - /** - * 1 判断活动编号对应的活动是否存在 - * 1.1 如果活动编号不存在 即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() - * 1.2 如果活动编号存在 设置活动id - */ - //TODO 补全上述逻辑代码 - /** - * 校验手机号和渠道是否为空 - * 如果为空证明是错误数据,不进行添加 返回error - * return ImportResultDTO.error(); - */ - //TODO 补全上述逻辑代码 - /** - * 字典值的替换 - * 因为excel里传入的是中文名,需要替换成对应的字典值 - * 需要处理 学科 性别 意向级别 - */ - //TODO 补全上述逻辑代码 - /** - * 设置数据状态为待跟进 - * clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); - */ - //TODO 补全上述逻辑代码 - /** - * 将线索数据入库 - * 参考添加线索接口调用的mapper - * 仅仅只插入到线索表中 - */ - //TODO 补全上述逻辑代码 - /** - * 根据规则动态分配线索给具体的销售人员 - * 利用策略模式来进行实现 - * rule.loadRule(clue); - */ - //TODO 补全上述逻辑代码 - - /** - *分配完成 返回成功 - * 这个方法免费提供 - */ - return ImportResultDTO.success(); - - } + @Autowired + private Rule rule; + + @Autowired + private TbClueMapper tbClueMapper; + + @Autowired + private TbAssignRecordMapper assignRecordMapper; + + @Autowired + private SysUserMapper userMapper; + + @Autowired + ITbRulePoolService rulePoolService; + + @Autowired + SysDictDataMapper sysDictDataMapper; + + @Autowired + private TbActivityMapper tbActivityMapper; + + @Autowired + private ITbActivityService activityService; + + @Autowired + private ITbClueService tbClueService; + + /** + * 查询线索管理 + * + * @param id 线索管理ID + * @return 线索管理 + */ + @Override + public TbClue selectTbClueById(Long id) { + TbClue tbClue = tbClueMapper.selectTbClueById(id); + if (tbClue != null && tbClue.getActivityId() != null) { + TbActivity activity = tbActivityMapper.selectTbActivityById(tbClue.getActivityId()); + if (activity != null) { + tbClue.setActivityInfo(activity.getCode() + ":" + activity.getName() + ":" + activity.getInfo()); + } + } + // 查询专派遣信息 + TbAssignRecord assignRecord = assignRecordMapper.selectAssignRecordByAssignId(tbClue.getId(), "0"); + //证明是待分配数据 + if (assignRecord == null) { + return tbClue; + } + tbClue.setOwner(assignRecord.getUserName()); + tbClue.setOwnerTime(assignRecord.getCreateTime()); + return tbClue; + } + + /** + * 查询线索管理列表 + * + * @param tbClue 线索管理 + * @return 线索管理 + */ + @Override + @DataScope(deptAlias = "r", userAlias = "r") + public List selectTbClueList(TbClue tbClue) { + return tbClueMapper.selectTbClueList(tbClue); + } + + @Override + public List selectTbCluePool(TbClue tbClue) { + List clueList = tbClueMapper.selectTbCluePoll(tbClue); + clueList.forEach(d -> { + if (d.getActivityId() != null) { + TbActivity activity = tbActivityMapper.selectTbActivityById(d.getActivityId()); + if (activity != null) { + d.setActivityName(activity.getName()); + } + } + }); + return clueList; + } + + /** + * 新增线索管理 + * + * @param tbClue 线索管理 + * @return 结果 + */ + @Override + @Transactional + public int insertTbClue(TbClue tbClue) { + tbClue.setCreateBy(SecurityUtils.getUsername()); + Date now = DateUtils.getNowDate(); + tbClue.setCreateTime(now); + tbClueMapper.insertTbClue(tbClue); + TbAssignRecord tbAssignRecord = new TbAssignRecord(); + tbAssignRecord.setAssignId(tbClue.getId()); + tbAssignRecord.setUserId(SecurityUtils.getUserId()); + tbAssignRecord.setUserName(SecurityUtils.getUsername()); + tbAssignRecord.setDeptId(SecurityUtils.getDeptId()); + tbAssignRecord.setCreateBy(SecurityUtils.getUsername()); + tbAssignRecord.setCreateTime(now); + int rows = assignRecordMapper.insertAssignRecord(tbAssignRecord); + // 线索池规则支持 + Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); + tbClueMapper.updateClueEndTimeById(tbClue.getId(), endDate); + return rows; + } + + /** + * 修改线索管理 + * + * @param tbClue 线索管理 + * @return 结果 + */ + @Override + public int updateTbClue(TbClue tbClue) { + return tbClueMapper.updateTbClue(tbClue); + } + + /** + * 批量删除线索管理 + * + * @param ids 需要删除的线索管理ID + * @return 结果 + */ + @Override + public int deleteTbClueByIds(Long[] ids) { + return tbClueMapper.deleteTbClueByIds(ids); + } + + /** + * 删除线索管理信息 + * + * @param id 线索管理ID + * @return 结果 + */ + @Override + public int deleteTbClueById(Long id) { + return tbClueMapper.deleteTbClueById(id); + } + + @Override + @Transactional + public Map importClues(List clueList) { + if (StringUtils.isNull(clueList) || clueList.size() == 0) { + throw new CustomException("导入用户数据不能为空!"); + } + Map map = new HashMap<>(); + List toAssignlist = new ArrayList<>(); + int successNum = 0; + int failureNum = 0; + for (TbClue clue : clueList) { + try { + if (StringUtils.isBlank(clue.getPhone())) { + failureNum++; + continue; + } + if (StringUtils.isBlank(clue.getChannel())) { + failureNum++; + continue; + } + + // 验证是否存在这个用户 + TbClue dbcule = tbClueMapper.selectTbClueByPhone(clue.getPhone()); + if (dbcule == null) { + // 特殊字段处理 + String channel = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.CHANNEL.getDictType(), clue.getChannel()); + clue.setChannel(channel); + + if (StringUtils.isNoneBlank(clue.getSubject())) { + String subject = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SUBJECT.getDictType(), clue.getSubject()); + clue.setSubject(subject); + } + + if (StringUtils.isNoneBlank(clue.getLevel())) { + String level = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.LEVEL.getDictType(), clue.getLevel()); + clue.setLevel(level); + } + + if (StringUtils.isNoneBlank(clue.getSex())) { + String sex = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SEX.getDictType(), clue.getSex()); + clue.setSex(sex); + } + + if (StringUtils.isNoneBlank(clue.getActivityName())) { + String sex = sysDictDataMapper.selectDictValue(TbClue.ImportDictType.SEX.getDictType(), clue.getSex()); + clue.setSex(sex); + } + clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + tbClueMapper.insertTbClue(clue); + // 默认分配超级管理员 + //如果线索添加成功,利用策略将线索分配给具体的人 + rule.loadRule(clue); + successNum++; + toAssignlist.add(clue); + } else { + failureNum++; + } + } catch (Exception e) { + e.printStackTrace(); + failureNum++; + } + } + + map.put("successNum", successNum); + map.put("failureNum", failureNum); + return map; + } + + @Override + public String assign(Long[] clueIds, Long userId) { + TbRulePool rulePool = rulePoolService.selectTbRulePoolByType(Constants.rule_type_clue); + // TbAssignRecord tbAssignRecord =new TbAssignRecord(); + // 统计当前分配人所有线索 + int assignRecords = assignRecordMapper.countAssignCluesByUser(userId); + if (assignRecords >= rulePool.getMaxNunmber()) { + throw new CustomException("分配失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以分配" + (rulePool.getMaxNunmber() - assignRecords) + "条线索"); + } + for (int i = 0; i < clueIds.length; i++) { + Long clueId = clueIds[i]; + + // 超过最大保有量 + if (assignRecords + i >= rulePool.getMaxNunmber()) { + // return "超过当前用户最大保有量,部分分配成功"; + throw new CustomException("分配失败!保有量达到上线,最多选择" + rulePool.getMaxNunmber() + "条线索"); + } + + // 从新分配 + updateStatus(clueId, TbClue.StatusType.UNFOLLOWED.getValue()); + TbAssignRecord tbAssignRecord = addNewRecord(clueId, userId); + Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); + tbClueMapper.updateClueEndTimeById(clueId, endDate); + } + return "全部分配"; + } + + @Override + public String gain(Long[] clueIds, Long userId) { + // 是否批量捞取 + boolean isBatch = clueIds.length > 1 ? true : false; + TbRulePool rulePool = rulePoolService.selectTbRulePoolByType(TbRulePool.RuleType.CLUES.getValue()); + // 统计当前分配人所有线索 + int asignRecords = assignRecordMapper.countAssignCluesByUser(userId); + if (asignRecords >= rulePool.getMaxNunmber()) { + throw new CustomException("捞取失败!最大保有量(" + rulePool.getMaxNunmber() + "),剩余可以捞取" + (rulePool.getMaxNunmber() - asignRecords) + "条线索"); + } + for (int i = 0; i < clueIds.length; i++) { + Long clueId = clueIds[i]; + + // 超过最大保有量 + if (asignRecords + i >= rulePool.getMaxNunmber()) { + throw new CustomException("捞取失败!保有量达到上线,最多选择" + rulePool.getMaxNunmber() + "条线索"); + } + // 最近捞取记录 + TbAssignRecord assignRecord = assignRecordMapper.selectAssignRecordByAssignId(clueId, TbAssignRecord.RecordType.CLUES.getValue()); + if (assignRecord != null && assignRecord.getUserId().equals(userId)) { + Date repeatGetTime = JobUtils.getDate(rulePool.getRepeatGetTime().intValue(), rulePool.getRepeatType(), assignRecord.getCreateTime()); + // 捞取限制时间内,不让捞取 + if (DateUtils.getNowDate().before(repeatGetTime)) { + // 批量捞取跳过 + if (isBatch) { + continue; + } else { + throw new CustomException("捞取失败!需要在 " + DateUtils.dateTimeHm(repeatGetTime) + " 后捞取"); + } + } + } + // 捞取后下次跟进时间,及状态重置 + tbClueMapper.resetNextTimeAndStatus(clueId, TbClue.StatusType.UNFOLLOWED.getValue()); + // 新建分配记录 + TbAssignRecord tbAssignRecord = addNewRecord(clueId, userId); + + Date endDate = HuiKeCrmDateUtils.getEndDateByRule(tbAssignRecord); + tbClueMapper.updateClueEndTimeById(clueId, endDate); + } + return "全部捞取成功"; + } + + public TbAssignRecord addNewRecord(Long id, Long userId) { + // 保留上一条分配记录 + assignRecordMapper.updateLatest(id, TbAssignRecord.RecordType.CLUES.getValue()); + // 新建分配记录 + TbAssignRecord tbAssignRecord = new TbAssignRecord(); + tbAssignRecord.setAssignId(id); + SysUser sysUser = userMapper.selectUserById(userId); + tbAssignRecord.setUserId(userId); + tbAssignRecord.setDeptId(sysUser.getDeptId()); + tbAssignRecord.setUserName(sysUser.getUserName()); + Date now = DateUtils.getNowDate(); + tbAssignRecord.setCreateTime(now); + tbAssignRecord.setCreateBy(SecurityUtils.getUsername()); + tbAssignRecord.setType(TbAssignRecord.RecordType.CLUES.getValue()); + assignRecordMapper.insertAssignRecord(tbAssignRecord); + return tbAssignRecord; + } + + + @Override + @Transactional + public int updateStatus(Long clueId, String status) { + return tbClueMapper.resetNextTimeAndStatus(clueId, status); + } + + /** + * 批量导入 + */ + @Override + public Map addTbClue(List cluevoList) { + List clueList = cluevoList.stream().map(vo -> { + TbClue tbClue = new TbClue(); + BeanUtils.copyProperties(vo, tbClue); + tbClue.setCreateBy(SecurityUtils.getUsername()); + tbClue.setCreateTime(DateUtils.getNowDate()); + String activityCode = vo.getActivityCode(); + // 关联活动 + if (StringUtils.isNoneBlank(activityCode)) { + TbActivity activity = activityService.selectTbActivityByCode(activityCode); + if (activity != null) { + tbClue.setActivityId(activity.getId()); + } + } + return tbClue; + }).collect(Collectors.toList()); + return tbClueService.importClues(clueList); + } + + /** + * 校验线索手机号是否存在 + */ + @Override + public boolean checkCluePhoneExis(String phone) { + // 验证是否存在这个用户 + TbClue dbcule = tbClueMapper.selectTbClueByPhone(phone); + if (dbcule == null) { + return true; + } else { + return false; + } + } + + /** + * 线索数据添加入库 + * + * @param data + * @return + */ + @Override + public ImportResultDTO importCluesData(TbClueExcelVo data) { + return importCluesData0(data); +// return importCluesData1(data); + + } + + private ImportResultDTO importCluesData0(TbClueExcelVo data) { + //===============校验线索数据,封装属性,插入数据库,根据规则进行分配====================== + /** + * 1 判断活动编号对应的活动是否存在 + * 1.1 如果活动编号不存在 即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() + * 1.2 如果活动编号存在 设置活动id + */ + TbClue tbClue = new TbClue(); + org.springframework.beans.BeanUtils.copyProperties(data, tbClue); + TbActivity activity = tbActivityMapper.selectTbActivityByCode(data.getActivityCode()); + if (Objects.isNull(activity)) { + return ImportResultDTO.error(); + } + tbClue.setActivityId(activity.getId()); + /** + * 校验手机号和渠道是否为空 + * 如果为空证明是错误数据,不进行添加 返回error + * return ImportResultDTO.error(); + */ + String channel = data.getChannel(); + if (Objects.isNull(data.getPhone()) || Objects.isNull(channel)) { + return ImportResultDTO.error(); + } + + String channel_value = sysDictDataMapper + .selectDictValue(TbClue.ImportDictType.CHANNEL.getDictType(), channel); + tbClue.setChannel(channel_value); + /** + * 字典值的替换 + * 因为excel里传入的是中文名,需要替换成对应的字典值 + * 需要处理 学科 性别 意向级别 + */ + String subject = sysDictDataMapper + .selectDictValue(TbClue.ImportDictType.SUBJECT.getDictType(), data.getSubject()); + String sex = sysDictDataMapper + .selectDictValue(TbClue.ImportDictType.SEX.getDictType(), data.getSex()); + String level = sysDictDataMapper + .selectDictValue(TbClue.ImportDictType.LEVEL.getDictType(), data.getLevel()); + tbClue.setSubject(subject); + tbClue.setSex(sex); + tbClue.setLevel(level); + /** + * 根据规则动态分配线索给具体的销售人员 + * 利用策略模式来进行实现 + * rule.loadRule(clue); + */ + Boolean result = rule.loadRule(tbClue); + /** + * 设置数据状态为待跟进 + * clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + */ + if (result) { + tbClue.setStatus(TbClue.StatusType.FOLLOWING.getValue()); + } else { + tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + } + /** + * 将线索数据入库 + * 参考添加线索接口调用的mapper + * 仅仅只插入到线索表中 + */ + tbClueMapper.insertTbClue(tbClue); + + + /** + *分配完成 返回成功 + * 这个方法免费提供 + */ + return ImportResultDTO.success(); + } + + private ImportResultDTO importCluesData1(TbClueExcelVo data) { + //===============校验线索数据,封装属性,插入数据库,根据规则进行分配====================== + /** + * 1 判断活动编号对应的活动是否存在 + * 1.1 如果活动编号不存在 即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() + * 1.2 如果活动编号存在 设置活动id + */ + /** + * 校验手机号和渠道是否为空 + * 如果为空证明是错误数据,不进行添加 返回error + * return ImportResultDTO.error(); + */ + TbClue tbClue = new TbClue(); + org.springframework.beans.BeanUtils.copyProperties(data, tbClue); + + TbActivity activity = tbActivityMapper.selectTbActivityByCode(data.getActivityCode()); + if (Objects.isNull(activity) || Objects.isNull(data.getPhone()) || Objects.isNull(data.getChannel())) { + return ImportResultDTO.error(); + } + + + /** + * 字典值的替换 + * 因为excel里传入的是中文名,需要替换成对应的字典值 + * 需要处理 学科 性别 意向级别 + */ + + /** + * 设置数据状态为待跟进 + * clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + */ + //TODO 补全上述逻辑代码 + /** + * 将线索数据入库 + * 参考添加线索接口调用的mapper + * 仅仅只插入到线索表中 + */ + //TODO 补全上述逻辑代码 + /** + * 根据规则动态分配线索给具体的销售人员 + * 利用策略模式来进行实现 + * rule.loadRule(clue); + */ + //TODO 补全上述逻辑代码 + + /** + *分配完成 返回成功 + * 这个方法免费提供 + */ + return ImportResultDTO.success(); + } } diff --git a/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java b/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java index 15e0eff..13dde61 100644 --- a/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java +++ b/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java @@ -1,5 +1,6 @@ package com.huike.clues.strategy.impl; +import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; import com.huike.clues.mapper.SysDictDataMapper; import com.huike.clues.mapper.SysUserMapper; @@ -78,7 +79,25 @@ public class RuleStrategy implements Rule { * * 3.不满足规则的不进行分配,由管理员或主管来进行分配 * 将该线索数据添加到线索表中,但不往分配记录表里添加数据 */ - return null; + SysUser user=null; + if (clue.getSubject().equals(subjectJAVA.getDictValue())) { + user=zhangsan; + + } else if (clue.getSubject().equals(subjectHtml.getDictValue())) { + user=zhangsan1; + }else { + return false; + } + TbAssignRecord tbAssignRecord = new TbAssignRecord(); + + tbAssignRecord.setAssignId(clue.getId()); + tbAssignRecord.setUserId(user.getUserId()); + tbAssignRecord.setUserName(user.getUserName()); + tbAssignRecord.setDeptId(user.getDeptId()); + tbAssignRecord.setCreateBy(user.getUserName()); + tbAssignRecord.setCreateTime(clue.getCreateTime()); + assignRecordMapper.insertAssignRecord(tbAssignRecord); + return true; } } \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java index fbdce19..36b450b 100644 --- a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java +++ b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java @@ -1,12 +1,5 @@ package com.huike.clues.utils.easyExcel; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; - import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; import com.huike.clues.domain.dto.ImportResultDTO; diff --git a/huike-system/src/main/java/com/huike/clues/service/impl/SysFileServiceImpl.java b/huike-system/src/main/java/com/huike/clues/service/impl/SysFileServiceImpl.java index 130c507..d9edf2d 100644 --- a/huike-system/src/main/java/com/huike/clues/service/impl/SysFileServiceImpl.java +++ b/huike-system/src/main/java/com/huike/clues/service/impl/SysFileServiceImpl.java @@ -1,24 +1,23 @@ package com.huike.clues.service.impl; -import java.io.IOException; -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.UUID; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -import io.minio.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.web.multipart.MultipartFile; - import com.huike.clues.service.ISysFileService; import com.huike.common.config.MinioConfig; import com.huike.common.core.domain.AjaxResult; - +import com.huike.common.utils.DateUtils; +import com.huike.common.utils.file.FileUploadUtils; +import io.minio.BucketExistsArgs; +import io.minio.MakeBucketArgs; +import io.minio.MinioClient; +import io.minio.PutObjectArgs; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.IOException; +import java.io.InputStream; +import java.util.Date; +import java.util.UUID; @Service @Slf4j @@ -41,7 +40,11 @@ public class SysFileServiceImpl implements ISysFileService{ try { inputStream = file.getInputStream(); //基于官网的内容,判断文件存储的桶是否存在 如果桶不存在就创建桶 - //TODO 补全这部分代码 + + if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) { + minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build()); + } + /** * ================================操作文件================================ * 思路:我们上传的文件是:合同.pdf @@ -57,11 +60,20 @@ public class SysFileServiceImpl implements ISysFileService{ * 如果上述思路你无法理解,那么就直接存放在桶内生成uuid+.pdf即可 * 即:huike-crm/uuid.pdf */ - //TODO 基于上述逻辑补全代码 + + String extension = FileUploadUtils.getExtension(file); + String filename = bucketName+DateUtils.parseDateToStr("/yyyy/MM/dd/", new Date()) + + UUID.randomUUID() +"."+extension; + minioClient.putObject(PutObjectArgs.builder() + .stream(inputStream, file.getSize(), file.getSize()) + .object(filename) + .bucket(bucketName).build()); /** * 构建返回结果集 */ AjaxResult ajax = AjaxResult.success(); + ajax.put("filename",filename); + ajax.put("url",minioConfig.getEndpoint()+":"+minioConfig.getPort()+filename); /** * 封装需要的数据进行返回 */ -- Gitee From fe66905f9503ae47b6501d37f328d75597072dca Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Tue, 31 May 2022 11:00:54 +0800 Subject: [PATCH 17/18] =?UTF-8?q?excel=E7=BA=BF=E7=B4=A2=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E6=8F=92=E5=85=A5=E6=95=B0=E6=8D=AE=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../clues/mapper/TbAssignRecordMapper.java | 6 +- .../com/huike/clues/mapper/TbClueMapper.java | 9 +- .../huike/clues/service/ITbClueService.java | 16 +- .../clues/service/impl/TbClueServiceImpl.java | 156 ++++----- .../java/com/huike/clues/strategy/Rule.java | 13 +- .../clues/strategy/impl/RuleStrategy.java | 36 +- .../clues/utils/easyExcel/ExcelListener.java | 129 ++++--- .../mapper/clues/TbAssignRecordMapper.xml | 123 ++++--- .../resources/mapper/clues/TbClueMapper.xml | 314 +++++++++++------- 9 files changed, 505 insertions(+), 297 deletions(-) diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbAssignRecordMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbAssignRecordMapper.java index 352642b..f02b8e3 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbAssignRecordMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbAssignRecordMapper.java @@ -1,9 +1,10 @@ package com.huike.clues.mapper; -import java.util.List; import com.huike.clues.domain.TbAssignRecord; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 线索分配记录Mapper接口 * @date 2021-04-19 @@ -87,5 +88,6 @@ public interface TbAssignRecordMapper * @return */ public int countAssignBusinessByUser(@Param("userId") Long userId); - + + Integer batchSave(@Param("rs")List assignRecords); } diff --git a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueMapper.java b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueMapper.java index 0061710..75409ee 100644 --- a/huike-clues/src/main/java/com/huike/clues/mapper/TbClueMapper.java +++ b/huike-clues/src/main/java/com/huike/clues/mapper/TbClueMapper.java @@ -1,13 +1,13 @@ package com.huike.clues.mapper; -import java.util.Date; -import java.util.List; -import java.util.Map; - import com.huike.clues.domain.TbClue; import com.huike.clues.domain.vo.IndexStatisticsVo; import org.apache.ibatis.annotations.Param; +import java.util.Date; +import java.util.List; +import java.util.Map; + /** * 线索管理Mapper接口 @@ -113,4 +113,5 @@ public interface TbClueMapper { */ public int getCluesNum(@Param("indexVo")IndexStatisticsVo request,@Param("now")String now,@Param("username")String username); + Integer insertTbClues(@Param("cs") List tbClues); } \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/service/ITbClueService.java b/huike-clues/src/main/java/com/huike/clues/service/ITbClueService.java index c19ab1f..9ee3791 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/ITbClueService.java +++ b/huike-clues/src/main/java/com/huike/clues/service/ITbClueService.java @@ -1,12 +1,12 @@ package com.huike.clues.service; -import java.util.List; -import java.util.Map; - +import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; import com.huike.clues.domain.dto.ImportResultDTO; import com.huike.clues.domain.vo.TbClueExcelVo; -import com.huike.common.core.domain.entity.SysUser; + +import java.util.List; +import java.util.Map; /** * 线索管理Service接口 @@ -111,4 +111,12 @@ public interface ITbClueService { * @return */ ImportResultDTO importCluesData(TbClueExcelVo data); + + TbClue getClue(TbClueExcelVo data); + + TbAssignRecord loadRule0(TbClue tbClue); + + Integer batchSaveRecord(List assignRecords); + + ImportResultDTO batchSaveClue(List tbClues); } diff --git a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java index e925945..0f34a55 100644 --- a/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java +++ b/huike-clues/src/main/java/com/huike/clues/service/impl/TbClueServiceImpl.java @@ -21,6 +21,8 @@ import com.huike.common.utils.DateUtils; import com.huike.common.utils.SecurityUtils; import com.huike.common.utils.StringUtils; import com.huike.common.utils.bean.BeanUtils; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -383,36 +385,59 @@ public class TbClueServiceImpl implements ITbClueService { @Override public ImportResultDTO importCluesData(TbClueExcelVo data) { return importCluesData0(data); -// return importCluesData1(data); - } - - private ImportResultDTO importCluesData0(TbClueExcelVo data) { - //===============校验线索数据,封装属性,插入数据库,根据规则进行分配====================== - /** - * 1 判断活动编号对应的活动是否存在 - * 1.1 如果活动编号不存在 即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() - * 1.2 如果活动编号存在 设置活动id - */ - TbClue tbClue = new TbClue(); - org.springframework.beans.BeanUtils.copyProperties(data, tbClue); + /** + * 返回非空则对象满足插入条件 + * @date 2022/5/30 20:04 + * @param data + * @return com.huike.clues.domain.vo.TbClueExcelVo + */ + @Override + public TbClue getClue(TbClueExcelVo data) { + //校验数据 + Long activityId = check(data); + if (activityId == null) return null; + //填充数据 + TbClue tbClue = fillTbClue(data, activityId); + return tbClue; + } + /** + *返回null则校验失败 + * @date 2022/5/31 10:50 + * @param data + * @return java.lang.Long 活动Id + */ + @Nullable + private Long check(TbClueExcelVo data) { TbActivity activity = tbActivityMapper.selectTbActivityByCode(data.getActivityCode()); - if (Objects.isNull(activity)) { - return ImportResultDTO.error(); + String channel = data.getChannel(); +// 1.1 如果活动编号不存在 或校验手机号或渠道是否为空即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() + if (Objects.isNull(activity)||Objects.isNull(data.getPhone()) || Objects.isNull(channel)) { + return null; } - tbClue.setActivityId(activity.getId()); + return activity.getId(); + } + /** + * 构建一个待插入库的线索对象 + * @date 2022/5/31 10:51 + * @param data + * @param activityId + * @return com.huike.clues.domain.TbClue 线索对象 + */ + @NotNull + private TbClue fillTbClue(TbClueExcelVo data, Long activityId) { + TbClue tbClue = new TbClue(); + org.springframework.beans.BeanUtils.copyProperties(data, tbClue); +// 1.2 如果活动编号存在 设置活动id + tbClue.setActivityId(activityId); /** - * 校验手机号和渠道是否为空 + * * 如果为空证明是错误数据,不进行添加 返回error * return ImportResultDTO.error(); */ - String channel = data.getChannel(); - if (Objects.isNull(data.getPhone()) || Objects.isNull(channel)) { - return ImportResultDTO.error(); - } String channel_value = sysDictDataMapper - .selectDictValue(TbClue.ImportDictType.CHANNEL.getDictType(), channel); + .selectDictValue(TbClue.ImportDictType.CHANNEL.getDictType(), data.getChannel()); tbClue.setChannel(channel_value); /** * 字典值的替换 @@ -429,80 +454,57 @@ public class TbClueServiceImpl implements ITbClueService { tbClue.setSex(sex); tbClue.setLevel(level); /** - * 根据规则动态分配线索给具体的销售人员 - * 利用策略模式来进行实现 - * rule.loadRule(clue); - */ - Boolean result = rule.loadRule(tbClue); - /** - * 设置数据状态为待跟进 - * clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); - */ - if (result) { - tbClue.setStatus(TbClue.StatusType.FOLLOWING.getValue()); - } else { - tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); - } - /** - * 将线索数据入库 - * 参考添加线索接口调用的mapper - * 仅仅只插入到线索表中 + * 根据规则动态分配线索给具体的销售人员 + * 利用策略模式来进行实现 + * rule.loadRule(clue); */ - tbClueMapper.insertTbClue(tbClue); + tbClue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); + tbClue.setCreateTime(new Date()); + tbClue.setCreateBy(SecurityUtils.getUsername()); + return tbClue; + } + @Override + public TbAssignRecord loadRule0(TbClue tbClue) { + return rule.loadRule0(tbClue); + } - /** - *分配完成 返回成功 - * 这个方法免费提供 - */ - return ImportResultDTO.success(); + @Override + public Integer batchSaveRecord(List assignRecords) { + return assignRecordMapper.batchSave(assignRecords); } - private ImportResultDTO importCluesData1(TbClueExcelVo data) { - //===============校验线索数据,封装属性,插入数据库,根据规则进行分配====================== - /** - * 1 判断活动编号对应的活动是否存在 - * 1.1 如果活动编号不存在 即错误数据,不进行添加操作,返回错误 ImportResultDTO.error() - * 1.2 如果活动编号存在 设置活动id - */ - /** - * 校验手机号和渠道是否为空 - * 如果为空证明是错误数据,不进行添加 返回error - * return ImportResultDTO.error(); - */ - TbClue tbClue = new TbClue(); - org.springframework.beans.BeanUtils.copyProperties(data, tbClue); + @Override + public ImportResultDTO batchSaveClue(List tbClues) { + Integer integer = tbClueMapper.insertTbClues(tbClues); + return new ImportResultDTO(integer,tbClues.size()-integer); + } - TbActivity activity = tbActivityMapper.selectTbActivityByCode(data.getActivityCode()); - if (Objects.isNull(activity) || Objects.isNull(data.getPhone()) || Objects.isNull(data.getChannel())) { + private ImportResultDTO importCluesData0(TbClueExcelVo data) { + Long activityId = check(data); + if (Objects.isNull(activityId)) { return ImportResultDTO.error(); } - - + TbClue tbClue = fillTbClue(data, activityId); /** - * 字典值的替换 - * 因为excel里传入的是中文名,需要替换成对应的字典值 - * 需要处理 学科 性别 意向级别 - */ - + * 根据规则动态分配线索给具体的销售人员 + * 利用策略模式来进行实现 + * rule.loadRule(clue); + */ + Boolean result = rule.loadRule(tbClue); /** * 设置数据状态为待跟进 * clue.setStatus(TbClue.StatusType.UNFOLLOWED.getValue()); */ - //TODO 补全上述逻辑代码 + if (Objects.nonNull(result)&&result) { + tbClue.setStatus(TbClue.StatusType.FOLLOWING.getValue()); + } /** * 将线索数据入库 * 参考添加线索接口调用的mapper * 仅仅只插入到线索表中 */ - //TODO 补全上述逻辑代码 - /** - * 根据规则动态分配线索给具体的销售人员 - * 利用策略模式来进行实现 - * rule.loadRule(clue); - */ - //TODO 补全上述逻辑代码 - + tbClueMapper.insertTbClue(tbClue); /** *分配完成 返回成功 * 这个方法免费提供 diff --git a/huike-clues/src/main/java/com/huike/clues/strategy/Rule.java b/huike-clues/src/main/java/com/huike/clues/strategy/Rule.java index f99ebab..341bdaa 100644 --- a/huike-clues/src/main/java/com/huike/clues/strategy/Rule.java +++ b/huike-clues/src/main/java/com/huike/clues/strategy/Rule.java @@ -1,9 +1,7 @@ package com.huike.clues.strategy; +import com.huike.clues.domain.TbAssignRecord; import com.huike.clues.domain.TbClue; -import com.huike.clues.domain.TbRuleAssign; - -import java.util.List; /** @@ -18,4 +16,13 @@ public interface Rule { * 单条线索添加的规则 */ public Boolean loadRule(TbClue clue); + /** + * 构建分配记录对象,不插入数据库,null则未分配 + * @date 2022/5/31 10:57 + * @param clue + * @return com.huike.clues.domain.TbAssignRecord + */ + default TbAssignRecord loadRule0(TbClue clue) { + return null; + } } diff --git a/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java b/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java index 13dde61..ea5e25c 100644 --- a/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java +++ b/huike-clues/src/main/java/com/huike/clues/strategy/impl/RuleStrategy.java @@ -8,6 +8,7 @@ import com.huike.clues.mapper.TbAssignRecordMapper; import com.huike.clues.strategy.Rule; import com.huike.common.core.domain.entity.SysDictData; import com.huike.common.core.domain.entity.SysUser; +import com.huike.common.utils.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.stereotype.Service; @@ -88,16 +89,45 @@ public class RuleStrategy implements Rule { }else { return false; } + TbAssignRecord tbAssignRecord = fillRecord(clue, user); + + assignRecordMapper.insertAssignRecord(tbAssignRecord); + return true; + } + + private TbAssignRecord fillRecord(TbClue clue, SysUser user) { TbAssignRecord tbAssignRecord = new TbAssignRecord(); tbAssignRecord.setAssignId(clue.getId()); tbAssignRecord.setUserId(user.getUserId()); tbAssignRecord.setUserName(user.getUserName()); tbAssignRecord.setDeptId(user.getDeptId()); - tbAssignRecord.setCreateBy(user.getUserName()); + tbAssignRecord.setCreateBy(SecurityUtils.getUsername()); tbAssignRecord.setCreateTime(clue.getCreateTime()); - assignRecordMapper.insertAssignRecord(tbAssignRecord); - return true; + return tbAssignRecord; + } + + @Override + public TbAssignRecord loadRule0(TbClue clue) { + /** + * 规则: + * * 1.将想要学java的分配给zhangsan + * * 2.将想要学前端的分配给zhangsan1 + * * 3.不满足规则的不进行分配,由管理员或主管来进行分配 + * 将该线索数据添加到线索表中,但不往分配记录表里添加数据 + */ + SysUser user=null; + if (clue.getSubject().equals(subjectJAVA.getDictValue())) { + user=zhangsan; + + } else if (clue.getSubject().equals(subjectHtml.getDictValue())) { + user=zhangsan1; + }else { + return null; + } + clue.setStatus(TbClue.StatusType.FOLLOWING.getValue()); + return fillRecord(clue, user); } + } \ No newline at end of file diff --git a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java index 36b450b..7665275 100644 --- a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java +++ b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java @@ -2,58 +2,99 @@ package com.huike.clues.utils.easyExcel; import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.event.AnalysisEventListener; +import com.huike.clues.domain.TbAssignRecord; +import com.huike.clues.domain.TbClue; import com.huike.clues.domain.dto.ImportResultDTO; import com.huike.clues.domain.vo.TbClueExcelVo; import com.huike.clues.service.ITbClueService; +import java.util.*; +import java.util.stream.Collectors; + /** * EasyExcel监听器,用于解析数据并执行操作 */ public class ExcelListener extends AnalysisEventListener { - /** - * 利用构造方法获取对应的service - */ - public ITbClueService clueService; - - private ImportResultDTO resultDTO; - - /** - * 提供带参构造方法,在这里需要通过构造方法的方式获取对应的service层 - * 谁调用这个监听器谁提供需要的service - * @param clueService - */ - public ExcelListener(ITbClueService clueService) { - this.clueService = clueService; - this.resultDTO = new ImportResultDTO(); - } - - /** - * 每解析一行数据都要执行一次 - * 每条都执行一次插入操作 - * @param data - * @param context - */ - @Override - public void invoke(TbClueExcelVo data, AnalysisContext context) { - ImportResultDTO addTbClue = clueService.importCluesData(data); - resultDTO.addAll(addTbClue); - } - - /** - * 当所有数据都解析完成后会执行 - * @param context - */ - @Override - public void doAfterAllAnalysed(AnalysisContext context) { - } - - /** - * 返回结果集对象 - * @return - */ - public ImportResultDTO getResult(){ - return resultDTO; - } + /** + * 利用构造方法获取对应的service + */ + public ITbClueService clueService; + + private ImportResultDTO resultDTO; + + private static final int COUNT = 20; + + private Map map; + + /** + * 提供带参构造方法,在这里需要通过构造方法的方式获取对应的service层 + * 谁调用这个监听器谁提供需要的service + * + * @param clueService + */ + public ExcelListener(ITbClueService clueService) { + this.clueService = clueService; + this.resultDTO = new ImportResultDTO(); + this.map=new HashMap<>(COUNT); + } + + /** + * 每解析一行数据都要执行一次 + * 每条都执行一次插入操作 + * + * @param data + * @param context + */ + @Override + public void invoke(TbClueExcelVo data, AnalysisContext context) { + Objects.requireNonNull(data); + TbClue tbClue = clueService.getClue(data); + + if (Objects.isNull(tbClue)) { + return; + } + + TbAssignRecord assignRecord = clueService.loadRule0(tbClue); + map.put(tbClue,assignRecord); + if (map.size() == COUNT) { + save(); + } + } + /** + * 将缓存保存到数据库 + * @date 2022/5/31 10:54 + */ + private void save() { + //保存到数据库 + List tbClues = map.keySet().stream().collect(Collectors.toList()); + ImportResultDTO importResultDTO = clueService.batchSaveClue(tbClues); + List assignRecords = map.values().stream().filter(a -> a != null).collect(Collectors.toList()); + clueService.batchSaveRecord(assignRecords); + //记录添加成功失败条数 + resultDTO.addAll(importResultDTO); + //清空缓存 + map.clear(); + } + + /** + * 当所有数据都解析完成后会执行 + * + * @param context + */ + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + //结束后将缓存数据存到数据库 + save(); + } + + /** + * 返回结果集对象 + * + * @return + */ + public ImportResultDTO getResult() { + return resultDTO; + } } \ No newline at end of file diff --git a/huike-clues/src/main/resources/mapper/clues/TbAssignRecordMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbAssignRecordMapper.xml index db9ebcb..cb46366 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbAssignRecordMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbAssignRecordMapper.xml @@ -1,34 +1,43 @@ + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + - - - - - - - - - + + + + + + + + + - select id, assign_id, user_id, user_name, dept_id, create_time, create_by,latest, type from tb_assign_record + select id, + assign_id, + user_id, + user_name, + dept_id, + create_time, + create_by, + latest, + type + from tb_assign_record - + - insert into tb_assign_record @@ -62,7 +70,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" create_by, latest, type, - + #{assignId}, #{userId}, @@ -72,7 +80,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{createBy}, #{latest}, #{type}, - + + + + insert into tb_assign_record + (assign_id, + user_id, + user_name, + dept_id, + create_time, + create_by, + latest, + type) + values + + (#{r.assignId}, + #{r.userId}, + #{r.userName}, + #{r.deptId}, + #{r.createTime}, + #{r.createBy}, + #{r.latest}, + #{r.type}) + @@ -91,7 +121,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - delete from tb_assign_record where id = #{id} + delete + from tb_assign_record + where id = #{id} @@ -102,30 +134,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - - update tb_assign_record - set latest='0' - where assign_id = #{assignId} and type = #{type} - + + update tb_assign_record + set latest='0' + where assign_id = #{assignId} + and type = #{type} + - update tb_assign_record set status=#{status} - where assign_id = #{assignId} and type = #{type} + update tb_assign_record + set status=#{status} + where assign_id = #{assignId} + and type = #{type} \ No newline at end of file diff --git a/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml b/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml index cd564fa..3ca5669 100644 --- a/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml +++ b/huike-clues/src/main/resources/mapper/clues/TbClueMapper.xml @@ -5,51 +5,67 @@ - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - select id, name, phone, channel, activity_id, sex, age, weixin, qq, level, subject, status, create_time, - create_by,false_count, next_time,transfer from tb_clue + select id, + name, + phone, + channel, + activity_id, + sex, + age, + weixin, + qq, + level, + subject, + status, + create_time, + create_by, + false_count, + next_time, + transfer + from tb_clue - and clue.id like concat('%', #{id}, '%') - and clue.name like concat('%', #{name}, '%') - and clue.phone = like concat('%', #{phone}, '%') - and clue.channel = #{channel} - and clue.activity_id = #{activityId} - and clue.sex = #{sex} - and clue.age = #{age} - and clue.weixin = #{weixin} - and clue.qq = #{qq} - and clue.level = #{level} - and clue.subject = #{subject} + and clue.id like concat('%', #{id}, '%') + and clue.name like concat('%', #{name}, '%') + and clue.phone = like concat('%', #{phone}, '%') + and clue.channel = #{channel} + and clue.activity_id = #{activityId} + and clue.sex = #{sex} + and clue.age = #{age} + and clue.weixin = #{weixin} + and clue.qq = #{qq} + and clue.level = #{level} + and clue.subject = #{subject} and date_format(clue.create_time,'%y%m%d') >= date_format(#{params.beginCreateTime},'%y%m%d') and date_format(clue.create_time,'%y%m%d') <= date_format(#{params.endCreateTime},'%y%m%d') - and clue.next_time = #{nextTime} - and r.user_name like concat('%', #{owner}, '%') + and clue.next_time = #{nextTime} + and r.user_name like concat('%', #{owner}, '%') - and clue.status = #{status} - and clue.status in ('1','2') + and clue.status = #{status} + and clue.status in ('1','2') AND (r.latest = '1' OR r.id IS NULL) AND (r.type = '0' OR r.id IS NULL) @@ -123,60 +155,58 @@ - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - @@ -244,6 +274,42 @@ #{nextTime}, + + insert into tb_clue + (name, + phone, + channel, + activity_id, + sex, + age, + weixin, + qq, + level, + subject, + status, + create_time, + create_by, + false_count, + next_time) + values + + (#{c.name}, + #{c.phone}, + #{c.channel}, + #{c.activityId}, + #{c.sex}, + #{c.age}, + #{c.weixin}, + #{c.qq}, + #{c.level}, + #{c.subject}, + #{c.status}, + #{c.createTime}, + #{c.createBy}, + #{c.falseCount}, + #{c.nextTime}) + + update tb_clue @@ -271,15 +337,24 @@ - update tb_clue set next_time=null, status=#{status} where id = #{id} + update tb_clue + set next_time=null, + status=#{status} + where id = #{id} - update tb_clue set next_time=null, status=#{status}, transfer='1' where id = #{id} + update tb_clue + set next_time=null, + status=#{status}, + transfer='1' + where id = #{id} - delete from tb_clue where id = #{id} + delete + from tb_clue + where id = #{id} @@ -290,12 +365,11 @@ - - - SELECT sum(case when t.`status`='4' THEN 1 ELSE 0 END ) AS falseClues, - (SELECT COUNT(b.id) AS total FROM `tb_clue` a LEFT JOIN `tb_business` b ON a.phone = b.phone WHERE a.activity_id=#{activityId} ) AS toBusiness, + (SELECT COUNT(b.id) AS total FROM `tb_clue` a LEFT JOIN `tb_business` b ON a.phone = b.phone WHERE + a.activity_id=#{activityId} ) AS toBusiness, count(1) AS total from tb_clue t where channel=#{channel} and t.activity_id=#{activityId} @@ -308,7 +382,8 @@ - select clue.create_by, r.dept_id, count(clue.id) as num from tb_clue clue left join tb_assign_record r on r.assign_id = clue.id @@ -320,20 +395,19 @@ - update tb_clue set end_time=#{endTime},next_time = null where id = #{id} + update tb_clue + set end_time=#{endTime}, + next_time = null + where id = #{id} - SELECT IFNULL(COUNT(id), 0) AS cluesNum, IFNULL( -- Gitee From 94e47f9690a3f712218bc3c681a2334771a0173a Mon Sep 17 00:00:00 2001 From: light-ee <249068920@qq.com> Date: Tue, 31 May 2022 23:12:40 +0800 Subject: [PATCH 18/18] =?UTF-8?q?=E5=88=A0=E9=99=A4=E9=87=8D=E5=A4=8DTbBus?= =?UTF-8?q?inessTrackRecord=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ITbBusinessTrackRecordService.java | 2 - .../business/TbBusinessTrackRecordMapper.xml | 2 +- .../clues/domain/TbBusinessTrackRecord.java | 106 ------------------ .../clues/utils/easyExcel/ExcelListener.java | 6 +- 4 files changed, 4 insertions(+), 112 deletions(-) delete mode 100644 huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java diff --git a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java index 7121958..979fdd0 100644 --- a/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java +++ b/huike-business/src/main/java/com/huike/business/service/ITbBusinessTrackRecordService.java @@ -6,8 +6,6 @@ import com.huike.business.domain.vo.BusinessTrackVo; import java.util.List; /** -import com.huike.clues.domain.TbBusinessTrackRecord; - * 商机跟进记录Service接口 * @date 2021-04-28 */ diff --git a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml index c7f6e27..6ab3696 100644 --- a/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml +++ b/huike-business/src/main/resources/mapper/business/TbBusinessTrackRecordMapper.xml @@ -23,7 +23,7 @@ insert into tb_business_track_record values (null, #{businessId},#{createBy},#{keyItems},#{record},#{createTime},#{trackStatus},#{nextTime}); - select * from `tb_business_track_record` where id = #{id} diff --git a/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java b/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java deleted file mode 100644 index 77510bb..0000000 --- a/huike-clues/src/main/java/com/huike/clues/domain/TbBusinessTrackRecord.java +++ /dev/null @@ -1,106 +0,0 @@ -package com.huike.clues.domain; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.huike.common.annotation.Excel; -import org.apache.commons.lang3.builder.ToStringBuilder; -import org.apache.commons.lang3.builder.ToStringStyle; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -/** - * @author A - * @create 2022-5-29-PM 15:02 - */ -public class TbBusinessTrackRecord { - private static final long serialVersionUID = 1L; - - /** 任务id */ - private Long id; - - /** 线索id */ - @Excel(name = "线索id") - private Long businessId; - - /** 沟通重点 */ - @Excel(name = "沟通重点") - private String keyItems; - - private List keys =new ArrayList<>(); - - /** 沟通纪要 */ - @Excel(name = "沟通纪要") - private String record; - - /** 跟进状态 */ - @Excel(name = "跟进状态") - private String trackStatus; - - @JsonFormat(pattern = "yyyy-MM-dd HH:mm") - private Date nextTime; - - - public Date getNextTime() { - return nextTime; - } - - public void setNextTime(Date nextTime) { - this.nextTime = nextTime; - } - - public List getKeys() { - return keys; - } - - public void setKeys(List keys) { - this.keys = keys; - } - - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - - public Long getBusinessId() { - return businessId; - } - - public void setBusinessId(Long businessId) { - this.businessId = businessId; - } - - public void setKeyItems(String keyItems) - { - this.keyItems = keyItems; - } - - public String getKeyItems() - { - return keyItems; - } - public void setRecord(String record) - { - this.record = record; - } - - public String getRecord() - { - return record; - } - public void setTrackStatus(String trackStatus) - { - this.trackStatus = trackStatus; - } - - public String getTrackStatus() - { - return trackStatus; - } - -} diff --git a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java index 7665275..3e20bea 100644 --- a/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java +++ b/huike-clues/src/main/java/com/huike/clues/utils/easyExcel/ExcelListener.java @@ -58,14 +58,14 @@ public class ExcelListener extends AnalysisEventListener { TbAssignRecord assignRecord = clueService.loadRule0(tbClue); map.put(tbClue,assignRecord); if (map.size() == COUNT) { - save(); + batchSave(); } } /** * 将缓存保存到数据库 * @date 2022/5/31 10:54 */ - private void save() { + private void batchSave() { //保存到数据库 List tbClues = map.keySet().stream().collect(Collectors.toList()); ImportResultDTO importResultDTO = clueService.batchSaveClue(tbClues); @@ -85,7 +85,7 @@ public class ExcelListener extends AnalysisEventListener { @Override public void doAfterAllAnalysed(AnalysisContext context) { //结束后将缓存数据存到数据库 - save(); + batchSave(); } /** -- Gitee